'===========================================================================
' Subject: EXTREME VELOCITY                   Date: 12-21-95 (00:00)       
'  Author: Dave Cote                          Code: QB, QBasic, PDS        
'  Origin: www.qbasic.com                   Packet: GAMES.ABC
'===========================================================================
10 REM EXTREME VELOCITY, DAVE COTE, DEC. 21, 1995
20 REM THIS IS A RACING GAME THAT HAS 4 CARS (AND ONE SECRET CAR) AND A TRACK
30 REM ON EVERY PLANET (INCLUDING PLANET-X).  EACH CAR HAS DIFFERENT STRONG AND
40 REM WEAK POINTS WITH EACH TRACK GETTING HARDER THAN THE LAST.  YOU ARE GIVEN
50 REM A FINISHING POSITION BUT IT IS BASED ON TIME, SKILL LEVEL, AND TRACK.
60 REM ALL VARIABLES ARE DECLARED NOW SINCE MOST SUBS INCLUDING ALL TRACKS DO
70 REM NOT HAVE ANY VARIABLES AT ALL AND MANY VARIABLES ARE USED FOR MORE THAN
80 REM ONE APPLICATION.  THE ARRAYS TO HOLD PICTURES ARE USED WITH THE GET AND
90 REM PUT GRAPHICS COMMANDS.  YOU WILL NOT ACTUALLY SEE A VALUE HELD UNDER
100 REM EACH AREA OF THEM BUT GET IS KIND OF LIKE TAKING A PICTURE OF GRAPHICS
110 REM AND PUT PLACES THE PICTURE WHEREVER YOU WANT IT.  THAT IS MUCH FASTER
120 REM THAN RE-DRAWING THE PICTURE EVERY TIME AND THAT IS HOW I GOT THE HIGHER
130 REM FRAME RATES THAN REGULAR ANIMATION
140 REM ARO$ = PICTURE OF ARROW ON TRACK
150 REM LAP(3) = 4 CHECKPOINTS ON TRACK
160 REM DR(300),DL(300),DU(300),DD(300) = AN ARRAY TO HOLD A PICTURE OF THE SELECTED CAR FACEING RIGHT, LEFT, UP, AND DOWN RESPECTIVELY
170 REM REDY(2000) = AN ARRAY TO HOLD A PICTURE OF THE BOX WITH TRACK NAME
180 REM SMOK(100) = AN ARRAY TO HOLD A PICTURE OF THE SMOKE TRAILS
190 REM EXPL(300) = AN ARRAY TO HOLD A PICTURE OF A FIREWALL EXPLOSION
200 REM SQU(1000) = AN ARRAY TO HOLD A PICTURE OF THE CAR SELECTION SCREEN BOX
210 REM Y(640) = DRIPPING LIQUID IN INSTRUCTIONS
220 REM C(640) = SPEED OF EACH DOT IN Y(640)
230 REM L = GENERAL LOOP COUNTER
240 REM COL = COLOR OF DRAWN ITEM
250 REM SND$ = DETERMINES IF SOUND IS 'OFF' OR 'ON'
260 REM SMOK$ = DETERMINES IF SMOKE TRAILS ARE 'OFF' OR 'ON'
270 REM SKIL = CURRENT SKILL LEVEL
280 REM LAPS = NUMBER OF LAPS ON EACH TRACK
290 REM DMG = CAR DAMAGE
300 REM CAR$ = NAME OF CAR
310 REM TRAK = CURRENT TRACK NUMBER
320 REM TRAK$ = CURRENT TRACK NAME
330 REM X,X2 = HORIZONTAL CO-ORDINATES OF GRAPHICS
340 REM Y,Y2 = VERTICAL CO-ORDINATES OF GRAPHICS
350 REM Z = MODIFIES Y IF NEEDED
360 REM W = MODIFIES Z IF NEEDED
370 REM KBD$ = CURRENT KEYBOARD INPUT FROM INKEY$
380 REM HIDE$ = SECERET CODE FOR HIDEN CAR
390 REM ACC = SELECTED CAR'S ACCELERATION
400 REM CRN = SELECTED CAR'S CORNERING
410 REM SPD = SELECTED CAR'S TOP SPEED
420 REM D$ = DIRECTION OF CAR
430 REM X$ = MEMORY OF HORIZONTAL SMOKE TRAIL LOCATION
440 REM Y$ = MEMORY OF VERTICAL SMOKE TRAIL LOCATION
450 REM A = HORIZONTAL MOMENTUM
460 REM B = VERTICAL MOMENTUM
470 REM D2$ = MEMORY OF CAR DIRECTION FOR SMOKE TRAIL
480 REM SP = SPEED SHOWN ON SPEEDOMETER
490 REM ET = SILENT TIMER
500 REM ET2 = TIMER SHOWN ON CLOCK
510 REM A1 = HORIZONTAL SPEED ALTERED FOR ENGINE SOUND
520 REM B1 = VERTICAL SPEED ALTERED FOR ENGINE SOUND
530 REM SIZ = EXPLOSION SIZE WHEN CAR IS DESTROYED
540 REM FIN = FINISHING POSITION BETWEEN 1 AND 10
550 REM C1 = HORIZONTAL JUMP HEIGHT
560 REM C2 = VERTICAL JUMP HEIGHT
570 REM D1 = HORIZONTAL FALLING SPEED
580 REM D2 = VERTICAL FALLING SPEED
590 ARO$ = "r30h10f10g10e10"
600 DIM DR(300), DL(300), DU(300), DD(300), LAP(3), REDY(1900), SMOK(100), EXPL(290), SQU(1000), Y(726), X(726): RANDOMIZE TIMER
610 KEY OFF
620 CLS : SCREEN 9
630 LOCATE 5, 30: PRINT "MACHINE SPEED SETTING"
640 PRINT
650 PRINT "ENTER (ROUGHLY) THE SPEED OF YOU'RE COMPUTER"
660 PRINT "1 WOULD BE A HIGH-END 486 OR PENTIUM AND 5 WOULD BE A 286 OR 386"
670 KBD$ = INKEY$
680 MSPD = VAL(KBD$)
690 IF MSPD < 6 AND MSPD > 0 THEN GOTO 710
700 GOTO 670
710 CLS
720 LOCATE 12, 31
730 COLOR 15
740 PRINT "MY-WAY ENTERTAINMENT"
750 FOR Y = 155 TO 165
760 FOR X = 238 TO 400
770 IF POINT(X, Y) = 15 THEN X(C) = X: Y(C) = Y: IF C < 726 THEN C = C + 1
780 NEXT: NEXT
790 FOR L = 1 TO 10000 * (6 - MSPD)
800 NEXT
810 FOR L = 0 TO 726
820 PSET (X(L), Y(L)), 0
830 Y(L) = Y(L) + Z
840 X(L) = X(L) + INT(RND * 80) - 40
850 Y(L) = Y(L) + INT(RND * 80) - 40
860 PSET (X(L), Y(L)), 15
870 C = C + 1
880 NEXT
890 IF INKEY$ <> "" THEN GOTO 930
900 IF Z > 60 THEN GOTO 930
910 IF C > 1000 THEN Z = Z + (5 * MSPD)
920 GOTO 810
930 CLS
940 KEY OFF: CLS : SCREEN 9
950 CIRCLE (4, 2), 3, 8
960 CIRCLE (4, 8), 3, 8
970 CIRCLE (7, 2), 3, 8
980 CIRCLE (7, 8), 3, 8
990 PAINT (4, 2), 8
1000 PAINT (4, 8), 8
1010 PAINT (7, 2), 8
1020 PAINT (7, 8), 8
1030 GET (0, 0)-(10, 10), SMOK
1040 COL = 0
1050 FOR L = 0 TO 12
1060 IF COL = 0 THEN COL = 14: GOTO 1090
1070 IF COL = 14 THEN COL = 4: GOTO 1090
1080 IF COL = 4 THEN COL = 0: GOTO 1090
1090 CIRCLE (25, 15), L, COL
1100 NEXT L
1110 GET (10, 0)-(40, 30), EXPL
1120 SND$ = "Off": SKIL = 2: SMOK$ = "Off": LAPS = 5
1130 DMG = 0: CAR$ = ""
1140 Z = -1: SOUND 12000, .1: TRAK = 0: LOCATE 1: SCREEN 0: SCREEN 9: PALETTE 2, 36
1150 IF SKIL < 1 THEN SKIL = 2
1160 FOR Y = 1 TO 50
1170 Z = Z * 1.17
1180 LINE (-1, 350 - Y + Z)-(640, 350 - Y + Z), 4
1190 NEXT
1200 COLOR 15
1210 PRINT "EXTREME VELOCITY": Z = .7: PRINT "(PRESS ANY KEY TO SKIP)"
1220 FOR X = 0 TO 130
1230 FOR Y = 0 TO 11
1240 IF X < 60 THEN COL = 2
1250 IF X > 60 THEN COL = 2
1260 IF INKEY$ <> "" THEN GOTO 1330
1270 IF POINT(X, Y) = 15 THEN CIRCLE (X * 5 + 2, Y * 5 * Z + 22), 1 + Z, COL: CIRCLE (X * 5 + 2, Y * 5 * Z + 22), 3 + Z, COL
1280 Z = Z * 1.0007
1290 NEXT: NEXT
1300 LOCATE 11,70
1310 COLOR 2
1320 PRINT "VERSION 1.1"
1330 LINE (250, 145)-(397, 285), 8, BF
1340 LINE (255, 150)-(392, 280), 0, BF
1350 LINE (0, 0)-(190, 25), 0, BF
1360 LOCATE 12, 37: COLOR 8: PRINT "Main Menu"
1370 LINE (280, 170)-(367, 170), 8
1380 LOCATE 14, 35: PRINT "1.Begin Game"
1390 LOCATE 16, 35: PRINT "2.Practice"
1400 LOCATE 18, 35: PRINT "3.Options"
1410 LOCATE 20, 35: PRINT "4.Instructions"
1420 LINE (200, 300)-(447, 330), 8, BF
1430 LINE (205, 305)-(442, 325), 0, BF
1440 LOCATE 23, 30: PRINT "Enter your choice:"
1450 KBD$ = INKEY$
1460 IF KBD$ = CHR$(27) THEN GOTO 10030
1470 IF KBD$ = "1" THEN GOTO 2200
1480 IF KBD$ = "2" THEN GOTO 2050
1490 IF KBD$ = "3" THEN GOTO 1520
1500 IF KBD$ = "4" THEN GOTO 9790
1510 GOTO 1450
1520 COLOR 3, 8
1530 CLS
1540 FOR Y = 0 TO 350 STEP 10
1550 LINE (0, Y)-(220, 350 - Y), 4
1560 LINE (420, Y)-(640, 350 - Y), 4
1570 NEXT
1580 FOR X = 0 TO 220 STEP 10
1590 LINE (X, 0)-(220 - X, 350), 1
1600 LINE (X + 420, 0)-(640 - X, 350), 1
1610 NEXT
1620 COLOR 4
1630 FOR L = 1 TO 18: LOCATE L, 29: PRINT "                        ": NEXT L
1640 LOCATE 20, 30: PRINT "(PRESS ESCAPE TO RETURN"
1650 LOCATE 21, 30: PRINT "   TO THE MAIN MENU)"
1660 LOCATE 5, 33: PRINT "1. SOUND: "; SND$: PRINT
1670 LOCATE , 33: PRINT "2. EXAUST: "; SMOK$: PRINT
1680 LOCATE , 33: PRINT "3. DIFICULTY:"; SKIL: PRINT
1690 LOCATE , 33: PRINT "4. LAPS:"; LAPS: PRINT
1700 LOCATE , 33: PRINT "ENTER YOUR CHOICE": CHO = 0
1710 KBD$ = INKEY$
1720 IF KBD$ = "1" THEN GOTO 1790
1730 IF KBD$ = "2" THEN GOTO 1990
1740 IF KBD$ = "3" THEN GOTO 1850
1750 IF KBD$ = "4" THEN GOTO 1920
1760 IF KBD$ = CHR$(27) THEN GOTO 1130
1770 IF CHO > 0 THEN GOTO 1790
1780 GOTO 1710
1790 PRINT : LOCATE , 29: PRINT "SOUND: 1 = On , 2 = Off:"
1800 KBD$ = INKEY$
1810 IF KBD$ = "1" THEN SND$ = "On"
1820 IF KBD$ = "2" THEN SND$ = "Off"
1830 IF KBD$ <> "" THEN GOTO 1630
1840 GOTO 1800
1850 PRINT : LOCATE , 35: PRINT "DIFFICULTY :"
1860 KBD$ = INKEY$
1870 IF KBD$ <> "" THEN SKIL = VAL(KBD$)
1880 IF SKIL > 5 THEN SKIL = 5
1890 IF SKIL < 1 THEN SKIL = 1
1900 IF KBD$ <> "" AND SKIL > 0 THEN GOTO 1630
1910 GOTO 1860
1920 PRINT : LOCATE , 32: PRINT "NUMBER OF LAPS :"
1930 KBD$ = INKEY$
1940 IF KBD$ <> "" THEN LAPS = VAL(KBD$)
1950 IF LAPS < 1 THEN LAPS = 1
1960 IF LAPS > 10 THEN LAPS = 10
1970 IF KBD$ <> "" AND LAPS > 0 THEN GOTO 1630
1980 GOTO 1930
1990 PRINT : LOCATE , 29: PRINT "EXAUST:1 = On , 2 = Off:"
2000 KBD$ = INKEY$
2010 IF KBD$ = "1" THEN SMOK$ = "On"
2020 IF KBD$ = "2" THEN SMOK$ = "Off"
2030 IF KBD$ <> "" THEN GOTO 1630
2040 GOTO 2000
2050 COLOR 3, 0: CLS
2060 FOR X = 0 TO 350 STEP 3
2070 LINE (X, 0)-(0, 350 - X), 2
2080 LINE (639 - X, 0)-(639, 350 - X), 4
2090 LINE (639 - X, 349)-(639, X), 2
2100 LINE (0, X)-(X, 349), 4
2110 NEXT
2120 LOCATE 10, 23: PRINT "Enter the track number you would like:"
2130 KBD$ = INKEY$
2140 TRAK = VAL(KBD$)
2150 IF TRAK > 0 THEN SKIL = 0: GOTO 2180
2160 IF KBD$ = CHR$(27) THEN GOTO 1130
2170 GOTO 2130
2180 IF TRAK > 9 OR TRAK < 1 THEN LOCATE , 30: PRINT "No such track!": GOTO 2120
2190 TRAK = TRAK - 1
2200 SCREEN 9: CLS
2210 LINE (0, 0)-(100, 70), 15, B
2220 LINE (1, 1)-(99, 69), 15, B
2230 GET (0, 0)-(100, 70), SQU
2240 CLS : X = 30
2250 '**** DIVING HAWK ****
2260 LINE (200, 34)-(280, 65), 1' RIGHT
2270 LINE (200, 96)-(280, 65), 1
2280 LINE (200, 96)-(200, 34), 1
2290 PAINT (225, 65), 1
2300 LINE (213, 45)-(265, 65), 9
2310 LINE (213, 85)-(265, 65), 9
2320 LINE (213, 44)-(266, 65), 9
2330 LINE (213, 86)-(266, 65), 9
2340 LINE (232, 55)-(263, 65), 0
2350 LINE (232, 75)-(263, 65), 0
2360 LINE (232, 55)-(232, 75), 0
2370 PAINT (240, 65), 0
2380 REM **** TOTAL ECLIPSE ****
2390 CIRCLE (406, 65), 33, 15, 4.725, 1.575, 1.3' RGT
2400 CIRCLE (380, 65), 33, 15, 4.725, 1.575, 1.3
2410 LINE (350, 32)-(407, 32), 15
2420 LINE (350, 98)-(407, 98), 15
2430 PAINT (420, 65), 15
2440 CIRCLE (398, 65), 32, 8, 4.725, 1.575, 1.3
2450 CIRCLE (391, 65), 32, 8, 4.725, 1.575, 1.3
2460 PAINT (420, 65), 8
2470 CIRCLE (390, 65), 32, 7, 4.725, 1.575, 1.3
2480 CIRCLE (383, 65), 32, 7, 4.725, 1.575, 1.3
2490 PAINT (412, 65), 7
2500 CIRCLE (423, 65), 7, 0
2510 PAINT (423, 65), 0
2520 REM **** ROLLING THUNDER ****
2530 LINE (510, 30)-(590, 65), 14' RIGHT
2540 LINE (510, 100)-(590, 65), 14
2550 LINE (510, 30)-(535, 65), 14
2560 LINE (510, 100)-(535, 65), 14
2570 PAINT (562, 65), 14
2580 CIRCLE (536, 65), 16, 6, 4.3, 2, 2
2590 CIRCLE (535, 65), 16, 6, 4.3, 2, 2
2600 CIRCLE (565, 65), 10, 0, , , .5
2610 PAINT (565, 65), 0
2620 ' **** SPEED DEMON ****
2630 CIRCLE (104, 65), 20, 4, 5.3, .85' RIGHT
2640 LINE (116, 53)-(75, 35), 4
2650 LINE (116, 77)-(75, 94), 4
2660 LINE (75, 35)-(40, 35), 4
2670 LINE (75, 94)-(40, 94), 4
2680 CIRCLE (42, 51), 21, 4, 5.1, 1.57
2690 CIRCLE (42, 78), 21, 4, 4.75, 1.17
2700 CIRCLE (100, 65), 15, 4, , , .4
2710 PAINT (60, 65), 4
2720 CIRCLE (104, 65), 20, 14, 5.3, .85
2730 CIRCLE (114, 65), 14, 14, 5.3, .85, 2.5
2740 PAINT (122, 65), 14
2750 PAINT (100, 65), 8, 4
2760 HIDE$ = ""
2770 PRINT TAB(30); "PLEASE SELECT A VEHICLE": LOCATE 20: PRINT TAB(30); "PRESS ENTER TO CONTINUE"
2780 COLOR 2: LOCATE 20: PRINT TAB(30); "PRESS ENTER TO CONTINUE"
2790 KBD$ = INKEY$
2800 IF KBD$ = CHR$(0) + "M" AND X < 400 THEN GOSUB 2940
2810 IF KBD$ <> "" THEN HIDE$ = HIDE$ + KBD$
2820 IF KBD$ = CHR$(0) + "K" AND X > 100 THEN GOSUB 3010
2830 IF KBD$ = CHR$(13) AND CAR$ <> "" THEN GOTO 3080
2840 IF HIDE$ = "SEEKRET" OR HIDE$ = "seekret" THEN CAR$ = "STORM": GOTO 3080
2850 IF KBD$ = CHR$(27) THEN GOTO 1130
2860 PUT (X, 30), SQU, XOR
2870 LOCATE 10
2880 IF X = 30 THEN COLOR 4: PRINT TAB(35); "SPEED DEMON    ": COLOR 15: PRINT : PRINT TAB(34); "TOP SPEED: 5": PRINT TAB(34); "ACCELERATION: 3": PRINT TAB(34); "CORNERING: 2": CAR$ = "SPEED DEMON"
2890 IF X = 185 THEN COLOR 1: PRINT TAB(35); "DIVING HAWK   ": COLOR 15: PRINT : PRINT TAB(34); "TOP SPEED: 3": PRINT TAB(34); "ACCELERATION: 5": PRINT TAB(34); "CORNERING: 2": CAR$ = "DIVING HAWK"
2900 IF X = 340 THEN COLOR 7: PRINT TAB(34); "TOTAL ECLIPSE ": COLOR 15: PRINT : PRINT TAB(34); "TOP SPEED: 3": PRINT TAB(34); "ACCELERATION: 4": PRINT TAB(34); "CORNERING: 3": CAR$ = "TOTAL ECLIPSE"
2910 IF X = 495 THEN COLOR 14: PRINT TAB(33); "ROLLING THUNDER": COLOR 15: PRINT : PRINT TAB(34); "TOP SPEED: 2": PRINT TAB(34); "ACCELERATION: 3": PRINT TAB(34); "CORNERING: 5": CAR$ = "ROLLING THUNDER"
2920 PUT (X, 30), SQU
2930 GOTO 2790
2940 REM **** SUB TO MOVE CAR SELECTION BOX RIGHT ****
2950 FOR L = 1 TO 10
2960 X = X + 15.5
2970 PUT (X, 30), SQU, XOR
2980 PUT (X, 30), SQU
2990 NEXT L
3000 RETURN
3010 REM **** SUB TO MOVE CAR SELECTION BOX LEFT ****
3020 FOR L = 10 TO 1 STEP -1
3030 X = X - 15.5
3040 PUT (X, 30), SQU, XOR
3050 PUT (X, 30), SQU
3060 NEXT L
3070 RETURN
3080 CLS : SCREEN 9
3090 IF LEFT$(CAR$, 1) = "D" THEN GOTO 3130
3100 IF LEFT$(CAR$, 1) = "T" THEN GOTO 3550
3110 IF LEFT$(CAR$, 1) = "R" THEN GOTO 4090
3120 IF LEFT$(CAR$, 1) = "S" THEN GOTO 4470
3130 REM **** DIVING HAWK ****
3140 LINE (1, 4)-(30, 15), 1' RIGHT
3150 LINE (1, 26)-(30, 15), 1
3160 LINE (1, 4)-(1, 26), 1
3170 PAINT (15, 15), 1
3180 LINE (3, 9)-(25, 15), 9
3190 LINE (3, 21)-(25, 15), 9
3200 LINE (10, 12)-(20, 15), 0
3210 LINE (10, 18)-(20, 15), 0
3220 LINE (10, 12)-(10, 18), 0
3230 PAINT (15, 15), 0
3240 LINE (64, 4)-(35, 15), 1' LEFT
3250 LINE (64, 26)-(35, 15), 1
3260 LINE (64, 4)-(64, 26), 1
3270 PAINT (50, 15), 1
3280 LINE (62, 9)-(40, 15), 9
3290 LINE (62, 21)-(40, 15), 9
3300 LINE (55, 12)-(45, 15), 0
3310 LINE (55, 18)-(45, 15), 0
3320 LINE (55, 12)-(55, 18), 0
3330 PAINT (50, 15), 0
3340 LINE (105, 1)-(120, 30), 1' DOWN
3350 LINE (133, 1)-(120, 30), 1
3360 LINE (105, 1)-(133, 1), 1
3370 PAINT (120, 15), 1
3380 LINE (112, 3)-(120, 25), 9
3390 LINE (128, 3)-(120, 25), 9
3400 LINE (117, 12)-(120, 20), 0
3410 LINE (123, 12)-(120, 20), 0
3420 LINE (117, 12)-(123, 12), 0
3430 PAINT (120, 15), 0
3440 LINE (72, 29)-(85, 0), 1' UP
3450 LINE (98, 29)-(85, 0), 1
3460 LINE (72, 29)-(98, 29), 1
3470 PAINT (85, 15), 1
3480 LINE (77, 27)-(85, 5), 9
3490 LINE (93, 27)-(85, 5), 9
3500 LINE (82, 18)-(85, 10), 0
3510 LINE (88, 18)-(85, 10), 0
3520 LINE (82, 18)-(88, 18), 0
3530 PAINT (85, 15), 0
3540 GOTO 4970
3550 REM **** TOTAL ECLIPSE ****
3560 CIRCLE (17, 15), 13, 15, 4.725, 1.575, 1.3' RGT
3570 CIRCLE (7, 15), 12, 15, 4.725, 1.575, 1.3
3580 LINE (0, 2)-(17, 2)
3590 LINE (0, 28)-(17, 28)
3600 PAINT (25, 15), 15
3610 CIRCLE (14, 15), 12, 8, 4.725, 1.575, 1.3
3620 CIRCLE (13, 15), 12, 8, 4.725, 1.575, 1.3
3630 CIRCLE (12, 15), 12, 8, 4.725, 1.575, 1.3
3640 CIRCLE (11, 15), 12, 7, 4.725, 1.575, 1.3
3650 CIRCLE (10, 15), 12, 7, 4.725, 1.575, 1.3
3660 CIRCLE (9, 15), 12, 7, 4.725, 1.575, 1.3
3670 CIRCLE (23, 15), 3, 0
3680 PAINT (23, 15), 0
3690 CIRCLE (46, 15), 13, 15, 1.575, 4.725, 1.3' LFT
3700 CIRCLE (56, 15), 12, 15, 1.575, 4.725, 1.3
3710 LINE (46, 2)-(65, 2)
3720 LINE (46, 28)-(65, 28)
3730 PAINT (37, 15), 15
3740 CIRCLE (49, 15), 12, 8, 1.575, 4.725, 1.3
3750 CIRCLE (50, 15), 12, 8, 1.575, 4.725, 1.3
3760 CIRCLE (51, 15), 12, 8, 1.575, 4.725, 1.3
3770 CIRCLE (52, 15), 12, 7, 1.575, 4.725, 1.3
3780 CIRCLE (53, 15), 12, 7, 1.575, 4.725, 1.3
3790 CIRCLE (54, 15), 12, 7, 1.575, 4.725, 1.3
3800 CIRCLE (40, 15), 3, 0
3810 PAINT (40, 15), 0
3820 CIRCLE (85, 13), 13, 15, , 3.15, .77' UP
3830 CIRCLE (85, 23), 12, 15, , 3.15, .77
3840 LINE (72, 13)-(72, 30)
3850 LINE (98, 13)-(98, 30)
3860 PAINT (85, 5), 15
3870 CIRCLE (85, 16), 12, 8, , 3.15, .77
3880 CIRCLE (85, 17), 12, 8, , 3.15, .77
3890 CIRCLE (85, 18), 12, 8, , 3.15, .77
3900 CIRCLE (85, 19), 12, 7, , 3.15, .77
3910 CIRCLE (85, 20), 12, 7, , 3.15, .77
3920 CIRCLE (85, 21), 12, 7, , 3.15, .77
3930 CIRCLE (85, 6), 3, 0
3940 PAINT (85, 6), 0
3950 CIRCLE (120, 19), 13, 15, 3.15, , .77' DOWN
3960 CIRCLE (120, 9), 13, 15, 3.15, , .77
3970 LINE (107, 19)-(107, 0)
3980 LINE (133, 19)-(133, 0)
3990 PAINT (120, 25), 15
4000 CIRCLE (120, 16), 12, 8, 3.15, , .77
4010 CIRCLE (120, 15), 12, 8, 3.15, , .77
4020 CIRCLE (120, 14), 12, 8, 3.15, , .77
4030 CIRCLE (120, 13), 12, 7, 3.15, , .77
4040 CIRCLE (120, 12), 12, 7, 3.15, , .77
4050 CIRCLE (120, 11), 12, 7, 3.15, , .77
4060 CIRCLE (120, 26), 3, 0
4070 PAINT (120, 26), 0
4080 GOTO 4970
4090 REM **** ROLLING THUNDER ****
4100 LINE (0, 0)-(28, 15), 14' RIGHT
4110 LINE (0, 30)-(28, 15), 14
4120 LINE (0, 0)-(10, 15), 14
4130 LINE (0, 30)-(10, 15), 14
4140 PAINT (12, 15), 14
4150 CIRCLE (11, 15), 6, 6, 4.3, 2, 2
4160 CIRCLE (10, 15), 6, 6, 4.3, 2, 2
4170 CIRCLE (20, 15), 4, 0, , , .6
4180 PAINT (20, 15), 0
4190 LINE (65, 0)-(37, 15), 14' LEFT
4200 LINE (65, 30)-(37, 15), 14
4210 LINE (65, 0)-(55, 15), 14
4220 LINE (65, 30)-(55, 15), 14
4230 PAINT (45, 15), 14
4240 CIRCLE (55, 15), 6, 6, 2, 4.3, 2
4250 CIRCLE (56, 15), 6, 6, 2, 4.3, 2
4260 CIRCLE (45, 15), 4, 0, , , .6
4270 PAINT (45, 15), 0
4280 LINE (70, 30)-(85, 2), 14' UP
4290 LINE (100, 30)-(85, 2), 14
4300 LINE (70, 30)-(85, 20), 14
4310 LINE (100, 30)-(85, 20), 14
4320 PAINT (85, 15), 14
4330 CIRCLE (85, 20), 6, 6, 0, 3.15, .5
4340 CIRCLE (85, 21), 6, 6, 0, 3.15, .5
4350 CIRCLE (85, 10), 4, 0, , , 1.6666
4360 PAINT (85, 10), 0
4370 LINE (105, 0)-(120, 28), 14' DOWN
4380 LINE (135, 0)-(120, 28), 14
4390 LINE (105, 0)-(120, 10), 14
4400 LINE (135, 0)-(120, 10), 14
4410 PAINT (120, 15), 14
4420 CIRCLE (120, 10), 6, 6, 3.15, 0, .5
4430 CIRCLE (120, 11), 6, 6, 3.15, 0, .5
4440 CIRCLE (120, 20), 4, 0, , , 1.6666
4450 PAINT (120, 20), 0
4460 GOTO 4970
4470 REM **** SPEED DEMON ****
4480 CIRCLE (24, 15), 5, 4, 5.3, 1' FIRST
4490 LINE (28, 13)-(13, 3), 4
4500 LINE (28, 17)-(13, 27), 4
4510 LINE (13, 3)-(1, 3), 4
4520 LINE (13, 27)-(1, 27), 4
4530 CIRCLE (2, 10), 8, 4, 5.1, 1.57
4540 CIRCLE (2, 20), 8, 4, 4.75, 1.17
4550 CIRCLE (20, 15), 5, 4, , , .7
4560 PAINT (10, 15), 4
4570 CIRCLE (24, 15), 5, 14, 5.3, 1
4580 CIRCLE (23, 15), 5, 14, 6, .3
4590 PAINT (20, 15), 8, 4
4600 CIRCLE (41, 15), 5, 4, 2.2, 4' SECOND
4610 LINE (37, 13)-(52, 3), 4
4620 LINE (37, 17)-(52, 27), 4
4630 LINE (52, 3)-(64, 3), 4
4640 LINE (52, 27)-(64, 27), 4
4650 CIRCLE (63, 10), 8, 4, 1.5, 4
4660 CIRCLE (63, 20), 8, 4, 2, 4.7
4670 CIRCLE (45, 15), 5, 4, , , .7
4680 PAINT (39, 15), 4
4690 CIRCLE (41, 15), 5, 14, 2.3, 4
4700 CIRCLE (42, 15), 5, 14, 2.8, 3.6
4710 PAINT (45, 15), 8, 4
4720 CIRCLE (85, 5), 5, 4, .5, 3' THIRD
4730 LINE (81, 3)-(72, 17), 4
4740 LINE (89, 3)-(98, 17), 4
4750 LINE (72, 17)-(72, 27), 4
4760 LINE (98, 17)-(98, 27), 4
4770 CIRCLE (79, 25), 6, 4, .5, 3.2
4780 CIRCLE (91, 25), 6, 4, , 2.8
4790 CIRCLE (85, 10), 5, 4, , , 1.428
4800 PAINT (85, 20), 4
4810 CIRCLE (85, 5), 5, 14, .5, 3
4820 CIRCLE (85, 6), 5, 14, 1, 2.5
4830 PAINT (85, 10), 8, 4
4840 CIRCLE (120, 25), 5, 4, 3.5, 5.9'FOURTH
4850 LINE (116, 27)-(108, 13), 4
4860 LINE (124, 27)-(132, 13), 4
4870 LINE (108, 13)-(108, 3), 4
4880 LINE (132, 13)-(132, 3), 4
4890 CIRCLE (115, 5), 6, 4, 3.1, 5.7
4900 CIRCLE (125, 5), 6, 4, 4, 6.2
4910 CIRCLE (120, 20), 5, 4, , , 1.428
4920 PAINT (120, 12), 4
4930 CIRCLE (120, 25), 5, 14, 3.5, 5.9
4940 CIRCLE (120, 24), 5, 14, 4, 5.4
4950 PAINT (120, 20), 8, 4
4960 IF CAR$ = "STORM" THEN GOSUB 8940
4970 GET (0, 0)-(30, 30), DR
4980 GET (35, 0)-(65, 30), DL
4990 GET (70, 0)-(100, 30), DU
5000 GET (105, 0)-(135, 30), DD
5010 CLS
5020 IF LEFT$(CAR$, 1) = "S" THEN ACC = 5: CRN = 2: SPD = 5: D$ = "R"
5030 IF LEFT$(CAR$, 1) = "R" THEN ACC = 3: CRN = 5: SPD = 2: D$ = "R"
5040 IF LEFT$(CAR$, 1) = "D" THEN ACC = 5: CRN = 2: SPD = 3: D$ = "R"
5050 IF LEFT$(CAR$, 1) = "T" THEN ACC = 4: CRN = 3: SPD = 3: D$ = "R"
5060 A = 0: B = 0
5070 IF CAR$ = "STORM" THEN ACC = 6: CRN = 4: SPD = 7: D$ = "R"
5080 TRAK = TRAK + 1
5090 IF TRAK = 1 THEN TRAK$ = "Mercury"
5100 IF TRAK = 2 THEN TRAK$ = "Venus"
5110 IF TRAK = 3 THEN TRAK$ = "Earth"
5120 IF TRAK = 4 THEN TRAK$ = "Mars"
5130 IF TRAK = 5 THEN TRAK$ = "Jupiter"
5140 IF TRAK = 6 THEN TRAK$ = "Saturn"
5150 IF TRAK = 7 THEN TRAK$ = "Uranus"
5160 IF TRAK = 8 THEN TRAK$ = "Neptune"
5170 IF TRAK = 9 THEN TRAK$ = "Pluto"
5180 IF TRAK = 10 THEN TRAK$ = "Planet-X"
5190 X$ = "": Y$ = ""
5200 COLOR 2
5210 LOCATE 5, 5
5220 LINE (0, 35)-(200, 100), 2, BF
5230 LINE (10, 45)-(190, 90), 0, BF
5240 PRINT "Track : "; TRAK$
5250 GET (0, 35)-(200, 100), REDY
5260 CLS
5270 GOTO 6300
5280 LINE (535, 3)-(635, 8), 9, BF
5290 LINE (534, 2)-(636, 9), 0, B
5300 LINE (430, 3)-(530, 8), 11, BF
5310 LINE (429, 2)-(531, 9), 0, B
5320 LINE (325, 3)-(425, 8), 14, BF
5330 LINE (324, 2)-(426, 9), 0, B
5340 CIRCLE (20, 20), 22, 15
5350 PAINT (20, 20), 15
5360 LAP(3) = 1: LAP(0) = 0: LAP(1) = 0: LAP(2) = 0
5370 X = 330
5380 Y = 30 + Z
5390 ET = TIMER
5400 FOR L = 439 TO 220 STEP -20
5410 PUT (L, 150), REDY, XOR
5420 IF SND$ = "On" THEN SOUND L, .5
5430 KBD$ = INKEY$
5440 PUT (L, 150), REDY
5450 NEXT
5460 PUT (220, 150), REDY, XOR
5470 FOR L = 1 TO 10
5480 IF SND$ = "On" THEN SOUND RND * 20 + 64, .3
5490 NEXT L
5500 FOR L = 1 TO 6000: KBD$ = INKEY$: NEXT L
5510 PUT (220, 150), REDY
5520 FOR L = 220 TO 1 STEP -20
5530 PUT (L, 150), REDY, XOR
5540 IF SND$ = "On" THEN SOUND L + 63, .5
5550 PUT (L, 150), REDY
5560 NEXT
5570 KBD$ = INKEY$
5580 IF KBD$ = CHR$(0) + "H" THEN B = B - (ACC / 6): A = A / (CRN - .8): D$ = "U"
5590 IF KBD$ = CHR$(0) + "P" THEN B = B + (ACC / 6): A = A / (CRN - .8): D$ = "D"
5600 IF KBD$ = CHR$(0) + "K" THEN A = A - (ACC / 6): B = B / (CRN - .8): D$ = "L"
5610 IF KBD$ = CHR$(0) + "M" THEN A = A + (ACC / 6): B = B / (CRN - .8): D$ = "R"
5620 IF D$ = "U" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DU, XOR
5630 IF D$ = "D" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DD, XOR
5640 IF D$ = "L" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DL, XOR
5650 IF D$ = "R" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DR, XOR
5660 IF KBD$ = CHR$(27) THEN GOTO 8770
5670 IF KBD$ = "S" OR KBD$ = "s" THEN IF SND$ = "On" THEN SND$ = "Off": SOUND 12000, .1: GOTO 5690
5680 IF KBD$ = "S" OR KBD$ = "s" THEN IF SND$ = "Off" THEN SND$ = "On": SOUND 12000, .1
5690 IF SMOK$ = "On" THEN D2$ = D2$ + " " + D$
5700 IF SMOK$ = "On" THEN D2$ = RIGHT$(D2$, 30)
5710 IF SMOK$ = "On" AND LEFT$(X$, 1) <> " " THEN X$ = RIGHT$(X$, 59)
5720 IF SMOK$ = "On" AND LEFT$(Y$, 1) <> " " THEN Y$ = RIGHT$(Y$, 59)
5730 IF SMOK$ = "On" AND X < 10 THEN X$ = X$ + "  " + STR$(CINT(X))
5740 IF SMOK$ = "On" AND X >= 10 AND X < 100 THEN X$ = X$ + " " + STR$(CINT(X))
5750 IF SMOK$ = "On" AND X >= 100 THEN X$ = X$ + STR$(CINT(X))
5760 IF SMOK$ = "On" AND Y < 10 THEN Y$ = Y$ + "  " + STR$(CINT(Y))
5770 IF SMOK$ = "On" AND Y >= 10 AND Y < 100 THEN Y$ = Y$ + " " + STR$(CINT(Y))
5780 IF SMOK$ = "On" AND Y >= 100 THEN Y$ = Y$ + STR$(CINT(Y))
5790 IF SMOK$ = "On" THEN X$ = RIGHT$(X$, 60)
5800 IF SMOK$ = "On" THEN Y$ = RIGHT$(Y$, 60)
5810 IF SMOK$ = "On" THEN X2 = VAL(LEFT$(X$, 4)): Y2 = VAL(LEFT$(Y$, 4))
5820 IF SMOK$ = "On" AND D$ = "R" AND X < 620 AND X > 15 AND Y > 5 AND Y < 330 AND POINT(X, Y + 15) <> 7 THEN PUT (X - 10, Y + 10), SMOK, XOR
5830 IF SMOK$ = "On" AND D$ = "L" AND X < 595 AND X > 5 AND Y > 5 AND Y < 330 AND POINT(X + 30, Y + 15) <> 7 THEN PUT (X + 30, Y + 10), SMOK, XOR
5840 IF SMOK$ = "On" AND D$ = "U" AND X < 620 AND X > 5 AND Y > 5 AND Y < 305 AND POINT(X + 15, Y + 30) <> 7 THEN PUT (X + 10, Y + 30), SMOK, XOR
5850 IF SMOK$ = "On" AND D$ = "D" AND X < 620 AND X > 5 AND Y > 15 AND Y < 330 AND POINT(X + 15, Y) <> 7 THEN PUT (X + 10, Y - 10), SMOK, XOR
5860 IF SMOK$ = "On" AND LEFT$(D2$, 2) = " R" AND X2 < 620 AND X2 > 15 AND Y2 > 5 AND Y2 < 330 AND POINT(X2, Y2 + 15) <> 7 THEN PUT (X2 - 10, Y2 + 10), SMOK
5870 IF SMOK$ = "On" AND LEFT$(D2$, 2) = " L" AND X2 < 595 AND X2 > 5 AND Y2 > 5 AND Y2 < 330 AND POINT(X2 + 30, Y2 + 15) <> 7 THEN PUT (X2 + 30, Y2 + 10), SMOK
5880 IF SMOK$ = "On" AND LEFT$(D2$, 2) = " U" AND X2 < 620 AND X2 > 5 AND Y2 > 5 AND Y2 < 305 AND POINT(X2 + 15, Y2 + 30) <> 7 THEN PUT (X2 + 10, Y2 + 30), SMOK
5890 IF SMOK$ = "On" AND LEFT$(D2$, 2) = " D" AND X2 < 620 AND X2 > 5 AND Y2 > 15 AND Y2 < 330 AND POINT(X2 + 15, Y2) <> 7 THEN PUT (X2 + 10, Y2 - 10), SMOK
5900 SP = ABS(((A + B) * MSPD) * 100) / SPD / MSPD
5910 IF SP > 100 THEN SP = 100
5920 LINE (530, 3)-(530 - SP, 8), 12, BF
5930 LINE (430, 3)-(530 - SP, 8), 11, BF
5940 ET2 = ET2 * SKIL
5950 ET2 = (ET2 / 16.7) - 1.575
5960 IF ET2 < -6.27 THEN ET2 = ET2 + 6.27
5970 CIRCLE (20, 20), 20, 4, ET2, ET2
5980 IF A > MSPD * (SPD) THEN A = MSPD * SPD
5990 IF A < -MSPD * (SPD) THEN A = -MSPD * SPD
6000 IF B > MSPD * (SPD) THEN B = MSPD * SPD
6010 IF B < -MSPD * (SPD) THEN B = -MSPD * SPD
6020 A1 = ABS(A * 12 + 1): B1 = ABS(B * 12 + 1)
6030 IF SND$ = "On" THEN SOUND (SPD * 20) + (A1 * 5) + (B1 * 5) + (RND * 10), .01
6040 IF X > 320 AND Y + 25 > 150 AND Y - 100 < 150 AND LAP(0) < LAP(3) THEN LAP(0) = LAP(0) + 1
6050 IF Y > 175 AND X + 25 > 320 AND X - 25 < 320 AND LAP(1) < LAP(0) THEN LAP(1) = LAP(1) + 1
6060 IF X < 320 AND Y + 25 > 175 AND Y - 25 < 175 AND LAP(2) < LAP(1) THEN LAP(2) = LAP(2) + 1
6070 IF Y < 175 AND X + 25 > 320 AND X - 25 < 320 AND LAP(3) = LAP(2) THEN LAP(3) = LAP(3) + 1
6080 IF LAP(0) = LAP(1) AND LAP(0) = LAP(2) AND LAP(0) = LAP(3) - 1 THEN LINE (425, 3)-(425 - (100 / LAPS * LAP(3)), 8), 1, BF
6090 ET2 = (ET - TIMER) / 4
6100 IF ET2 < -60 THEN GOSUB 9300: GOTO 6300
6110 IF LAP(3) = 6 AND SKIL = 0 THEN SKIL = 2: FOR L = 1 TO 50000!: NEXT: GOTO 1140
6120 IF LAP(3) = LAPS + 1 AND SKIL > 0 THEN ET = INT(ABS((ET - TIMER) * 10)) / 10: LINE (425, 3)-(425 + (ET2 * SKIL), 8), 3, BF: SOUND 12000, .1: LAP(3) = 1: LAP(0) = 0: LAP(1) = 0: LAP(2) = 0: GOSUB 9300: GOTO 5080
6130 IF DMG >= 100 THEN GOTO 8770
6140 IF D$ = "U" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DU
6150 IF D$ = "D" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DD
6160 IF D$ = "L" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DL
6170 IF D$ = "R" AND POINT(X + 15, Y + 15) <> 7 THEN PUT (X, Y), DR
6180 IF POINT(X + A, Y + B + 15) = 3 OR POINT(X + A + 30, Y + B + 15) = 3 OR POINT(X + B + 15, Y + B) = 3 OR POINT(X + A + 15, Y + B + 30) = 3 THEN GOSUB 9500
6190 IF X + A >= 600 OR X + A < 10 THEN A = 0
6200 IF Y + B >= 310 OR Y + B < 10 THEN B = 0
6210 X = X + A
6220 Y = Y + B
6230 IF POINT(X + A + 2, Y + 15 + B) = 2 THEN DMG = DMG + ABS((A + B) * 2 * SKIL) / 10: A = 0: B = B / 1.5: LINE (635, 3)-(635 - DMG, 8), 4, BF: LINE (535, 3)-(635 - DMG, 8), 9, BF
6240 IF POINT(X + A + 28, Y + 15 + B) = 2 THEN DMG = DMG + ABS((A + B) * 2 * SKIL) / 10: A = 0: B = B / 1.5: LINE (635, 3)-(635 - DMG, 8), 4, BF: LINE (535, 3)-(635 - DMG, 8), 9, BF
6250 IF POINT(X + 15 + A, Y + B + 2) = 2 THEN DMG = DMG + ABS((A + B) * 2 * SKIL) / 10: B = 0: : A = A / 1.5: LINE (635, 3)-(635 - DMG, 8), 4, BF: LINE (535, 3)-(635 - DMG, 8), 9, BF
6260 IF POINT(X + 15 + A, Y + 28 + B) = 2 THEN DMG = DMG + ABS((A + B) * 2 * SKIL) / 10: B = 0: A = A / 1.5: LINE (635, 3)-(635 - DMG, 8), 4, BF: LINE (535, 3)-(635 - DMG, 8), 9, BF
6270 IF POINT(X, Y + 15) = 4 OR POINT(X + 30, Y) = 4 OR POINT(X + 30, Y + 30) = 4 THEN DMG = DMG + SKIL * ABS(A + B / 20): LINE (635, 3)-(635 - DMG, 8), 4, BF: LINE (535, 3)-(635 - DMG, 8), 9, BF: PUT (X, Y), EXPL, XOR: PUT (X, Y), EXPL
6280 IF POINT(X, Y + 15) = 1 OR POINT(X + 30, 15) = 1 OR POINT(X + 15, Y) = 1 OR POINT(X + 15, Y + 30) = 1 THEN A = -A: B = -B
6290 GOTO 5570
6300 CLS
6310 Z = 0
6320 IF TRAK = 1 THEN GOSUB 6440
6330 IF TRAK = 3 THEN GOSUB 6800
6340 IF TRAK = 2 THEN GOSUB 6910
6350 IF TRAK = 6 THEN GOSUB 6990
6360 IF TRAK = 4 THEN GOSUB 6670
6370 IF TRAK = 5 THEN GOSUB 6510
6380 IF TRAK = 7 THEN GOSUB 8420
6390 IF TRAK = 8 THEN GOSUB 7310
6400 IF TRAK = 9 THEN GOSUB 7450
6410 IF TRAK = 10 THEN GOSUB 7820
6420 IF TRAK = 11 THEN GOTO 1130
6430 GOTO 5280
6440 REM **** SUB TO DRAW TRACK 'MERCURY' ****
6450 CIRCLE (320, 175), 120, 2, , , .2
6460 CIRCLE (320, 175), 295, 2, , , .545
6470 PAINT (0, 0), 2
6480 PAINT (320, 175), 2
6490 LINE (320, 15)-(330, 150), 15, BF: PALETTE 0, 56: PALETTE 2, 17
6500 RETURN
6510 REM **** SUB TO DRAW TRACK 'JUPITER' ****
6520 CLS : SCREEN 9
6530 CIRCLE (100, 175), 155, 2, 1.575, 4.725, 2
6540 LINE (100, 20)-(540, 20), 2
6550 CIRCLE (540, 175), 155, 2, 4.725, 1.575, 2
6560 LINE (100, 330)-(540, 330), 2
6570 CIRCLE (150, 175), 50, 2, 1.575, 4.725, 2
6580 LINE (150, 125)-(490, 125), 2
6590 CIRCLE (490, 175), 50, 2, 4.725, 1.575, 2
6600 LINE (150, 225)-(490, 225), 2
6610 LINE (290, 329)-(310, 226), 3, BF
6620 PAINT (320, 175), 2
6630 PAINT (0, 0), 2
6640 LINE (290, 330)-(200, 225), 2, BF
6650 LINE (320, 21)-(330, 124), 15, BF: PALETTE 0, 32: PALETTE 2, 52
6660 RETURN
6670 REM **** SUB TO DRAW TRACK 'MARS' ****
6680 CIRCLE (320, 175), 170, 2, 5.6, 3.8, .2
6690 CIRCLE (320, 175), 310, 2, 0, 3.14, .5
6700 CIRCLE (500, 175), 150, 2, 4.723, 0, 1.15
6710 CIRCLE (140, 175), 150, 2, 3.14, 4.723, 1.15
6720 LINE (180, 195)-(460, 325), 7, BF
6730 LINE (142, 325)-(502, 325), 2
6740 LINE (180, 195)-(460, 195), 2
6750 PAINT (1, 1), 2
6760 PAINT (320, 170), 2
6770 LINE (320, 21)-(330, 140), 15, BF
6780 PALETTE 0, 40: PALETTE 2, 4
6790 RETURN
6800 REM **** SUB TO DRAW TRACK 'EARTH' ****
6810 CLS : SCREEN 9
6820 CIRCLE (320, 100), 300, 2, 6, 3.4, .3
6830 CIRCLE (320, 250), 300, 2, 2.85, .3, .3
6840 CIRCLE (-40, 175), 100, 2, 5.5, .8
6850 CIRCLE (680, 175), 100, 2, 2.4, 4
6860 PAINT (0, 0), 2
6870 CIRCLE (320, 175), 160, 2, , , .6
6880 PAINT (320, 175), 2
6890 LINE (320, 11)-(330, 78), 15, BF: PALETTE 0, 0: PALETTE 2, 16
6900 RETURN
6910 REM **** SUB TO DRAW TRACK 'VENUS' ****
6920 CLS : PAINT (0, 0), 2
6930 LINE (50, 20)-(590, 230), 0, BF
6940 LINE (50, 50)-(440, 330), 0, BF
6950 LINE (160, 100)-(440, 150), 2, BF
6960 LINE (160, 100)-(340, 250), 2, BF
6970 LINE (320, 20)-(330, 99), 15, BF: PALETTE 0, 8: PALETTE 2, 15
6980 RETURN
6990 REM **** SUB TO DRAW TRACK 'SATURN' ****
7000 CIRCLE (110, 85), 100, 2, 1.575, 3.15
7010 LINE (110, 12)-(540, 12), 2
7020 CIRCLE (529, 85), 100, 2, , 1.575
7030 LINE (629, 85)-(629, 175), 2
7040 CIRCLE (490, 175), 139, 2, 3.5, 0, .5
7050 LINE (360, 200)-(320, 165), 2
7060 CIRCLE (312, 170), 10, 2, .5, 4
7070 LINE (305, 175)-(350, 220), 2
7080 CIRCLE (480, 195), 139, 2, 3.5, 5, .5
7090 CIRCLE (550, 300), 60, 2, 4.725, 2.1
7100 LINE (550, 344)-(110, 344), 2
7110 CIRCLE (110, 271), 100, 2, 3.15, 4.725
7120 LINE (10, 272)-(10, 80), 2
7130 LINE (10, 272)-(10, 80), 2
7140 CIRCLE (160, 120), 50, 2, 1.575, 3.15
7150 LINE (155, 83)-(480, 83), 2
7160 CIRCLE (480, 129), 45, 2, 3.15, 1.575, 1.6
7170 CIRCLE (402, 128), 50, 2, 0, 1.575
7180 LINE (402, 91)-(160, 91), 2
7190 CIRCLE (160, 120), 40, 2, 1.575, 3.15
7200 LINE (120, 120)-(120, 220), 2
7210 CIRCLE (240, 210), 120, 2, 3.15, 4.725
7220 LINE (240, 298)-(510, 298), 2
7230 CIRCLE (511, 301), 4, 2, 4.725, 1.575
7240 LINE (510, 304)-(220, 304), 2
7250 CIRCLE (240, 209), 130, 2, 3.15, 4.725
7260 LINE (110, 210)-(110, 120), 2
7270 PAINT (0, 0), 2
7280 PAINT (480, 150), 2
7290 LINE (320, 13)-(330, 82), 15, BF: PALETTE 0, 32: PALETTE 2, 15
7300 RETURN
7310 REM **** SUB TO DRAW TRACK 'NEPTUNE' ****
7320 CIRCLE (500, 80), 100, 2, , 2: Z = 50
7330 CIRCLE (320, -49), 250, 2, 4, 5.4, .3
7340 CIRCLE (140, 80), 100, 2, 1.2, 3.14
7350 CIRCLE (320, 30), 310, 2, 3.3, 6.12, 1.1
7360 CIRCLE (320, 100), 150, 2, 3.3, 6.12, 1.1
7370 CIRCLE (320, 110), 138, 2, 3.3, 6.12, .5
7380 PAINT (0, 0), 2
7390 PAINT (320, 200), 2
7400 CIRCLE (320, 8), 100, 4, 3.3, 6.12
7410 CIRCLE (320, -49), 250, 4, 4.3, 5.13, .3
7420 PAINT (320, 50), 4
7430 LINE (320, 82)-(330, 178), 15, BF: PALETTE 0, 56: PALETTE 2, 8
7440 RETURN
7450 REM **** SUB TO DRAW TRACK 'PLUTO' ****
7460 CLS : SCREEN 9
7470 CIRCLE (480, 88), 130, 4, 0, 1.575, .5
7480 CIRCLE (480, 88), 155, 4, 0, 1.575, .5
7490 LINE (610, 88)-(635, 200), 4, BF
7500 LINE (160, 10)-(480, 23), 4, BF
7510 PAINT (550, 30), 4
7520 LINE (481, 180)-(609, 200), 3, BF
7530 LINE (480, 200)-(480, 150), 2
7540 CIRCLE (465, 150), 15, 2, 0, 1.575
7550 LINE (480, 200)-(635, 200), 2
7560 LINE (635, 200)-(635, 88), 2
7570 CIRCLE (480, 88), 155, 2, 0, 1.575, .5
7580 LINE (480, 10)-(150, 10), 2
7590 LINE (480, 250)-(635, 250), 2
7600 CIRCLE (510, 250), 125, 2, 4.725, 0
7610 LINE (512, 341)-(140, 341), 2
7620 CIRCLE (465, 249), 15, 2, 4.725, 0
7630 LINE (465, 260)-(170, 260), 2
7640 CIRCLE (170, 249), 15, 2, 3.15, 4.725
7650 CIRCLE (140, 250), 125, 2, 3.15, 4.725
7660 LINE (15, 250)-(15, 100), 2
7670 LINE (155, 250)-(155, 150), 2
7680 CIRCLE (170, 150), 15, 2, 1.575, 3.15
7690 LINE (170, 139)-(465, 139), 2
7700 CIRCLE (150, 100), 135, 2, 1.575, 3.15, .665
7710 LINE (16, 150)-(154, 250), 7, BF
7720 CIRCLE (320, 200), 200, 1, 4.01, 5.42, .4
7730 LINE (170, 261)-(465, 261), 1
7740 PAINT (320, 265), 1
7750 PAINT (1, 1), 2
7760 CIRCLE (320, 400), 200, 1, .87, 2.27, .4
7770 LINE (170, 340)-(465, 340), 1
7780 PAINT (320, 330), 1
7790 PALETTE 2, 49: PALETTE 0, 8
7800 LINE (320, 24)-(330, 137), 15, BF
7810 RETURN
7820 REM **** SUB TO DRAW TRACK 'PLANET-X' ****
7830 CLS : SCREEN 9
7840 CIRCLE (580, 50), 50, 2, 0, 1.575
7850 LINE (630, 50)-(630, 120), 2
7860 CIRCLE (580, 115), 50, 2, 4.725, 0
7870 LINE (500, 152)-(582, 152), 2
7880 LINE (582, 13)-(450, 13), 2
7890 CIRCLE (450, 50), 50, 2, 1.575, 3.15
7900 LINE (400, 50)-(400, 220), 2
7910 LINE (400, 220)-(490, 220), 2
7920 LINE (490, 220)-(490, 85), 2
7930 CIRCLE (520, 87), 30, 2, 4.725, 3.15, .3
7940 LINE (500, 96)-(520, 96), 2
7950 LINE (500, 90)-(500, 160), 2
7960 LINE (400, 290)-(400, 310), 2
7970 CIRCLE (450, 310), 50, 2, 3.15, 4.725
7980 LINE (450, 347)-(580, 347), 2
7990 CIRCLE (580, 310), 50, 2, 4.725, 0
8000 LINE (630, 310)-(630, 267), 2
8010 CIRCLE (580, 267), 50, 2, 0, 1.575
8020 LINE (580, 230)-(290, 230), 2
8030 LINE (400, 290)-(490, 290), 2
8040 CIRCLE (520, 290), 30, 2, 3.15, 1.575, .3
8050 LINE (520, 281)-(290, 281), 2
8060 LINE (290, 281)-(290, 230), 2
8070 LINE (180, 281)-(180, 230), 2
8080 LINE (180, 230)-(60, 230), 2
8090 CIRCLE (60, 267), 50, 2, 1.575, 3.15
8100 LINE (10, 267)-(10, 310), 2
8110 CIRCLE (60, 310), 50, 2, 3.15, 4.725
8120 LINE (60, 347)-(230, 347), 2
8130 CIRCLE (230, 310), 50, 2, 4.725, 0
8140 LINE (280, 310)-(280, 160), 2
8150 LINE (180, 281)-(160, 281), 2
8160 CIRCLE (160, 290), 30, 2, 1.575, 0, .3
8170 LINE (190, 292)-(190, 160), 2
8180 LINE (190, 160)-(280, 160), 2
8190 LINE (180, 85)-(280, 85), 2
8200 LINE (280, 85)-(280, 47), 2
8210 CIRCLE (230, 47), 50, 2, 0, 1.575
8220 LINE (230, 10)-(60, 10), 2
8230 CIRCLE (60, 47), 50, 2, 1.575, 3.15
8240 LINE (10, 47)-(10, 115), 2
8250 CIRCLE (60, 115), 50, 2, 3.15, 4.725
8260 LINE (60, 152)-(390, 152), 2
8270 LINE (390, 152)-(390, 94), 2
8280 LINE (390, 94)-(150, 94), 2
8290 CIRCLE (150, 85), 30, 2, 0, 4.725, .3
8300 PAINT (1, 1), 2
8310 LINE (490, 200)-(400, 220), 3, BF
8320 LINE (290, 230)-(310, 280), 3, BF
8330 LINE (190, 160)-(280, 180), 3, BF
8340 LINE (370, 95)-(390, 151), 3, BF
8350 LINE (320, 95)-(330, 151), 15, BF: PALETTE 2, 40: PALETTE 0, 8
8360 DRAW "bm334,123c14" + ARO$ + "br155ta35" + ARO$
8370 DRAW "bm445,174ta270" + ARO$ + "br140ta315" + ARO$
8380 DRAW "bm345,255ta180" + ARO$ + "br155ta215" + ARO$
8390 DRAW "bm235,205ta90" + ARO$ + "br140ta135" + ARO$
8400 Z = 80
8410 RETURN
8420 REM **** SUB TO DRAW TRACK 'URANUS' ****
8430 CIRCLE (100, 50), 50, 2, 1.575, 3.15
8440 LINE (100, 13)-(580, 13), 2
8450 CIRCLE (580, 50), 50, 2, 0, 1.575
8460 LINE (630, 50)-(630, 190), 2
8470 CIRCLE (530, 190), 100, 2, 3.5, 0, .3
8480 LINE (440, 202)-(419, 190), 2
8490 CIRCLE (350, 210), 80, 2, .5, 3.15, .5
8500 CIRCLE (285, 280), 10, 2, 1.575, 4.725
8510 CIRCLE (290, 210), 20, 2, 3.15, 4.725
8520 LINE (280, 286)-(500, 286), 2
8530 LINE (280, 274)-(500, 274), 2
8540 CIRCLE (495, 280), 10, 2, 4.725, 1.575
8550 PAINT (400, 280), 2
8560 LINE (290, 225)-(560, 225), 2
8570 CIRCLE (558, 283), 80, 2, 4.725, 1.575
8580 LINE (558, 341)-(230, 341), 2
8590 CIRCLE (230, 300), 56, 2, 3.15, 4.725
8600 CIRCLE (144, 300), 30, 2, 0, 1.575
8610 CIRCLE (100, 241), 50, 2, 3.15, 4.725
8620 LINE (100, 278)-(145, 278), 2
8630 LINE (50, 243)-(50, 47), 2
8640 PAINT (0, 0), 2
8650 CIRCLE (160, 200), 15, 2, 3.15, 0
8660 LINE (145, 200)-(145, 90), 2
8670 CIRCLE (170, 90), 25, 2, 1.575, 3.15
8680 LINE (170, 72)-(440, 72), 2
8690 CIRCLE (440, 92), 28, 2, 4.5, 1.575
8700 CIRCLE (346, 198), 171, 2, 1, 3.15, .6
8710 PAINT (440, 90), 2
8720 LINE (320, 14)-(330, 71), 15, BF: PALETTE 0, 9: PALETTE 2, 38
8730 DRAW "bm350,45c14" + ARO$
8740 DRAW "bm220,200ta270" + ARO$ + "bm220,270ta290" + ARO$
8750 DRAW "bm500,250ta180" + ARO$ + "br180" + A$ + "br100ta135" + ARO$
8760 RETURN
8770 PLAY "MLO0": LINE (635, 8)-(535, 3), 4, BF: COL = 0
8780 SIZ = 10: DMG = 0
8790 X = (RND * 10) - 5 + X
8800 Y = (RND * 10) - 5 + Y
8810 FOR L = 1 TO SIZ
8820 IF SND$ = "On" THEN SOUND RND * 200 + 64, .2
8830 IF COL = 0 THEN COL = 4: GOTO 8860
8840 IF COL = 4 THEN COL = 14: GOTO 8860
8850 IF COL = 14 THEN COL = 0: GOTO 8860
8860 CIRCLE (X + 15, Y + 15), L, COL
8870 NEXT
8880 IF CINT(SIZ) = 60 AND SKIL = 0 THEN GOTO 1130
8890 IF CINT(SIZ) = 60 AND KBD$ = CHR$(27) THEN GOTO 1130
8900 IF CINT(SIZ) = 60 AND SKIL > 0 THEN GOTO 6300
8910 IF CINT(SIZ) = 11 THEN SIZ = 60: GOTO 8790
8920 SIZ = SIZ + .1: GOTO 8790
8930 SIZ = 60: DMG = 0
8940 REM **** SUB TO DRAW SECRET CAR 'STORM' ****
8950 PAINT (20, 15), 0, 4
8960 PAINT (45, 15), 0, 4
8970 PAINT (85, 10), 0, 4
8980 PAINT (120, 20), 0, 4
8990 PAINT (15, 15), 15, 0
9000 PAINT (50, 15), 15, 0
9010 PAINT (85, 15), 15, 0
9020 PAINT (120, 15), 15, 0
9030 CIRCLE (12, 10), 2, 8, , , 2: PAINT (12, 10), 8
9040 CIRCLE (12, 20), 2, 8, , , 2: PAINT (12, 20), 8
9050 LINE (13, 8)-(18, 8), 7
9060 LINE (13, 12)-(18, 12), 7
9070 LINE (13, 18)-(18, 18), 7
9080 LINE (13, 22)-(18, 22), 7
9090 CIRCLE (53, 10), 2, 8, , , 2: PAINT (53, 10), 8
9100 CIRCLE (53, 20), 2, 8, , , 2: PAINT (53, 20), 8
9110 LINE (52, 8)-(47, 8), 7
9120 LINE (52, 12)-(50, 12), 7
9130 LINE (52, 18)-(47, 18), 7
9140 LINE (52, 22)-(47, 22), 7
9150 CIRCLE (80, 19), 2, 8, , , .4: PAINT (80, 19), 8
9160 CIRCLE (90, 19), 2, 8, , , .4: PAINT (90, 19), 8
9170 LINE (78, 19)-(78, 14), 8
9180 LINE (82, 19)-(82, 14), 8
9190 LINE (88, 19)-(88, 14), 8
9200 LINE (92, 19)-(92, 14), 8
9210 CIRCLE (115, 11), 2, 8, , , .4: PAINT (115, 11), 8
9220 CIRCLE (125, 11), 2, 8, , , .4: PAINT (125, 11), 8
9230 LINE (113, 11)-(113, 16), 8
9240 LINE (117, 11)-(117, 16), 8
9250 LINE (123, 11)-(123, 16), 8
9260 LINE (127, 11)-(127, 16), 8
9270 SKIL = SKIL / 5
9280 RETURN
9290 END
9300 REM **** SUB TO FIND AND SHOW FINISHING PLACE ****
9310 COLOR 4, 0
9320 A = 0: B = 0: DMG = 0: COL = 0: LINE (175, 145)-(475, 205), 1, BF
9330 FOR X = 180 TO 460 STEP 10
9340 FOR Y = 150 TO 190 STEP 10
9350 IF COL = 0 THEN COL = 15: GOTO 9370
9360 IF COL = 15 THEN COL = 0: GOTO 9370
9370 LINE (X, Y)-(X + 10, Y + 10), COL, BF
9380 NEXT: NEXT
9390 LOCATE 13
9400 FIN = INT((ABS(ET2) / 7 * (SKIL / TRAK)) * 4 / LAPS)
9410 IF FIN < 1 THEN FIN = 1
9420 IF FIN > 10 THEN FIN = 10
9430 IF ET2 < -60 THEN LOCATE , 35: PRINT "TIME UP!": FIN = 10: GOTO 9480
9440 IF FIN = 1 THEN LOCATE , 30: PRINT "YOU WON THE RACE!"
9450 IF FIN = 2 THEN LOCATE , 28: PRINT "YOU MADE A CLOSE SECOND!"
9460 IF FIN = 3 THEN LOCATE , 27: PRINT "YOU FINISH A SLUGISH THIRD!"
9470 IF FIN > 3 THEN LOCATE , 25: PRINT "YOU FINISHED A PITIFUL"; FIN; "th PLACE!"
9480 FOR X = 1 TO 50000!: NEXT: CLS
9490 RETURN
9500 REM **** SUB TO MAKE CAR JUMP ****
9510 C1 = ABS(A / MSPD): Z = 0
9520 C2 = ABS(B / MSPD): W = 0
9530 A = A / MSPD
9540 B = B / MSPD
9550 IF LEFT$(CAR$, 2) = "RO" THEN A = A * 2: B = B * 2
9560 IF LEFT$(CAR$, 2) = "DI" THEN A = A * 1.5: B = B * 1.5
9570 A = A * 2
9580 B = B * 2
9590 IF C1 > C2 THEN D1 = .3: D2 = 0
9600 IF C2 > C1 THEN D2 = .3: D1 = 0
9610 Z = Z + C1: W = W + C2: KBD$ = INKEY$
9620 IF X + A > 600 OR X + A < 10 THEN A = 0: C1 = 0
9630 IF Y + B > 310 OR Y + B < 10 THEN B = 0: C2 = 0
9640 IF W < 0 OR Z < 0 THEN A = A * MSPD: B = B * MSPD: RETURN
9650 IF D$ = "R" THEN PUT (X + W, Y - Z), DR
9660 IF D$ = "L" THEN PUT (X + W, Y - Z), DL
9670 IF D$ = "U" THEN PUT (X + W, Y - Z), DU
9680 IF D$ = "D" THEN PUT (X + W, Y - Z), DD
9690 IF SND$ = "On" THEN SOUND ABS((Z + W) + 1) * 70, 1
9700 IF SND$ = "Off" THEN FOR L = 1 TO 300: NEXT L
9710 IF D$ = "R" THEN PUT (X + W, Y - Z), DR
9720 IF D$ = "L" THEN PUT (X + W, Y - Z), DL
9730 IF D$ = "U" THEN PUT (X + W, Y - Z), DU
9740 IF D$ = "D" THEN PUT (X + W, Y - Z), DD
9750 C1 = C1 - D1: C2 = C2 - D2
9760 X = X + A
9770 Y = Y + B
9780 GOTO 9610
9790 CLS : SCREEN 9: COLOR 8
9800 PALETTE 15, 0: PALETTE 1, 36: PALETTE 2, 4
9810 PRINT TAB(35); "INSTRUCTIONS": PRINT
9820 PRINT " SMOKE TRAILS:THE SMOKE TRAILS IN EV, FOR THE MOST PART, ERASE ABOUT THE SCREEN  LENGTH BEHIND THE CAR.  THERE ARE, HOWEVER OCCASIONS WHEN GWBASIC DOSEN'T ROUND A NUMBER PROPERLY AND YOU WILL SEE SMOKE THAT SHOOTS ACCROSS THE SCREEN.": PRINT
9830 PRINT " MENUS:ALL OF THE MEUNS IN EV CAN BE EXITED BY SIMPLY PRESSING ESCAPE.  EVEN     DURING THE GAME, YOU MAY PRESS ESCAPE AS A 'SELF DESTRUCT' BUTTON.  YOU MAY     ALSO PRESS ESCAPE AT THE MAIN MENU TO EXIT THE GAME.": PRINT
9840 PRINT " TRACKS:THE TRACKS ARE SET UP SO THAT YOU HAVE AS MANY LIVES AS YOU LIKE BUT     EACH TIME YOU DIE OR FAIL TO FINISH A TRACK IN THE GIVEN TIME, YOU MUST START   THE TRACK OVER AGAIN.  PRESS ESCAPE TO QUIT RACING.": PRINT
9850 PRINT " SKILL LEVEL:THE SKILL LEVEL AFFECTS MANY PARTS OF THE GAME.  IT CAUSES THE TIME METER TO RISE MORE QUICKLY, INCREASES DAMAGE GIVEN, AND LOWERS YOU'RE FINISHING POSITION.": PRINT
9860 PRINT " COLOR TRIGGERS:SOME OF THE TRACKS IN EV HAVE 'COLOR TRIGGERS'. THEY ARE COLORED ITEMS ON THE TRACK THAT WHEN YOU TOUCH THEM, MAKES SOMETHING HAPPEN."
9870 PRINT " BLUE (REVERSER):CAUSES YOU'RE VEHICLE TO REVERSE DIRECTION."
9880 PRINT " LIGHT BLUE (JUMPS):MAKES YOUR CAR JUMP.  SPEED AFFECTS JUMPING DISTANCE."
9890 PRINT " RED (FIREWALL):ADDS DAMAGE TO YOU'RE CAR."
9900 FOR L = 0 TO 640
9910 X(L) = RND * .3 + .75
9920 Y(L) = 0
9930 NEXT
9940 FOR L = 1 TO 700
9950 FOR X = 0 TO 640
9960 Y(X) = Y(X) + X(X)
9970 IF POINT(X, Y(X)) = 0 THEN PSET (X, Y(X)), INT(RND * 2 + 1)
9980 NEXT
9990 IF INKEY$ <> "" THEN GOTO 1130
10000 NEXT
10010 IF INKEY$ <> "" THEN GOTO 1130
10020 GOTO 10010
10030 CLS : SCREEN 9
10040 COLOR 15
10050 PALETTE 15, 0
10060 PALETTE 1, 32
10070 PRINT "SEE-YOU LATER!!!"
10080 FOR Y = 11 TO 0 STEP -1
10090 FOR X = 140 TO 0 STEP -1
10100 IF POINT(X, Y) = 15 THEN LINE (X + 5, Y + 12)-(X * 5 + 5, Y * 5 + 50), 1: CIRCLE (X * 5 + 5, Y * 5 + 50), 5, 4: CIRCLE (X * 5 + 5, Y * 5 + 50), 2, 4
10110 NEXT: NEXT
10120 LOCATE 10
10130 PALETTE 3, 36: PALETTE 2, 4
10140 A = (RND * 4 - 2) * 4
10150 B = (RND * 4 - 2) * 4
10160 X = RND * 640
10170 Y = RND * 200 + 150
10180 FOR L = 1 TO 1000 *(6-MSPD)
10190 CIRCLE (X, Y), 15, INT(RND * 2 + 2)
10200 X = X + A
10210 Y = Y + B
10220 IF X > 580 THEN A = A - .9
10230 IF X < 60 THEN A = A + .9
10240 IF Y > 280 THEN B = B - .9
10250 IF Y < 270 THEN B = B + .9
10260 NEXT
10270 CLS : SCREEN 0, 0, 0
10280 END
