1 REM *** BBC VERSION *** 2 REM *** GRAND PRIX *** 10 MODE 7:VDU 23;8202;0;0;0; 20 *FX11,0 30 VDU 23,224,0,110,132,252,252,132,110,0 40 VDU 23,225,40,108,240,58,223,76,24,8 50 VDU 23,226,60,90,90,24,90,126,90,0 60 VDU 23,227,20,54,15,92,251,50,24,16 70 VDU 23,228,0,118,33,63,63,33,118,0 80 VDU 23,229,16,24,50,251,92,15,54,20 90 VDU 23,230,0,90,126,90,24,90,90,60 100 VDU 23,231,8,24,76,223,58,240,108,40 110 VDU 23,232,60,66,189,165,165,189,66,60 120 DIM b$(2),i(2),i$(2):FOR f=0 TO 2:b$(f )="DEMON DRIVER":i(f)=0:NEXT 130 GOSUB 570 140 CLS 150 INPUT "Enter skill (1-good to 4-bad) "; sk:IF sk<1 OR sk>4 THEN GOTO 140 160 INPUT "How many laps? ";laps:IF laps<1 THEN GOTO 160 170 INPUT "1-Hard to 2-Easy circuit? ";ci:I F ci<>1 AND ci<>2 THEN GOTO 170 180 MODE 1:VDU23;8202;0;0;0;19,1,7,0,0,0,19 ,2,7,0,0,0,19,0,4,0,0,0,19,3,4,0,0,0:COLOUR 1 190 GOSUB 650 200 TIME=0:PRINT TAB(17,2)"READY":SOUND 1,- 15,100,4:REPEAT UNTIL TIME=100:PRINT TAB(17,2 )"STEADY ":SOUND 1,-15,100,4:REPEAT UNTIL TIM E=200:PRINT TAB(17,2)"GO ":SOUND 1,-15,10 0,2:REPEAT UNTIL TIME=300:PRINT TAB(17,2)" " 210 IF INKEY(-49) THEN g=1:SOUND 1,-15,200, 1 220 IF INKEY(-50) THEN g=2:SOUND 1,-15,200, 1 230 to=po-(INKEY(-67) AND po<151)+(INKEY(-9 8) AND po>144) 240 IF INKEY(-67) AND po=151 THEN to=to-7 E LSE IF INKEY(-98) AND po=144 THEN to=to+7 250 po=to:IF x<5 THEN c=1 260 FOR f=1 TO g 270 y=y+(po>144 AND po<148)-(po>148):x=x+ (po<146 OR po=151)-(po>146 AND po<150) 280 IF FNscreen(x,y)=232 OR FNscreen(x,y) =136 THEN y=y1:x=x1:SOUND 1,-15,70,1:po=INT(R ND(7))+144 290 GCOL 0,0:PROCover(x1,y1,po1):GCOL 0,1 :PROCover(x,y,po) 300 y1=y:x1=x:po1=po 310 IFy=11 AND x>27 AND c=1 THEN SOUND 1, -15,100,1:l1=l1+1:PRINT TAB(10,0);l1:c=0:IF l 1=laps+1 THEN GOTO 410 320 NEXT f 330 cy=cy+(cpo>144 AND cpo<148)-(cpo>148):c x=cx+(cpo<146 OR cpo=151)-(cpo>146 AND cpo<15 0) 340 IF FNscreen(cx,cy)=232 OR FNscreen(cx,c y)=136 THEN SOUND 1,-15,50,1:cy=cy1:cx=cx1:cp o=cpo1 360 IF cy=13 AND cx=30 THEN RESTORE 810 370 GCOL0,0:PROCover(cx1,cy1,cpo1):GCOL 0,1 :PROCover(cx,cy,cpo) 380 cy1=cy:cx1=cx:cpo1=cpo 390 IF cy=11 AND cx=30 THEN l2=l2+1:SOUND 1 ,-15,100,1:PRINT TAB(30,0);l2:IF l2 =laps+1 T HEN GOTO 410 400 GOTO 210 410 FOR f=0 TO 255 STEP 5:SOUND 1,-12,f,1:T IME=0:REPEAT UNTIL TIME>4:NEXT f 420 *FX15,1 430 MODE 7:VDU 23;8202;0;0;0; 440 sc=40/ci+60/sk 450 IF cy=11 AND cx=30 THEN sc=-sc 460 sc=sc+(l1-l2)*2 470 IF sc<0 THEN PRINT TAB(0,2);"Bad luck! you were beaten." 480 IF sc>0 THEN PRINT TAB(0,2);"Well done! you were the winner." 490 PRINT "Your score is ";sc 500 IF sc<i(2) THEN GOTO 550 510 PRINT TAB(0,5);"Your score is good enou gh to be included in the top scores. Please e nter your name.":INPUT n$:IF LEN(n$)>15 TH EN GOTO 510 520 IF sc>i(0) THEN i(2)=i(1):i(1)=i(0):i(0 )=sc:b$(2)=b$(1):b$(1)=b$(0):b$(0)=n$:GOTO 55 0 530 IF sc>i(1) THEN i(2)=i(1):i(1)=sc:b$(2) =b$(1):b$(1)=n$:GOTO 550 540 i(2)=sc:b$(2)=n$ 550 PRINT '"These are the best scores:":FOR f=0 TO 2:PRINT 'f+1;"...";b$(f);TAB(30);i(f) :NEXT f 560 PRINT TAB(6,24);CHR$(136);"Press any ke y to play again.";:IF INKEY$(100)="" THEN GOT O 560 ELSE GOTO 140 570 PRINT CHR$(141);CHR$(129);" GRAND PRI X - BY PAUL STANLEY - "'CHR$(141);CHR$(132);" GRAND PRIX - BY PAUL STANLEY - " 580 PRINT TAB(0,4);" Steer your car around the race- track and try to be at a car drive n by the computer." 590 PRINT'CHR$(130);" Turn left with. ......Z"'';CHR$(131);" Turn right with.. ....X"''" You can select gears with 1(slow) a nd 2(fast). The computer will stay in firsta t all times. If you crash you will restar t in a random"; 600 PRINT" direction, so you must sort yo urself out as fast as possible." 610 PRINT'CHR$(134);" Your car is the one on the left." 620 PRINT TAB(6,24);CHR$(136);" PRESS ANY K EY TO START."; 630 IF INKEY$(1000)="" THEN GOTO 630 640 RETURN 650 VDU 28,4,31,35,5:PRINT TAB(0,1); 660 i$(0)=" iiiiiiiiiiiiiiiiiiiiiiiiiiii ii ii ii iii iiiiiii ii ii i ii ii ii i ii ii iiiiiiiiii i ii i" 670 i$(1)="i i i i i i i i i ii i i i i iii i iii i i i iiiiii i i i i i i i i i i i i i i iiiiii i i i i i i" 680 i$(2)="ii i i i ii ii i i i i i iiiii ii iiiiii i i ii i i ii i i iii ii ii ii iiiiiiiiiiiiii ii iiiiiiiiiii" 690 FORA%=0 TO 2:FOR B%=1 TO LEN(i$(A%)):IF MID$(i$(A%),B%,1)="i" THEN PRINT CHR$(232); ELSE PRINT CHR$(32); 700 NEXT:NEXT 710 PRINT TAB(27,11);" " 720 IF ci=1 THEN PRINT TAB(6,3);CHR$232;CHR $232;TAB(5,4);CHR$232;CHR$232;TAB(2,8);CHR$23 2;TAB(2,9);CHR$232;CHR$232;TAB(3,17);CHR$232; TAB(3,18);CHR$232;TAB(18,8);CHR$232;TAB(28,13 );CHR$232; 730 DATA 3,9,3,24,6,5,6,6,7,4,8,4,9,5,9,6,9 ,15,9,16,9,30,11,8,11,18,12,12,13,8,14,30,15, 5,15,6,15,18,16,4,17,4,17,12,17,20,17,27,18,5 ,18,11 740 DATA 3,8,3,25,6,4,6,5,7,3,8,3,8,30,9,4, 9,5,9,16,9,17,10,18,12,8,12,13,13,8,13,18,13, 30,15,5,15,6,16,4,16,13,17,4,17,22,17,26,18,5 ,18,11 750 DATA 2,12,2,26,5,3,5,9,6,30,7,1,7,17,7, 18,8,19,9,1,10,2,10,7,10,14,12,9,15,9,15,30,1 6,3,16,8,16,14,16,19,17,2,18,2,19,3,19,11,20, 23,20,25 760 DATA 2,6,2,27,4,2,4,4,5,1,5,30,7,16,7,1 8,9,20,9,1,9,14,10,2,10,7,13,10,14,10,16,30,1 6,3,16,8,17,14,17,20,18,1,19,1,19,22,19,27,20 ,2,20,11 770 RESTORE (620+(sk*10)) 780 COLOUR 3:FOR l=1 TO 26:READ y,x:PRINT T AB(x,y);"-";:NEXT l:COLOUR 1 790 RESTORE 810 800 I=-1 810 DATA l,l,7,-7,7,l,l,l,-l,-l,-l,-7,7,l,l ,l,l,l,-l,-l,-l,-l,l,l,l,l,l 820 po=146:cpo=146:y=10:x=28:cy=y:cx=30:y1= y:x1=x:po1=po:cy1=cy:cx1=cx:cpo1=cpo:l1=1:l2= l1:g=1:c=0 830 GCOL 0,1:PROCover(x,y,po):PROCover(x+2, y,cpo) 840 PRINT TAB(0,0);"YOUR LAPS:";l1;" COMP UTER'S LAPS:";l2 850 RETURN 860 DEF FNscreen(X%,Y%) 870 VDU 31,X%,Y%:A%=135:C=USR(&FFF4):C=C AN D &FFFF:C=C DIV &100 880 =C 890 DEF PROCover(X%,Y%,C%) 900 VDU5:GCOL 3,1 910 A%=(32+(X%*8))*4 920 B%=1023-(40+(Y%*8))*4 930 MOVE A%,B%:PRINT CHR$(C%+80); 940 VDU4 950 ENDPROC