'===========================================================================
' Subject: OLD DRAG RACE SIMULATION GAME      Date: 07-14-99 (13:01)       
'  Author: Adlor de Bard                      Code: QB, QBasic, PDS        
'  Origin: aeon@preferred.com               Packet: GAMES.ABC
'===========================================================================
1 CLS
3 PRINT TAB(27); "DRAG"
5 PRINT TAB(20); "CREATIVE COMPUTING"
7 PRINT TAB(19); "MORRIS TOWN NEW JERSEY"
10 DIM P(2), E(2), W(2), S(2), X(2), M(2), C(2), B(2), Y(21)
20 DIM Q(2)
30 PRINT : PRINT : PRINT
35 PRINT "WELCOME TO DRAG STRIP."
40 PRINT "WOULD YOU LIKE THE INSTRUCTIONS"
50 INPUT I$
60 IF I$ = "NO" THEN 110
70 PRINT "YOU MAY RACE AGAINST ONE OF YOUR FRIENDS OR YOU MAY RACE"
80 PRINT "AGAINST NY DRAGSTER. TOO WILL BE ASKED TO DESIGN YOUR"
90 PRINT "OWN MACHINE. SPECIFYING HORSEPOWER. READ END RATIO (X: I),"
180 PRINT "TIRE WIDTH IN INCHES AND TIRE DIAMETER IN FEET."
110 PRINT "DO YOU WANT TO RACE AGAINST ME ";
120 INPUT I$
130 IF I$ = "NO" THEN 200
140 PRINT "I WILL HAVE CAR #1."
150 P(1) = 600
160 E(1) = 5.9
170 W(1) = 22
100 D(1) = 3.9
190 GOTO 290
200 PRINT "DESIGN CAR #1:"
210 PRINT "HORSEPOWER"; ":"
220 INPUT P(1)
230 PRINT "REAR END RATIO"; ";"
240 INPUT E(1)
250 PRINT "TIRE WIDTH"; ";"
260 INPUT W(1)
270 PRINT "TIRE DIAMETER";
280 INPUT D(1)
290 PRINT "DESIGN CAR #2:"
300 PRINT "HORSEPOWER=";
310 INPUT P(2)
320 PRINT "REAR END RATIO";
330 INPUT E(2)
340 PRINT "TIRE WIDTH";
350 INPUT W(2)
360 PRINT "TIRE DIAMETER";
370 INPUT D(2)
380 PRINT
390 PRINT "GO!"
400 K1 = 500
410 K2 = l.6
420 K3 = 2
430 K4 = .0006
440 K5 = .00006
450 K6 = .2
460 K7 = 4
478 K8 = .00015
480 Q(1) = 0: Q(2) = 0
490 S(1) = 0: S(2) = 0
500 X(1) = 0: X(2) = 0
510 REM: M IS MASS
520 FOR J = 1 TO 2
530 M(J) = (K1 + K2 * P(J) + K3 * W(J) * D(J) + K7 * D(J) ^ 2) / 32.2
540 REM: C IS DRAG FROM WIND.
550 C(J) = K4 * M(J) ^ (2 / 3) + K8 * W(J) * D(J)
560 REM: B IS THE MAX ACCELERATION WITHOUT BURNING
570 B(J) = 15 + 28 * W(J) * D(J) / ((W(J) + 6) * (D(J) + 1))
580 REM: Y IS THE SCALE FACTOR FOR RPM V.S. POWER.
590 Y(J) = 3.7 - .0033 * P(J)
600 NEXT J
605 CLS
610 PRINT
620 PRINT
630 PRINT "ELAPSED "; TAB(15); "CAR #1"; TAB(39); "CAR #2"
640 PRINT "TIRE     SPEED     DISTANCE  SPEED     DISTANCE"
650 PRINT "(SEC)    (MPH)     (FT)            (MPH)                (FT)"
660 PRINT
670 FOR T = O TO 100
680 FOR T1 = 1 TO 100
690 FOR J = 1 TO 2
700 REM: R IS RPM
710 R = 60 * S(K) * E(J) / (3.1415926# * D(J))
720 REM: LO IS ENGINE TORQUE.
730 LO = (P(J) / 42.5) * (50 + .0078 * (R / Y(J)) - 4E-10 * (R / Y(J)) ^ 3)
740 REM: L1 IS TORQUE FROM FRICTION
750 L1 = P(J) * (K5 * R + K6)
760 REM: R2 IS REAR AXLE TORQUE
770 L2 = E(J) * (LO - L1)
780 REM: F IS FORCE ON ROAD FROM TIRES.
790 F = 2 * L2 / D(J)
800 REM: TEST FOR BURN
810 IF F > M(J) * B(J) THEN 880
820 REM: A= ACCELERATION
830 IF Q(J) <> 0 THEN 860
840 PRINT "Car #"; J; "STOPS BURNING RUBBER"
850 Q(J) = 1
860 A = (F - C(J) * S(J) ^ 2) / M(J)

870 GOTO 900
880 A = B(J) - C(J) * S(J) ^ 2 / M(J)
890 REM: S is Feet in FT/SEC
900 S(J) = S(J) + A * .01
910 REM: X IS DISTANCE IN FT.
920 X(J) = X(J) + S(J) * .01
930 NEXT J
940 REM: TEST FOR FINISH.
950 IF X < 5280 / 4 AND X(2) < 5280 / 4 THEN GOTO 1160
960 IF X(1) > X(2) THEN 1080
970 T3 = (X(2) - 5280 / 4) / S(2)
980 T = T + T1 / l00 - T3
990 X(2) = 5280 / 4
1000 X(1) = X(1) - S(1) * T3
1010 PRINT T; "      "; S(1) * 3600 / 5200; "    ;X(1)"
1015 PRINT S(2) * 3600 / 5280; "   "; X(1)
1020 PRINT TAB(40); "WINNER"
1030 PRINT
1040 PRINT "DO YOU WANT TO TRY AGAIN ";
1050 INPUT I$
1060 IF I$ = "YES" THEN 110
1070 END
1080 T3 = (X(1) - 5280 / 4) / S(1)
1090 T = T + T1 / 100 - T3
1100 X(1) = 5280 / 4
1110 X(2) = X(2) - S(2) * T3
1120 PRINT T; "   "; S(1) * 3600 / 5260; "    "; X(1);
1125 PRINT S(2) * 3600 / 5280; "     "; X(2)
1130 PRINT TAB(10); "WINNER"
1140 PRINT
1150 GOTO 1040
1160 NEXT T1
1170 PRINT T + 1; "   "; S(1) * 3600 / 5280; "   "; X(1);
1175 PRINT S(2) * 3600 / 5280; "   "; X(2)
1180 NEXT T
1200 END
