10 DEFINT A-Z 20 DIM RE(25), CE(25), MV(25), VM(10), MC(25), CM(10) 30 KEY OFF : SCREEN 0 : WIDTH 40 :CLS 40 F = 1 50 RANDOMIZE CVI(MID$(TIME$,7,2)) 60 VM(1) = 1: VM(2) = 1: VM(3) = 1: VM(4) = 1: VM(5) = 2 70 VM(6) = 2: VM(7) = 2: VM(8) = 3: VM(9) = 3: VM(10) = 5 80 CM(1) = 25:CM(2) =25: CM(3) =25: CM(4) =25: CM(5)=157 90 CM(6) = 157: CM(7) =157: CM(8) = 15:CM(9)=15:CM(10) = 2 100 LOCATE 7,1 140 PRINT " Press 4 for 40 columns" 150 PRINT " Press 8 for 80 columns";:LOCATE ,,0 160 X$ = INKEY$ 170 IF X$ = "4" THEN GOSUB 1230 : GOTO 200 180 IF X$ = "8" THEN GOSUB 1390 : GOTO 200 181 IF X$ = "Q" THEN CLS :END 185 IF X$ = "r" THEN GOSUB 3000 190 GOTO 160 200 X$ = INKEY$ 210 IF X$ = "e" THEN MM=21 : LV=15 : SLV=2 : NE=25-2*F : GOTO 270 220 IF X$ = "m" THEN MM=21 : LV=10 : SLV=7 : NE=20-2*F : GOTO 270 230 IF X$ = "h" THEN MM=21 : LV=10 : SLV=10: NE=15-2*F : GOTO 270 240 IF X$ = "v" THEN MM=21 : LV=5 : SLV=15: NE=10-F : GOTO 270 250 IF X$ = "Q" THEN CLS : END 260 GOTO 200 270 CLS : LOCATE 12,28,0 : PRINT "G o o d L u c k !"; 275 HITS = 0: MISSES =0 280 FOR I = 1 TO 2000 : NEXT I 290 CLS 300 LOCATE 1,SC,0 :PRINT "SCORE 0"; 310 LOCATE 1,RM,0 :PRINT "REMAINING ";MM 320 IF SIZE = 40 THEN 370 330 S$ = " 11223344556677889900qqwweerrttyyuuiiooppaassddffgghhjjkkll;;zzxxccvvbbnnmm,,.." 340 LOCATE 25,1,0 : PRINT S$; 350 LOCATE 24,1,0 :PRINT " ";:FOR I = 1 TO 39 :PRINT CHR$(223);CHR$(223); :NEXT 360 GOTO 400 370 S$ = "1234567890qwertyuiopasdfghjkl;zxcvbnm,." 380 LOCATE 25,1,0 : PRINT S$; 390 LOCATE 24,1,0 : FOR I = 1 TO 39 : PRINT CHR$(223); :NEXT 400 OLDPOS = 20 :NEWPOS = 20 : GOSUB 930 410 FOR N = 1 TO NE : GOSUB 1050 :NEXT 420 NP = 1 430 REM 440 RN = RE(NP) + 1 : CN = CE(NP) 450 IF RN < 23 THEN LOCATE RN-1,CN,0 : PRINT " "; :LOCATE RN,CN,0 : PRINT CHR$(MC(NP)); : RE(NP) = RN : GOTO 480 460 LOCATE 22,CN,0 : PRINT " "; : N = NP 470 IF (CN = NEWPOS) OR (CN = NEWPOS+1) THEN GOSUB 1100:GOSUB 1050 ELSE GOSUB 1020 480 X$ = INKEY$ 490 IF X$ = "Q" THEN CLS :END 500 IF X$ ="1" THEN NEWPOS =1: GOSUB 930 510 IF X$ ="2" THEN NEWPOS =2: GOSUB 930 520 IF X$ ="3" THEN NEWPOS =3: GOSUB 930 530 IF X$ ="4" THEN NEWPOS =4: GOSUB 930 540 IF X$ ="5" THEN NEWPOS =5: GOSUB 930 550 IF X$ ="6" THEN NEWPOS =6: GOSUB 930 560 IF X$ ="7" THEN NEWPOS =7: GOSUB 930 570 IF X$ ="8" THEN NEWPOS =8: GOSUB 930 580 IF X$ ="9" THEN NEWPOS =9: GOSUB 930 590 IF X$ ="0" THEN NEWPOS =10: GOSUB 930 600 IF X$ ="q" THEN NEWPOS =11: GOSUB 930 610 IF X$ ="w" THEN NEWPOS =12: GOSUB 930 620 IF X$ ="e" THEN NEWPOS =13: GOSUB 930 630 IF X$ ="r" THEN NEWPOS =14: GOSUB 930 640 IF X$ ="t" THEN NEWPOS =15: GOSUB 930 650 IF X$ ="y" THEN NEWPOS =16: GOSUB 930 660 IF X$ ="u" THEN NEWPOS =17: GOSUB 930 670 IF X$ ="i" THEN NEWPOS =18: GOSUB 930 680 IF X$ ="o" THEN NEWPOS =19: GOSUB 930 690 IF X$ ="p" THEN NEWPOS =20: GOSUB 930 700 IF X$ ="a" THEN NEWPOS =21: GOSUB 930 710 IF X$ ="s" THEN NEWPOS =22: GOSUB 930 720 IF X$ ="d" THEN NEWPOS =23: GOSUB 930 730 IF X$ ="f" THEN NEWPOS =24: GOSUB 930 740 IF X$ ="g" THEN NEWPOS =25: GOSUB 930 750 IF X$ ="h" THEN NEWPOS =26: GOSUB 930 760 IF X$ ="j" THEN NEWPOS =27: GOSUB 930 770 IF X$ ="k" THEN NEWPOS =28: GOSUB 930 780 IF X$ ="l" THEN NEWPOS =29: GOSUB 930 790 IF X$ =";" THEN NEWPOS =30: GOSUB 930 800 IF X$ ="z" THEN NEWPOS =31: GOSUB 930 810 IF X$ ="x" THEN NEWPOS =32: GOSUB 930 820 IF X$ ="c" THEN NEWPOS =33: GOSUB 930 830 IF X$ ="v" THEN NEWPOS =34: GOSUB 930 840 IF X$ ="b" THEN NEWPOS =35: GOSUB 930 850 IF X$ ="n" THEN NEWPOS =36: GOSUB 930 860 IF X$ ="m" THEN NEWPOS =37: GOSUB 930 870 IF X$ ="," THEN NEWPOS =38: GOSUB 930 880 IF X$ ="." THEN NEWPOS =39: GOSUB 930 890 IF MISSES > MM THEN GOTO 1130 900 NP = NP + 1 : IF NP = NE THEN NP = 1 910 GOTO 430 920 REM 930 IF SIZE = 40 THEN 980 940 NEWPOS = 2*NEWPOS : LOCATE 23,OLDPOS,0:PRINT " "; 950 LOCATE 23,NEWPOS,0:PRINT CHR$(211);CHR$(189); 960 OLDPOS = NEWPOS 970 RETURN 980 LOCATE 23,OLDPOS,0 :PRINT " "; 990 LOCATE 23,NEWPOS,0 :PRINT CHR$(127); 1000 OLDPOS = NEWPOS 1010 RETURN 1020 SOUND 15000,1 :SOUND 10000,1 :SOUND 5000,1 1030 MISSES = MISSES + 1 1040 LOCATE 1,RM+11,0 : PRINT MM-MISSES+1; 1050 RE(N) = RND*LV + SLV : CE(N) = RND*RPOS + RS 1060 MT = RND*9 + 1 1070 MV(N) = VM(MT) : MC(N) = CM(MT) 1080 LOCATE RE(N),CE(N),0 :PRINT CHR$(MC(N)); 1090 RETURN 1100 SOUND 2000,1 : SOUND 1000,1 1110 HITS = HITS + MV(NP) : LOCATE 1,SC+6,0 : PRINT HITS; 1120 RETURN 1130 REM levels of achievement 1140 IF HITS < F*10 THEN FOR I = 370 TO 300 STEP -3: SOUND I,1 :NEXT :GOTO 1210 1150 IF HITS < F*60 THEN FOR I = -8 TO 10 STEP 1 : SOUND 420 + I*ABS(I),1 :NEXT :GOTO 1210 1160 IF HITS < F*100 THEN PLAY "o3cco2cc" :GOTO 1210 1170 IF HITS < F*150 THEN PLAY "o3msl4t210ceeemnl2c" :GOTO 1210 1180 IF HITS < F*200 THEN FOR I = 10000 TO 2700 STEP -53:SOUND I,1:NEXT I :GOTO 1210 1190 IF HITS < F*250 THEN PLAY "l2o4cdefgl4gggo5l1c":GOTO 1210 1200 IF HITS > F*250 THEN GOSUB 1620 1210 LOCATE 3,1,0 : INPUT "GAME OVER press return to continue ",X$ 1215 IF SIZE = 40 THEN GOSUB 1230 ELSE GOSUB 1390 1220 GOTO 200 1230 WIDTH 40 : CLS :PRINT 1240 SIZE = 40 : RPOS = 38 : SC = 1: RM = 20 : RS = 1 1250 PRINT " CATCH88" : PRINT 1260 PRINT "The object of the game is to catch 'em" 1270 PRINT " before they fall." 1280 PRINT 1290 PRINT : PRINT " ";CHR$(25);" is worth 1 point." 1300 PRINT " ";CHR$(157);" is worth 2 points." 1310 PRINT " ";CHR$(15);" is worth 3 points." 1320 PRINT " ";CHR$(2);" is worth 5 points." 1330 PRINT : PRINT : PRINT " A capital Q will stop the game." 1340 PRINT : PRINT 1350 PRINT " Choose a suitable level of play :" 1360 PRINT :PRINT 1370 PRINT "e(asy m(edium h(ard v(ery hard Q(uit "; 1380 RETURN 1390 WIDTH 80 : CLS : SIZE = 80 : RPOS = 77 : SC = 10 : RM = 50:RS = 2 1400 PRINT 1410 PRINT SPC(19) " [[[[ [[[ [[[[[ [[[[ [ [ [[[ [[[ " 1420 PRINT SPC(19) "[ [ [ [ [ [ [ [ [ [ [" 1430 PRINT SPC(19) "[ [ [ [ [ [ [ [ [ [ [" 1440 PRINT SPC(19) "[ [[[[[ [ [ [[[[[ [[[ [[[ " 1450 PRINT SPC(19) "[ [ [ [ [ [ [ [ [ [ [" 1460 PRINT SPC(19) "[ [ [ [ [ [ [ [ [ [ [" 1470 PRINT SPC(19) " [[[[ [ [ [ [[[[ [ [ [[[ [[[ " 1480 PRINT 1490 PRINT SPC(10) "The object of the game is to catch 'em before they fall." 1500 PRINT SPC(12) "Move the basket by pressing the correct letter key." 1510 PRINT 1520 PRINT : PRINT SPC(29) CHR$(25);" is worth 1 point." 1530 PRINT SPC(29) CHR$(157);" is worth 2 points." 1540 PRINT SPC(29) CHR$(15);" is worth 3 points." 1550 PRINT SPC(29) CHR$(2);" is worth 5 points." 1560 PRINT : PRINT : PRINT SPC(24) "A capital Q will stop the game." 1570 PRINT 1580 PRINT SPC(24) "Choose a suitable level of play :" 1590 PRINT :PRINT SPC(19) "e(asy m(edium h(ard v(ery hard Q(uit"; 1600 LOCATE 12,1,0 1610 RETURN 1620 CLS : PRINT :PRINT " I really did'nt think anyone was" 1630 PRINT "that fast. Rescaling ....":PRINT :PRINT:FOR I = 1 TO 2000:NEXT 1640 SOUND 37,180:FOR I = 1 TO 14000:NEXT:SOUND 37,0 1650 F = F*2 :PRINT "Next time you run this program," 1660 PRINT "press the letter r before you" 1670 PRINT "enter a 4 or 8. My very best luck." 1680 PRINT :PRINT " RKC" 1690 RETURN 3000 INPUT "Enter your factor number ",F 3001 IF F > 5 THEN PRINT "Be reasonable !" : GOTO 3000 3002 RETURN