'------------------------------------------------------------------ ' ANTHONY REICHEL ' COMPUTER PROGRAMMING I ' PERIOD 4 ' THE OHIO SMITH GAME(PROJECT FOR THE SECOND NINE WKS). '------------------------------------------------------------------ ' ** SETS THE ATTRIBUTES TO THE PROGRAM ** CLEAR , , 10000 SCREEN 7 COLOR 1, 0 PI = 4 * ATN(1) RANDOMIZE TIMER DEF FNCIRCLE.ROW (HIGH, LOW) = INT(RND * (HIGH - LOW) + LOW) DEF FNCIRCLE.COL (HIGH, LOW) = INT(RND * (HIGH - LOW) + LOW) ' ** CALLS THE SUBS TO THE GAME ** GOSUB FLASH.SCREEN GOSUB TITLE.TRANSITION GOSUB FLAG.MOVEMENT GOSUB EXIT.TITLE GOSUB QUESTION GOSUB GAME MAIN: GOSUB START.LINE GOSUB CHANGE.LIGHTS GOSUB SONG GOSUB QUESTION.START GOSUB PASS.BY GOSUB FIRST.TURN GOSUB TURN.QUESTION GOSUB OUT.TURN.QUESTION GOSUB SECOND.HALF GOSUB PIT.STOP GOSUB CATCH.UP GOSUB FINISH.LINE GOSUB SONG.2 GOSUB WON.GAME END FLASH.SCREEN: ' ** FLASHES DIFFERENT COLORS ** FOR BACKGROUND.LOOP = 1 TO 5 IF BACKGROUND.LOOP = 4 THEN BACKGROUND.COLOR = 2 IF BACKGROUND.LOOP = 2 THEN BACKGROUND.COLOR = 4 IF BACKGROUND.LOOP = 1 THEN BACKGROUND.COLOR = 15 IF BACKGROUND.LOOP = 3 THEN BACKGROUND.COLOR = 14 IF BACKGROUND.LOOP = 5 THEN BACKGROUND.COLOR = 0 PAINT (160, 100), BACKGROUND.COLOR FOR HOLD = 1 TO 40000 NEXT HOLD NEXT BACKGROUND.LOOP RETURN TITLE.TRANSITION: ' ** SETS THE SCREEN COLORS ** COLOR 1, 1 CLS ' ** TRANSITS "O" ** C1 = 4 C2 = 7 FOR H = 10 TO 180 C1 = 4 C2 = 7 GOSUB OHIO.O2 C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB OHIO.O2 NEXT H C1 = 4 C2 = 7 GOSUB OHIO.O2 ' ** TRANSITS "I" ** C1 = 4 C2 = 7 FOR H = 10 TO 180 C1 = 4 C2 = 7 GOSUB OHIO.I C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB OHIO.I NEXT H C1 = 4 C2 = 7 GOSUB OHIO.I ' ** TRANSITS "H" ** C1 = 4 C2 = 7 FOR H = 10 TO 180 C1 = 4 C2 = 7 GOSUB OHIO.H C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB OHIO.H NEXT H C1 = 4 C2 = 7 GOSUB OHIO.H ' ** TRANSITS "O" ** C1 = 4 C2 = 7 FOR H = 10 TO 180 C1 = 4 C2 = 7 GOSUB OHIO.O1 C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB OHIO.O1 NEXT H C1 = 4 C2 = 7 GOSUB OHIO.O1 ' ** TRANSITS "S" ** FOR H = 320 TO 80 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.S C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB SMITH.S NEXT H C1 = 4 C2 = 7 GOSUB SMITH.S ' ** TRANSITS "M" ** FOR H = 320 TO 80 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.M C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB SMITH.M NEXT H C1 = 4 C2 = 7 GOSUB SMITH.M ' ** TRANSITS "I" ** FOR H = 320 TO 80 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.I C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB SMITH.I NEXT H C1 = 4 C2 = 7 GOSUB SMITH.I ' ** TRANSITS "T" ** FOR H = 320 TO 80 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.T C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB SMITH.T NEXT H C1 = 4 C2 = 7 GOSUB SMITH.T ' ** TRANSITS "H" ** FOR H = 320 TO 80 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.H C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB SMITH.H NEXT H C1 = 4 C2 = 7 GOSUB SMITH.H FOR HOLD = 1 TO 2000 NEXT HOLD RETURN EXIT.TITLE: ' ** EXITS "OHIO" ** FOR H = 180 TO 500 C1 = 4 C2 = 7 GOSUB OHIO.O1 GOSUB OHIO.H GOSUB OHIO.I GOSUB OHIO.O2 C1 = 0 C2 = 0 FOR HOLD = 1 TO 50 NEXT HOLD GOSUB OHIO.O1 GOSUB OHIO.H GOSUB OHIO.I GOSUB OHIO.O2 NEXT H C1 = 4 C2 = 7 GOSUB OHIO.O1 GOSUB OHIO.H GOSUB OHIO.I GOSUB OHIO.O2 ' ** EXITS "SMITH" ** FOR H = 80 TO -220 STEP -1 C1 = 4 C2 = 7 GOSUB SMITH.S GOSUB SMITH.M GOSUB SMITH.I GOSUB SMITH.T GOSUB SMITH.H C1 = 0 C2 = 0 FOR HOLD = 1 TO 50 NEXT HOLD GOSUB SMITH.S GOSUB SMITH.M GOSUB SMITH.I GOSUB SMITH.T GOSUB SMITH.H NEXT H C1 = 4 C2 = 7 GOSUB SMITH.S GOSUB SMITH.M GOSUB SMITH.I GOSUB SMITH.T GOSUB SMITH.H CLS RETURN OHIO.O1: CIRCLE (H - 120, 40), 25, C1 PAINT (H - 120, 40), C1 CIRCLE (H - 120, 40), 10, C2 PAINT (H - 120, 40), C2 RETURN OHIO.H: LINE (H - 90, 20)-(H - 60, 60), C1, BF LINE (H - 80, 20)-(H - 70, 35), C2, BF LINE (H - 80, 45)-(H - 70, 60), C2, BF RETURN OHIO.I: LINE (H - 50, 20)-(H - 30, 60), C1, BF LINE (H - 50, 28)-(H - 45, 53), C2, BF LINE (H - 35, 28)-(H - 30, 53), C2, BF RETURN OHIO.O2: CIRCLE (H, 40), 25, C1 PAINT (H, 40), C1 CIRCLE (H, 40), 10, C2 PAINT (H, 40), C2 RETURN SMITH.S: LINE (H, 70)-(H + 30, 110), C1, BF LINE (H + 10, 77)-(H + 30, 85), C2, BF LINE (H, 95)-(H + 20, 102), C2, BF RETURN SMITH.M: LINE (H + 40, 70)-(H + 90, 110), C1, BF LINE (H + 50, 80)-(H + 59, 110), C2, BF LINE (H + 70, 80)-(H + 81, 110), C2, BF RETURN SMITH.I: LINE (H + 100, 70)-(H + 120, 110), C1, BF LINE (H + 100, 78)-(H + 105, 102), C2, BF LINE (H + 115, 78)-(H + 120, 102), C2, BF RETURN SMITH.T: LINE (H + 130, 70)-(H + 160, 110), C1, BF LINE (H + 130, 80)-(H + 139, 110), C2, BF LINE (H + 150, 80)-(H + 160, 110), C2, BF RETURN SMITH.H: LINE (H + 170, 70)-(H + 200, 110), C1, BF LINE (H + 180, 70)-(H + 190, 85), C2, BF LINE (H + 180, 95)-(H + 190, 110), C2, BF RETURN FLAG.MOVEMENT: FOR HOLD = 1 TO 100000 NEXT HOLD FOR H = 320 TO -55 STEP -1 C1 = 8 C2 = 15 GOSUB CHECKER.FLAG C1 = 0 C2 = 0 FOR HOLD = 1 TO 250 NEXT HOLD GOSUB CHECKER.FLAG NEXT H C1 = 8 C2 = 15 GOSUB CHECKER.FLAG ' ** REDRAWS THE TITLE ** LINE (0, 120)-(0, 160), 1 FOR HOLD = 1 TO 20000 NEXT HOLD RETURN CHECKER.FLAG: ' ** BLACK SQUARES ** LINE (H, 120)-(H + 50, 160), C1, BF ' ** POLE ** LINE (H, 120)-(H, 199), C1 ' ** WHITE SQUARES ** LINE (H, 120)-(H + 10, 130), C2, BF LINE (H + 20, 120)-(H + 30, 130), C2, BF LINE (H + 40, 120)-(H + 50, 130), C2, BF LINE (H + 10, 130)-(H + 20, 140), C2, BF LINE (H + 30, 130)-(H + 40, 140), C2, BF LINE (H, 140)-(H + 10, 150), C2, BF LINE (H + 20, 140)-(H + 30, 150), C2, BF LINE (H + 40, 140)-(H + 50, 150), C2, BF LINE (H + 10, 150)-(H + 20, 160), C2, BF LINE (H + 30, 150)-(H + 40, 160), C2, BF RETURN QUESTION: ' ** ASKS THE USER IF HE/SHE WANTS TO PLAY THE GAME ** CLS COLOR 2, 1 10 LOCATE 23 PRINT " DO YOU WISH" PRINT INPUT " TO PLAY THIS GAME (Y OR N)"; ANS$ IF UCASE$(ANS$) = "Y" THEN GOTO 20 IF UCASE$(ANS$) = "N" THEN GOSUB FINISH GOTO 10 20 RETURN FINISH: ' ** CONFIRMATION IF HE/SHE WANTS TO PLAY ** FOR BLINK = 1 TO 11 0 CLS LOCATE 2, 2 IF BLINK = 1 OR BLINK = 3 OR BLINK = 5 OR BLINK = 7 OR BLINK = 9 OR BLINK = 11 THEN C3 = 4 ELSE C3 = 0 COLOR C3 PRINT "C'MON, THIS IS THE LOWEST THAT YOU COULD EVER STOOP TO!" FOR HOLD = 1 TO 40000 NEXT HOLD NEXT BLINK COLOR 14 PRINT PRINT "ARE YOU SURE YOU WANT TO PUT BOTH OF US THROUGH THIS?" PRINT INPUT "CONTINUE, EVEN THOUGH I WARNED YOU"; ANS$ IF UCASE$(ANS$) = "Y" THEN GOTO 40 IF UCASE$(ANS$) = "N" THEN GOTO 30 GOTO 0 40 LINE (0, 120)-(320, 120), 15 COLOR 2 LOCATE 20, 1 PRINT "YOU DON'T KNOW..." FOR HOLD = 1 TO 3000 NEXT HOLD PRINT PRINT "WHAT YOUR MISSING OUT ON!" END 30 RETURN GAME: ' ** BLINKING "COMMENTOR'S EXCLAMATION" ** FOR BLINK = 1 TO 9 CLS COLOR 1, 4 LOCATE 2 IF BLINK = 1 OR BLINK = 3 OR BLINK = 5 OR BLINK = 7 OR BLINK = 9 THEN C3 = 1 ELSE C3 = 0 COLOR C3 PRINT " LADIES AND GENTLEMEN, START YOUR" PRINT PRINT " ENGINES!" FOR HOLD = 1 TO 35000 NEXT HOLD NEXT BLINK LINE (0, 40)-(320, 40), 1 LOCATE 7 COLOR 7 ' ** SITUATION OF THE GAME ** PRINT " YOU ARE OHIO SMITH, A WORLD RENOWN" PRINT PRINT " RACE CAR DRIVER WHO HAS BEEN ONCE" PRINT PRINT " AGAIN CALLED TO BE CHALLENGED AGAINST" PRINT PRINT " THE BEST IN THE WORLD AND TO SEE JUST" PRINT PRINT " WHO WILL EMERGE WITH BOTH THE TITLE" PRINT PRINT " AND THE TROPHY AND WHO WILL BE THE" PRINT PRINT " LOSER IN THIS GAME OF SPEED AND SKILL" PRINT PRINT " AT THE SPEEDWAY OF...." FOR HOLD = 1 TO 1200000 NEXT HOLD ' ** BLINKING "SPEEDWAY" ** FOR BLINK = 1 TO 9 LOCATE 23 IF BLINK = 1 OR BLINK = 3 OR BLINK = 5 OR BLINK = 7 OR BLINK = 9 THEN C3 = 1 ELSE C3 = 0 COLOR C3 PRINT " INDIANAPOLIS 500!" FOR HOLD = 1 TO 40000 NEXT HOLD NEXT BLINK ' ** SCROLL THE SCREEN ** FOR SCROLL = 1 TO 25 LOCATE 25 PRINT FOR HOLD = 1 TO 15000 NEXT HOLD NEXT SCROLL ' ** WARNING! ** CLS COLOR 14, 0 LOCATE 5 PRINT " ** WARNING! **" PRINT PRINT " THIS IS A GAME OF CHOICES/DECISIONS" PRINT PRINT " AND ONLY THE RIGHT DECISIONS WILL LEAD" PRINT PRINT " YOU TO THE TOP. IF YOU HAPPEN TO MAKE" PRINT PRINT " A WRONG DECISION, THEN THE CONSEQUENCE" PRINT PRINT " WILL LEAD TO YOUR DOWNFALL." ' ** ASKS THE USER IF HE/SHE WANTS TO PLAY THE GAME ** BEEP 50 LOCATE 22 PRINT " DO YOU STILL WISH" PRINT INPUT " TO PLAY THIS GAME (Y OR N)"; ANS$ IF UCASE$(ANS$) = "Y" THEN GOTO 60 IF UCASE$(ANS$) = "N" THEN GOSUB FINISH GOTO 50 60 RETURN START.LINE: COLOR 7, 0 CLS LOCATE 2 PRINT "....AT THE STARTING LINE!" ' ** DRAWS THE BACKGROUND ** LINE (0, 20)-(320, 20), 2 LINE (0, 80)-(320, 80), 2 LINE (155, 80)-(80, 200), 2 LINE (160, 80)-(240, 200), 2 PAINT (310, 160), 2 PAINT (160, 70), 9, 2 LINE (0, 20)-(320, 20), 15 PAINT (10, 160), 8, 2 LINE (0, 80)-(320, 80), 8 LINE (155, 80)-(80, 200), 8 ' ** CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(150, 1) ROW.CIRCLE = FNCIRCLE.ROW(80, 25) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 15 THEN COLOR.CIRCLE = 1 IF COLOR.CIRCLE = 8 THEN COLOR.CIRCLE = 9 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 5, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** RECOLORING ** LINE (0, 20)-(320, 20), 8 LINE (0, 20)-(155, 80), 8 PAINT (160, 40), 9, 8 LINE (0, 20)-(320, 20), 15 LINE (0, 20)-(155, 80), 8 ' ** INSTRUMENT PANEL ** COLOR 14 LOCATE 21, 13 PRINT "GAS" H1 = 110: V1 = 185: H2 = 120: V2 = 182 '* FUEL * ' ** THE CARS ** Y1 = 287: Y2 = 191 'YOUR CAR Y3 = 286: Y4 = 191 Y5 = 287: Y6 = 190 Y7 = 286: Y8 = 190 E1 = 288: E2 = 193 'ENEMY CAR #1 E3 = 287: E4 = 193 E5 = 288: E6 = 192 E7 = 287: E8 = 192 E9 = 289: E10 = 191 'ENEMY CAR #2 E11 = 290: E12 = 191 E13 = 289: E14 = 190 E15 = 290: E16 = 190 E17 = 290: E18 = 193 'ENEMY CAR #3 E19 = 291: E20 = 193 E21 = 290: E22 = 192 E23 = 291: E24 = 192 E25 = 292: E26 = 191 'ENEMY CAR #4 E27 = 293: E28 = 191 E29 = 292: E30 = 190 E31 = 293: E32 = 190 GOSUB INSTR.PANEL ' ** DRAWS THE STOPLIGHT ** LINE (105, 50)-(205, 70), 0, BF LINE (130, 21)-(135, 50), 0, BF LINE (170, 21)-(175, 50), 0, BF CIRCLE (120, 60), 9, 7 PAINT (120, 60), 7 CIRCLE (142, 60), 9, 7 PAINT (142, 60), 7 CIRCLE (164, 60), 9, 7 PAINT (164, 60), 7 CIRCLE (186, 60), 9, 7 PAINT (186, 60), 7 RETURN CHANGE.LIGHTS: ' ** STARTS THE STOPLIGHTS ** FOR HOLD = 1 TO 200000 NEXT HOLD COLOR 7 PAINT (160, 10), 0, 15 ' ** RED STOPLIGHTS ** LOCATE 2 PRINT "....READY"; CIRCLE (120, 60), 9, 15 PAINT (120, 60), 0, 15 PAINT (120, 60), 4, 15 FOR HOLD = 1 TO 100000 NEXT HOLD PRINT "....SET"; CIRCLE (142, 60), 9, 15 PAINT (142, 60), 0, 15 PAINT (142, 60), 4, 15 FOR HOLD = 1 TO 100000 NEXT HOLD PRINT "....GO"; CIRCLE (164, 60), 9, 15 PAINT (164, 60), 0, 15 PAINT (164, 60), 4, 15 FOR HOLD = 1 TO 100000 NEXT HOLD ' ** GREEN STOPLIGHT ** PRINT "....NOW!" CIRCLE (186, 60), 9, 15 PAINT (186, 60), 0, 15 PAINT (186, 60), 2, 15 RETURN QUESTION.START: ' ** FIRST DECISION ** FOR HOLD = 1 TO 200000 NEXT HOLD PAINT (1, 1), 0, 15 70 LOCATE 1 PRINT "SOMEONE IS TRYING TO PASS YOU," INPUT " DO YOU WANT TO CUT THEM OFF(Y OR N)"; ANS$ IF UCASE$(ANS$) = "Y" THEN GOSUB DEAD IF UCASE$(ANS$) = "N" THEN GOTO 80 GOTO 70 80 RETURN DEAD: ' ** WRONG DECISION = BAD CONSEQUENCE ** COLOR 4, 0 CLS ' ** THE WALL ** LINE (0, 80)-(320, 120), 7, BF LINE (50, 90)-(70, 110), 0 LINE (70, 90)-(50, 110), 0 ' ** THE CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(320, 1) ROW.CIRCLE = FNCIRCLE.ROW(70, 1) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 16 THEN COLOR.CIRCLE = 1 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 10, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** THE SPEEDWAY ** CIRCLE (160, 200), 120, 2, 0, PI, .2 LINE (80, 200)-(240, 200), 2 PAINT (160, 190), 2 ' ** THE RACECAR ** CIRCLE (160, 150), 80, 1, 0, PI, .3 ' * BODY * LINE (80, 150)-(240, 150), 1 PAINT (160, 149), 1 CIRCLE (110, 150), 20, 0 ' * WHEELS * LINE (90, 150)-(130, 150), 0 PAINT (110, 149), 0 CIRCLE (200, 150), 15, 0 LINE (185, 150)-(215, 150), 0 PAINT (200, 149), 0 LINE (80, 150)-(82, 120), 4, BF ' * TAIL * LINE (100, 115)-(110, 125), 1, BF LINE (65, 120)-(105, 121), 15, BF LINE (60, 115)-(70, 125), 1, BF CIRCLE (120, 180), 20, 8 ' * TIRES * PAINT (120, 180), 8 CIRCLE (120, 180), 10, 7 PAINT (120, 180), 7 CIRCLE (300, 150), 10, 8 PAINT (300, 150), 8 CIRCLE (300, 150), 4, 7 PAINT (300, 150), 7 FOR ROW = 130 TO 100 STEP -12 ' * SMOKING ENGINE * COL = 230 CIRCLE (COL, ROW), 10, 8 PAINT (COL, ROW), 8 NEXT ROW ' ** "PLAY AGAIN" QUESTION ** 90 LOCATE 24 INPUT " DO YOU WANT TO PLAY AGAIN(Y OR N)"; ANS$ IF UCASE$(ANS$) = "Y" THEN GOSUB MAIN IF UCASE$(ANS$) = "N" THEN END GOTO 90 RETURN PASS.BY: COLOR 7, 0 CLS LOCATE 2 PRINT "....HE PASSES BY...." ' ** DRAWS THE BACKGROUND ** LINE (0, 20)-(320, 20), 2 LINE (0, 80)-(320, 80), 2 LINE (155, 80)-(80, 200), 2 LINE (160, 80)-(240, 200), 2 PAINT (310, 160), 2 PAINT (160, 70), 9, 2 LINE (0, 20)-(320, 20), 15 PAINT (10, 160), 8, 2 LINE (0, 80)-(320, 80), 8 LINE (155, 80)-(80, 200), 8 ' ** CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(150, 1) ROW.CIRCLE = FNCIRCLE.ROW(80, 25) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 15 THEN COLOR.CIRCLE = 1 IF COLOR.CIRCLE = 8 THEN COLOR.CIRCLE = 9 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 5, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** RECOLORING ** LINE (0, 20)-(320, 20), 8 LINE (0, 20)-(155, 80), 8 PAINT (160, 40), 9, 8 LINE (0, 20)-(320, 20), 15 LINE (0, 20)-(155, 80), 8 ' ** INSTRUMENT PANEL ** COLOR 14 LOCATE 21, 13 PRINT "GAS" H1 = 110: V1 = 185: H2 = 120: V2 = 182 '* FUEL * ' ** THE CARS ** Y1 = 287: Y2 = 191 'YOUR CAR Y3 = 286: Y4 = 191 Y5 = 287: Y6 = 190 Y7 = 286: Y8 = 190 E1 = 280: E2 = 191 'ENEMY CAR #1 E3 = 279: E4 = 191 E5 = 280: E6 = 192 E7 = 279: E8 = 192 E9 = 289: E10 = 191 'ENEMY CAR #2 E11 = 290: E12 = 191 E13 = 289: E14 = 190 E15 = 290: E16 = 190 E17 = 290: E18 = 193 'ENEMY CAR #3 E19 = 291: E20 = 193 E21 = 290: E22 = 192 E23 = 291: E24 = 192 E25 = 292: E26 = 191 'ENEMY CAR #4 E27 = 293: E28 = 191 E29 = 292: E30 = 190 E31 = 293: E32 = 190 GOSUB INSTR.PANEL FOR HOLD = 1 TO 200000 NEXT HOLD ' ** PASSING OF CAR ** H = 10 FOR V = 20 TO -25 STEP -1 C = 1 GOSUB PASSING.RACECAR FOR HOLD = 1 TO 1000 NEXT HOLD C = 0 GOSUB PASSING.RACECAR H = H + .15 NEXT V FOR HOLD = 1 TO 1000 NEXT HOLD RETURN PASSING.RACECAR: LINE (130 + H, 130 + V)-(150 + H, 135 + V), 4 * C, BF LINE (150 + H, 128 + V)-(155 + H, 138 + V), 8 * C, BF LINE (125 + H, 128 + V)-(130 + H, 138 + V), 8 * C, BF LINE (140 + H, 130 + V)-(140 + H, 125 + V), 15 * C LINE (135 + H, 125 + V)-(145 + H, 125 + V), 1 * C RETURN FIRST.TURN: ' ** FIRST TURN OF THE LAP 1 ** COLOR 7, 0 CLS LOCATE 2 PRINT "....GOING INTO THE FIRST TURN...." ' ** DRAWS THE BACKGROUND ** LINE (0, 20)-(325, 20), 8 LINE (0, 80)-(325, 80), 8 LINE (170, 95)-(220, 200), 8 LINE (140, 90)-(100, 200), 8 LINE (100, 200)-(220, 200), 8 ' ** THE CURVE OF THE BEND ** CIRCLE (155, 94), 15, 8, PI / 2, PI, .9 LINE (155, 80)-(185, 80), 8 CIRCLE (185, 94), 15, 8, PI / 2, PI, .9 ' ** BACKGROUND (CONT.) ** PAINT (310, 180), 2, 8 PAINT (160, 70), 9, 8 LINE (0, 80)-(325, 80), 8 LINE (0, 20)-(325, 20), 15 PAINT (10, 180), 8 CIRCLE (185, 94), 15, 2, PI / 2, PI, .9 LINE (170, 95)-(220, 200), 2 ' ** CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(150, 1) ROW.CIRCLE = FNCIRCLE.ROW(80, 25) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 15 THEN COLOR.CIRCLE = 1 IF COLOR.CIRCLE = 8 THEN COLOR.CIRCLE = 9 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 5, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** RECOLORING ** LINE (0, 20)-(320, 20), 8 LINE (0, 20)-(155, 80), 8 PAINT (160, 40), 9, 8 LINE (0, 20)-(320, 20), 15 LINE (0, 20)-(155, 80), 8 ' ** INSTRUMENT PANEL ** COLOR 14 LOCATE 21, 13 PRINT "GAS" H1 = 110: V1 = 185: H2 = 113.5: V2 = 177 '* FUEL * ' ** THE CARS ** Y1 = 274: Y2 = 191 'YOUR CAR Y3 = 275: Y4 = 191 Y5 = 274: Y6 = 190 Y7 = 275: Y8 = 190 E1 = 261: E2 = 189 'ENEMY CAR #1 E3 = 262: E4 = 189 E5 = 261: E6 = 188 E7 = 262: E8 = 188 E9 = 285: E10 = 191 'ENEMY CAR #2 E11 = 286: E12 = 191 E13 = 285: E14 = 190 E15 = 286: E16 = 190 E17 = 282: E18 = 193 'ENEMY CAR #3 E19 = 283: E20 = 193 E21 = 282: E22 = 192 E23 = 283: E24 = 192 E25 = 292: E26 = 191 'ENEMY CAR #4 E27 = 293: E28 = 191 E29 = 292: E30 = 190 E31 = 293: E32 = 190 GOSUB INSTR.PANEL ' ** CLOUDS PASSING BY ** GOSUB CLOUD.PASS RETURN TURN.QUESTION: ' ** THE FIRST TURN QUESTION ** FOR HOLD = 1 TO 200000 NEXT HOLD COLOR 7 100 LOCATE 1 PRINT " YOU ARE HEADING INTO THE FIRST TURN," INPUT " DO YOU WANT TO SLOW DOWN(Y OR N)"; ANS$ IF UCASE$(ANS$) = "N" THEN GOSUB DEAD IF UCASE$(ANS$) = "Y" THEN GOTO 110 GOTO 100 110 RETURN OUT.TURN.QUESTION: COLOR 7, 0 CLS LOCATE 2 PRINT "....COMING OUT OF THE FIRST TURN...." ' ** DRAWS THE BACKGROUND ** LINE (0, 20)-(325, 20), 8 LINE (0, 80)-(325, 80), 8 LINE (170, 95)-(190, 160), 8 LINE (140, 90)-(110, 160), 8 LINE (100, 200)-(220, 200), 8 ' ** THE CURVE OF THE TOP BEND ** CIRCLE (155, 94), 15, 8, PI / 2, PI, .9 LINE (155, 80)-(185, 80), 8 CIRCLE (185, 94), 15, 8, PI / 2, PI, .9 ' ** THE CURVE OF THE BOTTOM BEND ** CIRCLE (155, 160), 45, 8, PI, PI * 1.5, .9 LINE (155, 80)-(185, 80), 8 CIRCLE (230, 160), 40, 8, PI, PI * 1.5, 1 ' ** BACKGROUND (CONT.) ** PAINT (310, 180), 2, 8 PAINT (160, 70), 9, 8 LINE (0, 80)-(325, 80), 8 LINE (0, 20)-(325, 20), 15 PAINT (10, 180), 8 CIRCLE (185, 94), 15, 2, PI / 2, PI, .9 LINE (170, 95)-(190, 160), 2 CIRCLE (230, 160), 40, 2, PI, PI * 1.5, 1 ' ** CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(150, 1) ROW.CIRCLE = FNCIRCLE.ROW(80, 25) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 15 THEN COLOR.CIRCLE = 1 IF COLOR.CIRCLE = 8 THEN COLOR.CIRCLE = 9 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 5, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** RECOLORING ** LINE (0, 20)-(320, 20), 8 LINE (0, 20)-(155, 80), 8 PAINT (160, 40), 9, 8 LINE (0, 20)-(320, 20), 15 LINE (0, 20)-(155, 80), 8 ' ** INSTRUMENT PANEL ** COLOR 14 LOCATE 21, 13 PRINT "GAS" H1 = 110: V1 = 185: H2 = 105: V2 = 177 '* FUEL * ' ** THE CARS ** Y1 = 261: Y2 = 185 'YOUR CAR Y3 = 262: Y4 = 185 Y5 = 261: Y6 = 186 Y7 = 262: Y8 = 186 E1 = 278: E2 = 177 'ENEMY CAR #1 E3 = 279: E4 = 177 E5 = 278: E6 = 176 E7 = 279: E8 = 176 E9 = 259: E10 = 180 'ENEMY CAR #2 E11 = 260: E12 = 180 E13 = 259: E14 = 181 E15 = 260: E16 = 181 E17 = 270: E18 = 193 'ENEMY CAR #3 E19 = 271: E20 = 193 E21 = 270: E22 = 192 E23 = 271: E24 = 192 E25 = 282: E26 = 191 'ENEMY CAR #4 E27 = 283: E28 = 191 E29 = 282: E30 = 190 E31 = 283: E32 = 190 GOSUB INSTR.PANEL ' ** CLOUDS PASSING BY ** GOSUB CLOUD.PASS FOR HOLD = 1 TO 200000 NEXT HOLD ' ** PASSING OF 2ND CAR ** H = 21 FOR V = 20 TO -20 STEP -1 C = 1 GOSUB PASSING.RACECAR2 FOR HOLD = 1 TO 1000 NEXT HOLD C = 0 GOSUB PASSING.RACECAR2 H = H + -.1 NEXT V ' ** COMMENTOR EXCLAMATION ** PAINT (160, 10), 0, 15 COLOR 7 LOCATE 2 PRINT "....ANOTHER RACECAR PASSES YOU!...." RETURN PASSING.RACECAR2: LINE (130 + H, 130 + V)-(150 + H, 135 + V), 1 * C, BF LINE (150 + H, 128 + V)-(155 + H, 138 + V), 8 * C, BF LINE (125 + H, 128 + V)-(130 + H, 138 + V), 8 * C, BF LINE (140 + H, 130 + V)-(140 + H, 125 + V), 4 * C LINE (135 + H, 125 + V)-(145 + H, 125 + V), 15 * C RETURN SECOND.HALF: FOR HOLD = 1 TO 200000 NEXT HOLD CLS ' ** DRAWS THE BACKGROUND ** LINE (0, 20)-(320, 20), 8 LINE (0, 80)-(320, 80), 8 LINE (155, 80)-(110, 160), 8 LINE (160, 80)-(190, 160), 8 ' ** THE CURVE OF THE BOTTOM BEND ** CIRCLE (155, 160), 45, 8, PI, PI * 1.5, .9 LINE (155, 80)-(185, 80), 8 CIRCLE (230, 160), 40, 8, PI, PI * 1.5, 1 ' ** BACKGROUND CON'T. ** PAINT (310, 160), 2, 8 PAINT (160, 70), 9, 8 PAINT (10, 120), 8 LINE (0, 20)-(320, 20), 15 LINE (160, 80)-(190, 160), 2 CIRCLE (230, 160), 40, 2, PI, PI * 1.5, 1 LINE (0, 80)-(320, 80), 8 ' ** SHOWS THE SECOND CAR IN THE NEW SCENE ** C = 1 V = -20 H = 11.9 GOSUB PASSING.RACECAR2 ' ** THE PIT AREA FOR REFUELING ** CIRCLE (145, 140), 65, 14, PI * 1.76, PI * .41 CIRCLE (145, 140), 45, 14, PI * 1.89, PI * .3 LINE (163, 88)-(171, 110), 14 LINE (187, 152)-(193, 178), 14 PAINT (193, 152), 0, 14 ' ** RECOLORING ** 'CIRCLE (145, 140), 65, 2, PI * 1.76, PI * .41 'CIRCLE (145, 140), 45, 2, PI * 1.89, PI * .3 LINE (163, 88)-(171, 110), 0 LINE (187, 152)-(193, 178), 0 ' ** CROWD ** COLOR.CIRCLE = 0 FOR PEOPLE = 1 TO 300 COL.CIRCLE = FNCIRCLE.COL(150, 1) ROW.CIRCLE = FNCIRCLE.ROW(80, 25) COLOR.CIRCLE = COLOR.CIRCLE + 1 IF COLOR.CIRCLE = 15 THEN COLOR.CIRCLE = 1 IF COLOR.CIRCLE = 8 THEN COLOR.CIRCLE = 9 CIRCLE (COL.CIRCLE, ROW.CIRCLE), 5, COLOR.CIRCLE PAINT (COL.CIRCLE, ROW.CIRCLE), COLOR.CIRCLE NEXT PEOPLE ' ** RECOLORING ** LINE (0, 20)-(320, 20), 8 LINE (0, 20)-(155, 80), 8 PAINT (160, 40), 9, 8 LINE (0, 20)-(320, 20), 15 LINE (0, 20)-(155, 80), 8 ' ** INSTRUMENT PANEL ** H1 = 110: V1 = 185: H2 = 100: V2 = 183 '* FUEL * '@ ' ** THE CARS ** Y1 = 273: Y2 = 177 'YOUR CAR Y3 = 272: Y4 = 177 Y5 = 273: Y6 = 176 Y7 = 272: Y8 = 176 E1 = 280: E2 = 177 'ENEMY CAR #1 E3 = 281: E4 = 177 E5 = 280: E6 = 176 E7 = 281: E8 = 176 E9 = 310: E10 = 180 'ENEMY CAR #2 E11 = 309: E12 = 180 E13 = 310: E14 = 179 E15 = 309: E16 = 179 E17 = 260: E18 = 180 'ENEMY CAR #3 E19 = 259: E20 = 180 E21 = 260: E22 = 181 E23 = 259: E24 = 181 E25 = 264: E26 = 188 'ENEMY CAR #4 E27 = 263: E28 = 188 E29 = 264: E30 = 189 E31 = 263: E32 = 189 GOSUB INSTR.PANEL ' ** CLOUDS PASSING BY ** GOSUB CLOUD.PASS ' ** WARNING: NO FUEL LEFT! ** C = 14 FOR BLINK = 1 TO 9 COLOR C LOCATE 21, 13 PRINT "GAS" FOR HOLD = 1 TO 30000 NEXT HOLD IF C = 14 THEN C = 0: GOTO 200 IF C = 0 THEN C = 14 200 NEXT BLINK COLOR 1 FOR HOLD = 1 TO 100000 NEXT HOLD ' ** REFUEL QUESTION ** PAINT (160, 10), 0, 15 COLOR 7 150 LOCATE 1 PRINT "YOU CATCH UP, BUT YOU NEED MORE FUEL!" INPUT "DO YOU WANT TO GET MORE FUEL(Y OR N)"; ANS$ IF UCASE$(ANS$) = "N" THEN GOSUB DEAD IF UCASE$(ANS$) = "Y" THEN GOTO 160 GOTO 150 160 RETURN INSTR.PANEL: ' ** THE PANEL BACKGROUND LINE (0, 170)-(320, 170), 15 'PANEL LINE (250, 170)-(250, 210), 15 'TRACK PAINT (160, 180), 4, 15 ' ** THE INSTRUMENT GAUGES ** CIRCLE (20, 185), 15, 7, 0, PI CIRCLE (60, 185), 15, 7, 0, PI CIRCLE (110, 185), 15, 7, 0, PI CIRCLE (150, 185), 15, 7, 0, PI CIRCLE (190, 185), 15, 7, 0, PI CIRCLE (230, 185), 15, 7, 0, PI PSET (20, 185), 7 PSET (60, 185), 7 PSET (110, 185), 7 PSET (150, 185), 7 PSET (190, 185), 7 PSET (230, 185), 7 LINE (5, 186)-(35, 186), 7 LINE (45, 186)-(75, 186), 7 LINE (95, 186)-(125, 186), 7 LINE (135, 186)-(165, 186), 7 LINE (175, 186)-(205, 186), 7 LINE (215, 186)-(245, 186), 7 PAINT (20, 182), 0, 7 'REPAINT GAUGES PAINT (60, 182), 0, 7 PAINT (110, 182), 0, 7 PAINT (150, 182), 0, 7 PAINT (190, 182), 0, 7 PAINT (230, 182), 0, 7 LINE (20, 185)-(15, 177), 7 'INDICATORS LINE (60, 185)-(70, 180), 7 LINE (H1, V1)-(H2, V2), 7 LINE (150, 185)-(145, 177), 7 LINE (190, 185)-(192, 177), 7 LINE (230, 185)-(235, 177), 7 COLOR 14 'LABELS LOCATE 21, 2 PRINT "RPM" LOCATE 21, 7 PRINT "MPH" LOCATE 21, 18.5 PRINT "OIL" LOCATE 21, 22.6 PRINT "BATT." LOCATE 21, 29 PRINT "TEMP." ' ** THE TRACK AND CAR POSITIONS ** CIRCLE (284, 184), 22, 8, PI * .8, PI * 1.2, .4 'TRACK CIRCLE (286, 184), 22, 8, PI * 1.8, PI * .2, .4 LINE (267, 178)-(303, 178), 8 LINE (267, 190)-(303, 190), 8 CIRCLE (289, 184), 32, 8, PI * .75, PI * 1.25, .4 CIRCLE (282, 184), 32, 8, PI * 1.75, PI * .25, .4 LINE (268, 175)-(304, 175), 8 LINE (268, 193)-(304, 193), 8 PAINT (270, 192), 8 LINE (0, 170)-(320, 170), 8 'REPAINT OUTSIDE OF TRACK LINE (250, 170)-(250, 210), 8 PAINT (251, 171), 0, 8 LINE (0, 170)-(320, 170), 15 LINE (250, 170)-(250, 210), 15 LINE (285, 190)-(285, 193), 15 'FINISH/START LINE ' ** THE CARS ** PSET (Y1, Y2), 14 'YOUR CAR PSET (Y3, Y4), 14 PSET (Y5, Y6), 14 PSET (Y7, Y8), 14 PSET (E1, E2), 4 'ENEMY CAR #1 PSET (E3, E4), 4 PSET (E5, E6), 4 PSET (E7, E8), 4 PSET (E9, E10), 4 'ENEMY CAR #2 PSET (E11, E12), 4 PSET (E13, E14), 4 PSET (E15, E16), 4 PSET (E17, E18), 4 'ENEMY CAR #3 PSET (E19, E20), 4 PSET (E21, E22), 4 PSET (E23, E24), 4 PSET (E25, E26), 4 'ENEMY CAR #4 PSET (E27, E28), 4 PSET (E29, E30), 4 PSET (E31, E32), 4 RETURN SONG: ' ** SONG (DURING RACING!) ** PLAY "MB" PLAY "L16 F F F8 F F F8 F F B-8 >C8 D8 F3