1 ' Dropout
2 ' by Paul Robson 3 ' Amstrad Action March 88 10 GOSUB 890 20 GOSUB 800 30 dir=246:a=2:b=4:t=0 40 PEN 12:LOCATE 16,23:PRINT c$(lev) 50 LOCATE 6,1:PEN 4:PRINT USING":###";beat 60 '* HOLES,BALL 70 FOR f=4 TO 17 80 IF lev=1 THEN r%=RND*9+6 ELSE r%=RND*17+2 90 IF f=4 AND r%=2 THEN 80 100 LOCATE r%,f:PRINT" " 110 x(r%,f)=1 120 NEXT 130 bv=3:IF lev=1 THEN bh%=RND*7+7 ELSE bh%=RND*15+3 140 LOCATE bh%,bv:PEN 4:PRINT "à" 150 '* MAIN LOOP 160 WHILE bv<17 170 PEN 1:LOCATE a,b:PRINT b$;CHR$(dir);a$ 180 IF INKEY(74)=0 THEN z=-1:dir=247 190 IF INKEY(75)=0 THEN z=1:dir=246 200 IF z=-1 AND a>3 AND x(a-1,b)<>2 OR z=1 AND a<18 AND x(a+1,b)<>2 THEN GOSUB 660:z=0 210 IF z=-1 AND a=3 OR z=1 AND a=18 THEN i=1:GOSUB 660:a=a+z:IF x(a,b)=1 THEN x(a,b)=0:x(ABS(a-21),b)=1:LOCATE ABS(a-21),b:GOSUB 740:z=0 ELSE GOSUB 750:z=0 220 IF z=-1 AND a=2 OR z=1 AND a=19 THEN i=1:GOSUB 660:a=ABS(a-21):GOSUB 750:GOSUB 690:z=0 230 IF INKEY(72)=0 AND x(a,b-1)=0 AND b>4 THEN y=-1:i=1:GOSUB 750:b=b+y:GOSUB 770 240 IF INKEY(73)=0 AND x(a,b+1)=0 AND b<17 THEN y=1:i=1:GOSUB 750:b=b+y:GOSUB 770 250 IF x(bh%,bv+1)=1 THEN GOSUB 600:x(bh%,bv)=2:IF bv<17 AND x(bh%,bv+1)=0 THEN SOUND 4,bv*50,0,1,1,1 260 IF INKEY(67)=0 THEN 520 270 t=t+1:PEN 4:LOCATE 16,1:PRINT USING":###";t:SOUND 1,t,3,7 280 IF t>899 THEN 450 290 WEND 300 '* DROP BALL-DOWN 310 WHILE x(bh%,bv+1)=0 320 IF bv=25 THEN 430 330 GOSUB 600 340 WEND 350 SOUND 4,bv*50,0,1,1,1 360 '* DROP BALL-DIAG. 370 IF bh%<10 THEN z=1:e=11 ELSE z=-1:e=10 380 WHILE bh%<>e:set=1 390 IF bv=25 THEN 430 400 GOSUB 600 410 WEND 420 '* END+SCORE 430 set=0:SOUND 4,4000,0,1,1,1 440 LOCATE 10,25:PRINT SPC(2) 450 IF t>=beat THEN 520 460 beat=t 470 FOR f=40 TO 1 STEP -1 480 SOUND 4,f*10,6,7 490 LOCATE 16,1:PEN 4:PRINT t 500 LOCATE 16,1:PEN 3:PRINT t 510 NEXT 520 GOSUB 800 530 '* CLEAR X 540 FOR f=2 TO 19:FOR g=4 TO 17 550 x(f,g)=0:NEXT:NEXT 560 '* CLS+NEW SCREEN 570 CALL &A804 580 CALL &A7F8:GOTO 30 590 :'* DROP BALL 600 LOCATE bh%,bv:PRINT" " 610 bv=bv+1 620 IF set=1 THEN bh%=bh%+z 630 PEN 4:LOCATE bh%,bv:PRINT"à" 640 RETURN 650 '* DELETE ARROW 660 PEN b-2:LOCATE a,b:PRINT CHR$(143) 670 IF i=1 THEN i=0:RETURN 680 a=a+z 690 IF x(a,b)=1 THEN GOSUB 720 700 RETURN 710 '* REPRINT HOLE+ARROW 720 x(a,b)=0:x(a+z,b)=1 730 LOCATE a+z,b 740 PRINT " " 750 LOCATE a,b:PEN b-2:PRINT CHR$(143) 760 IF i=1 THEN i=0:RETURN 770 LOCATE a,b:PEN 1:PRINT b$;CHR$(dir);a$ 780 RETURN 790 '* START NEW GAME 800 LOCATE 2,23:PEN 12:PRINT"Level":IF st=0 THEN lev=1:beat=250:LOCATE 16,23:PRINT c$(1) 810 IF INKEY(64)=0 THEN lev=1:beat=250 820 IF INKEY(65)=0 THEN lev=2:beat=500 830 PEN 12:LOCATE 16,23:PRINT c$(lev);"?" 840 PEN 4:LOCATE 2,25:PRINT"PRESS":LOCATE 14,25:PRINT CHR$(167);"FIRE'" 850 IF INKEY(76)=-1 THEN 810 860 IF st=0 THEN st=1:LOCATE 2,25:PRINT SPC(5):LOCATE 14,25:PRINT SPC(6):GOSUB 1240:LOCATE 19,23:PRINT" " 870 RETURN 880 '* INKS,SCREEN,M/C 890 a$=CHR$(22)+CHR$(0):b$=CHR$(22)+CHR$(1):c$(1)=CHR$(24)+"1"+CHR$(24)+"/2":c$(2)="1/"+CHR$(24)+"2"+CHR$(24) 900 DIM x(20,26) 910 MODE 0:INK 0,0:BORDER 0:INK 1,0:INK 5,15:INK 13,24:INK 14,26:INK 15,15 920 ENV 1,10,-1,10:ENT 1,50,4,1 930 IF HIMEM<>&3FFF THEN SYMBOL AFTER 64:SYMBOL 64,0,24,60,126,126,126,60,24 940 LOCATE 2,2:PEN 6:PRINT STRING$(19,207) 950 LOCATE 1,2:PRINT CHR$(222):LOCATE 20,2:PRINT CHR$(223) 960 FOR f=3 TO 17 970 LOCATE 1,f:PRINT CHR$(207) 980 LOCATE 20,f:PRINT CHR$(207) 990 NEXT 1000 LOCATE 1,18:PRINT CHR$(221):LOCATE 20,18:PRINT CHR$(220) 1010 LOCATE 2,18:PRINT STRING$(2,207):LOCATE 18,18:PRINT STRING$(2,207) 1020 lft=3:rgt=18 1030 FOR f=18 TO 24 1040 x(lft,f)=1 1050 LOCATE lft,f:PRINT CHR$(223):LOCATE lft,f+1:PRINT CHR$(221) 1060 x(rgt,f)=1 1070 LOCATE rgt,f:PRINT CHR$(222):LOCATE rgt,f+1:PRINT CHR$(220) 1080 lft=lft+1:rgt=rgt-1 1090 NEXT 1100 LOCATE 9,25:PRINT CHR$(207):LOCATE 12,25:PRINT CHR$(207) 1110 p=2:FOR f=4 TO 17 1120 LOCATE 2,f:PEN p 1130 PRINT STRING$(18,143):p=p+1 1140 NEXT 1150 GOSUB 1240 1160 LOCATE 2,1:PEN 13:PRINT"BEAT";SPC(6);"TIME" 1170 MEMORY &3FFF:RESTORE 1200 1180 FOR f=&A7F8 TO &A811 1190 READ d$:POKE f,VAL("&"+d$):NEXT 1200 DATA 21,0,C0,11,0,40,1,0,40,ED,B0,C9,21 1205 DATA 0,C0,11,1,C0,1,FF,3F,36,0,ED,B0,C9 1210 CALL &A7F8 1220 POKE &A7FA,&40:POKE &A7FD,&C0 1230 RETURN 1240 LOCATE 2,23:PEN 5:PRINT CHR$(24);"Q";CHR$(24);"uit " 1250 RETURN |