99 REM Amstrad Simon 1/8/84 David & Brian Lewis
100 GOSUB 700 110 GOSUB 500 199 REM Input guesses & process them 200 PEN 6:CLS:LOCATE 2,2:PRINT "ENTER ":PRINT " YOUR ":PRINT " GUESS" 210 GOSUB 1200:GOSUB 1100 220 FOR n=1 TO length 230 IF (INKEY(up)=off AND INKEY(down)=off AND INKEY(left)=off AND INKEY(right)=off) THEN 230 240 IF INKEY(up)=press THEN answer=1 250 IF INKEY(down)=press THEN answer=4 260 IF INKEY(left)=press THEN answer=2 270 IF INKEY(right)=press THEN answer=3 280 INK answer,colour(answer):SOUND 1,note(answer),999,7 290 IF (INKEY(up)=press OR INKEY(down)=press OR INKEY(left)=press OR INKEY(right)=press) THEN 290 300 INK answer,9:SOUND 129,0 310 IF answer<>box(n) THEN 400 320 NEXT n 330 IF length<20 THEN 110 339 REM Won game !! 340 PEN 8:CLS:LOCATE 1,3:PRINT "PERFECT":PRINT:PRINT "ANSWER" 350 FOR l=1 TO 5:FOR m=0 TO 26 360 FOR n=1 TO 5:INK n,m+n::NEXT n:SOUND 1,m*9.8:SOUND 2,255-m*9.8 370 NEXT m,l 380 FOR n=1 TO 4:INK n,9:NEXT n 390 INK 5,0:GOSUB 1200:GOSUB 890:GOTO 110 399 REM Wrong answer & correct sequence 400 PEN 7:CLS:LOCATE 2,2:PRINT "WRONG":RESTORE 1410 410 IF length=1 THEN praise$=" SILLY":GOTO 450 420 FOR n=0 TO length/3-1 430 READ praise$ 440 NEXT n 450 PEN 6:LOCATE 1,5:PRINT praise$:LOCATE 2,6:PRINT "SCORE":GOSUB 1200 460 PEN 6:CLS:LOCATE 1,3:PRINT "CORRECT":PRINT "PATTERN" 470 GOSUB 530:GOSUB 1200:GOSUB 890:GOTO 110 499 REM Play sequence 500 PEN 6:CLS:LOCATE 1,2:PRINT "FOLLOW ":PRINT " THIS ":PRINT "PATTERN" 510 length=length+1:box(length)=RND(1)*3+1 520 GOSUB 1200:GOSUB 1100 530 FOR n=1 TO length 540 number=box(n) 550 SOUND 1,note(number),999,7:INK number,colour(number) 560 FOR pause=1 TO level*100:NEXT pause 570 SOUND 129,0:INK number,9 580 FOR pause=1 TO level*10:NEXT pause 590 NEXT n 600 RETURN 699 REM Initialisation & key definitions 700 DEFINT a-z 710 DIM box(20),note(4),colour(4) 720 FOR n=1 TO 4 730 READ colour(n),note(n) 740 NEXT n 750 MODE 0 760 BORDER 0:INK 0,0:CLS 770 WINDOW #1,7,13,1,8 780 WINDOW #2,1,6,9,17 790 WINDOW #3,14,20,9,17 800 WINDOW #4,7,13,18,25 810 WINDOW #5,7,13,9,17 820 FOR n=1 TO 5 830 INK n,9:PAPER #n,n:CLS #n 840 NEXT 850 INK 5,0:INK 6,4:INK 7,8:INK 8,26 860 WINDOW SWAP 5 870 PLOT 0,127,8:DRAW 639,127:DRAW 639,272:DRAW 0,272:DRAW 0,127 880 PLOT 190,399:DRAW 416,399:DRAW 416,0:DRAW 190,0:DRAW 190,399 890 PEN 6:CLS:GOSUB 1300:LOCATE 2,2:PRINT "PRESS":LOCATE 3,6:PRINT "OR" 900 PEN 7:LOCATE 2,4:PRINT "COPY":LOCATE 2,8:PRINT "FIRE" 910 RANDOMIZE TIME:length=0:fire=76:copy=9:off=-1:press=0 920 IF (INKEY(fire)=off AND INKEY(copy)=off) THEN 920 930 IF INKEY(fire)=press THEN ok$="FIRE":ok=fire:up=72:down=73:left=74:right=75 ELSE ok$="COPY":ok=copy:up=0:down=2:left=8:right=1 940 PEN 6:CLS:LOCATE 2,4:PRINT "LEVEL":level=10 950 PEN 7:GOSUB 1300:LOCATE 2,8:PRINT ok$:PRINT "UP,DOWN" 960 WHILE INKEY(ok)=off 970 IF INKEY(up)=press THEN level=level+1:IF level>99 THEN level=99 980 IF INKEY(down)=press THEN level=level-1:IF level<1 THEN level=1 990 PEN 7:LOCATE 2,5:PRINT level 1000 WEND 1010 RETURN 1099 REM Title screen 1100 CLS:PEN 7 1110 LOCATE 1,4:PRINT "AMSTRAD" 1120 LOCATE 2,6:PRINT "SIMON" 1130 RETURN 1199 REM Proceed routine & score 1200 GOSUB 1300 1210 PEN 7:LOCATE 2,8:PRINT ok$ 1220 PEN 9:LOCATE 2,9:PRINT length; 1230 IF INKEY(ok)=off THEN 1230 1240 RETURN 1299 REM Fingers off ! 1300 IF INKEY(ok)=press THEN 1300 1310 RETURN 1399 REM Colours, sounds & ratings 1400 DATA 24,100,6,300,2,500,19,700 1410 DATA " POOR"," SO-SO","AVERAGE"," GOOD","V. GOOD"," SUBERB"," ACE" |