10 REM Discman's Revenge
20 REM By D.L.Lau 30 REM(c)Computing with the Amstrad 40 SYMBOL AFTER 33 50 SYMBOL 38,66,153,86,60,153,86,60:SYMBOL 145,0,24,24,24,24,24,24,24 60 SYMBOL 35,255,129,129,129,129,129,129,255 70 SYMBOL 64,24,60,126,90,126,255,255,213:SYMBOL 91,62,254,247,31,31,255,126,62:SYMBOL 93,62,127,239,248,248,255,126,62 80 SYMBOL 123,100,102,103,255,223,255,126,62:SYMBOL 125,62,126,255,223,255,231,102,100 90 SYMBOL 169,255,129,129,129,129,129,129,255:SYMBOL 170,255,24,24,24,24,24,24,255:SYMBOL 171,171,137,4,80,22,161,132,55 100 DEFINT a-z 110 ENV 1,100,2,5:ENT 1,100,-2,4:ENV 2,50,4,3:ENT 2,50,-2,2:ENT -3,50,30,2 120 ENT 4,239,-2,10:ENV 4,23,4,4:ENV 5,30,2,2:ENV 6,15,-1,4 130 DIM m(20,24),a(2),b(2),dr(2),u(20,24) 140 n$="AMSTRAD":GOTO 1530 150 REM ******** initialise ******** 160 FOR f=1 TO 25:LOCATE 1,25:PRINT CHR$(10):SOUND 1,f*7,1,5:NEXT: MODE 0:li=3:gk=0:pl=0 170 FOR f=1 TO 20:FOR g=4 TO 23:m(f,g)=0:NEXT:NEXT 180 REM ******** set screen ******** 190 ON screen GOSUB 2570,2760,2920,3080,3250 200 FOR f=3 TO 17 STEP 2:m(f,3)=4:NEXT 210 GOSUB 220:GOTO 280 220 LOCATE 1,1:PEN 10:PRINT STRING$(20,CHR$(143)):LOCATE 1,2:PRINT STRING$(20,CHR$(143)):LOCATE 1,3:PRINT STRING$(20,CHR$(143)) 230 PRINT CHR$(22)+CHR$(1):LOCATE 1,1:PEN 9:PRINT STRING$(20,CHR$(169)):LOCATE 1,2:PRINT STRING$(20,CHR$(170)) 240 FOR f=1 TO 20 :LOCATE f,3:PRINT CHR$(169):NEXT 250 PRINT CHR$(22)+CHR$(0):FOR f=3 TO 18 STEP 2:PEN 4:LOCATE f,3:PRINT CHR$(42):NEXT 260 RETURN 270 REM ******** print screen ****** 280 PRINT CHR$(22)+CHR$(1) 290 FOR f=1 TO 20:FOR g=4 TO 23:IF m(f,g)=2 THEN PEN 2:LOCATE f,g:PRINT CHR$(143):PEN 5:LOCATE f,g:PRINT CHR$(233):GOTO 310 300 IF m(f,g)=1 THEN PEN 1:LOCATE f,g:PRINT CHR$(38):PEN 6:LOCATE f,g:PRINT CHR$(145) 310 NEXT:NEXT 320 REM ********** start game ****** 330 PRINT CHR$(22)+CHR$(0):do=1:LOCATE 10,23:PEN 14:PRINT CHR$(231):m(10,23)=3:ch%=0 340 LOCATE 3,1:PEN 2:PRINT"GHOSTS KILLED 0" 350 PEN 12:LOCATE 1,25:PRINT"HI":LOCATE 9,25:PRINT "SC":LOCATE 1,24:PEN 1:PRINT STRING$(20,"-") 360 LOCATE 4,25:PEN 3:PRINT hi:LOCATE 12,25:PRINT sc:LOCATE 2,2 370 pu=0:dp=1:PEN 12:LOCATE 17,25:PRINT STRING$(li,"]") 380 a(1)=2:b(1)=10:a(2)=19:b(2)=10:dr(1)=2:dr(2)=4 390 x=10:y=22:LOCATE x,y:PEN 1:PRINT"é":LOCATE a(1),b(1):PEN 8:PRINT"à":LOCATE a(2),b(2):PEN 8:PRINT"à" 400 IF INKEY(36)=0 OR JOY(0) AND 8 THEN GOSUB 570 410 ON pu GOSUB 1730,1850,1960,2080 420 IF INKEY(37)=0 OR JOY(0) AND 4 THEN GOSUB 660:GOTO 450 430 IF INKEY(69)=0 OR JOY(0) AND 1 THEN GOSUB 740:GOTO 450 440 IF INKEY(71)=0 OR JOY(0) AND 2 THEN GOSUB 820 450 ON pu GOSUB 1730,1850,1960,2080 460 IF (INKEY(47)=0 OR JOY(0)AND 16) AND pu=0 THEN ON dp GOSUB 1680,1770,1900,2010 470 in=INT(RND*6):p=1:ON dr(p) GOSUB 900,1070,1260,1400 480 IF INT(RND*350)=2 THEN h=INT(RND*20)+1:i=INT(RND*20)+4:IF m(h,i)=1 OR (h=x AND y=i) THEN 490 ELSE SOUND 1,250,60,5,5:m(h,i)=2:LOCATE h,i:PEN 2:PRINT CHR$(143):PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE h,i:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0) 490 IF INKEY(36)=0 OR JOY(0) AND 8 THEN GOSUB 570 500 ON pu GOSUB 1730,1850,1960,2080 510 IF INKEY(37)=0 OR JOY(0) AND 4 THEN GOSUB 660:GOTO 540 520 IF INKEY(69)=0 OR JOY(0) AND 1 THEN GOSUB 740:GOTO 540 530 IF INKEY(71)=0 OR JOY(0) AND 2 THEN GOSUB 820 540 ON pu GOSUB 1730,1850,1960,2080 550 in=INT(RND*5):p=2:ON dr(p) GOSUB 900,1070,1260,1400 560 GOTO 400 570 REM ******* pac right ********** 580 LOCATE x,y:PEN 1:PRINT"]":dp=2 590 IF x=20 THEN RETURN 600 IF m(x+1,y)=2 THEN RETURN 610 IF m(x+1,y)=1 THEN 2230 620 IF x+1=a(1) AND y=b(1) THEN 2230 630 IF x+1=a(2) AND y=b(2) THEN 2230 640 IF x+1=10 AND y=23 AND do=1 THEN SOUND 4,286,45,0,4,4:INK 1,24,22:do=0 650 x=x+1:LOCATE x-1,y:PRINT" ]":RETURN 660 REM ******** pac left ********** 670 LOCATE x,y:PEN 1:PRINT"[":dp=4:IF x=1 THEN RETURN 680 IF m(x-1,y)=2 THEN RETURN 690 IF m(x-1,y)=1 THEN 2230 700 IF x-1=a(1) AND y=b(1) THEN 2230 710 IF x-1=a(2) AND y=b(2) THEN 2230 720 IF x-1=10 AND y=23 AND do=1 THEN SOUND 4,286,45,0,4,4:INK 1,24,22:do=0 730 x=x-1:LOCATE x,y:PRINT"[ ":RETURN 740 REM ********* man up ************ 750 LOCATE x,y:PEN 1:PRINT"é":dp=1 760 IF m(x,y-1)=4 AND do=0 THEN SOUND 1,164,150,1,2,2:PEN 14:LOCATE x,y-1:PRINT CHR$(231):LOCATE 10,23:PRINT CHR$(231):INK 1,24:do=1:pl=pl+1:PEN 3:m(x,y-1)=0:sc=sc+10:LOCATE 12,25:PRINT sc:IF pl=8 AND gk>4 THEN 2500 770 IF y=4 OR m(x,y-1)=2 THEN RETURN 780 IF x=a(1) AND y-1=b(1) THEN 2220 790 IF x=a(2) AND y-1=b(2) THEN 2220 800 IF m(x,y-1)=1 THEN 2220 810 y=y-1:LOCATE x,y+1:PRINT" ":LOCATE x,y:PEN 1:PRINT"é":RETURN 820 REM ********** man down ******** 830 LOCATE x,y:PEN 1:PRINT"è":dp=3:IF y=23 THEN RETURN 840 IF m(x,y+1)=2 THEN RETURN 850 IF m(x,y+1)=1 THEN 2220 860 IF x=a(1) AND y+1=b(1) THEN 2220 870 IF x=a(2) AND y+1=b(2) THEN 2220 880 IF x=10 AND y+1=23 AND do=1 THEN SOUND 4,286,45,0,4,4:INK 1,24,22:do=0 890 y=y+1:LOCATE x,y-1:PRINT" ":LOCATE x,y:PEN 1:PRINT"è":RETURN 900 REM ******** ghost up ********** 910 IF b(p)=4 OR in=1 THEN 1000 920 IF m(a(p),b(p)-1)=1 THEN 1000 930 IF a(p)=x AND b(p)-1=y THEN 2220 940 IF a(p)=p1 AND b(p)-1=p2 AND pu<>0 THEN LOCATE a(p),b(p)-1:PRINT" ":m(a(p),b(p)-1)=0:GOTO 2300 950 LOCATE a(p),b(p) 960 IF m(a(p),b(p))=2 THEN PEN 2:PRINTCHR$(143):PRINTCHR$(22)+CHR$(1):PEN 5:LOCATE a(p),b(p):PRINTCHR$(233):PRINTCHR$(22)+CHR$(0):GOTO 980 970 PRINT" " 980 b(p)=b(p)-1:LOCATE a(p),b(p):PEN 8:PRINT"à":RETURN 990 REM **** turn left or right **** 1000 IF a(p)>1 THEN 1020 1010 IF m(a(p)+1,b(p))=1 THEN dr(p)=3:RETURN ELSE dr(p)=2:RETURN 1020 IF a(p)<20 THEN 1040 1030 IF m(a(p)-1,b(p))=1 THEN dr(p)=3:RETURN ELSE dr(p)=4:RETURN 1040 IF m(a(p)+1,b(p))<>1 AND x>a(p) THEN dr(p)=2:RETURN 1050 IF m(a(p)-1,b(p))<>1 THEN dr(p)=4 ELSE dr(p)=2 1060 RETURN 1070 REM ******* ghost right ******** 1080 IF in=1 OR a(p)=20 THEN 1180 1090 IF m(a(p)+1,b(p))=1 THEN 1180 1100 IF a(p)+1=10 AND b(p)=23 THEN 1180 1110 IF a(p)+1=x AND b(p)=y THEN 2220 1120 IF a(p)+1=p1 AND b(p)=p2 AND pu<>0 THEN LOCATE a(p)+1,b(p):PRINT" ":m(a(p)+1,b(p))=0:GOTO 2300 1130 LOCATE a(p),b(p) 1140 IF m(a(p),b(p))=2 THEN PEN 2:PRINT CHR$(143):PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE a(p),b(p):PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):GOTO 1160 1150 PRINT" " 1160 a(p)=a(p)+1:LOCATE a(p),b(p):PEN 8:PRINT"à":RETURN 1170 REM ** move ghost up or down ** 1180 IF b(p)>4 THEN 1200 1190 IF m(a(p),b(p)+1)=1 THEN dr(p)=4:RETURN ELSE dr(p)=3:RETURN 1200 IF b(p)<23 THEN 1220 1210 IF m(a(p),b(p)-1)=1 THEN dr(p)=4:RETURN ELSE dr(p)=1:RETURN 1220 IF m(a(p),b(p)-1)<>1 AND b(p)>y THEN dr(p)=1:RETURN 1230 IF m(a(p),b(p)+1)<>1 THEN dr(p)=3:RETURN ELSE dr(p)=1:RETURN 1240 RETURN 1250 REM ****** ghost down ********* 1260 IF b(p)=23 OR in=1 THEN 1350 1270 IF m(a(p),b(p)+1)=1 THEN 1350 1280 IF a(p)=10 AND b(p)+1=23 THEN 1350 1290 IF a(p)=x AND b(p)+1=y THEN 2220 1300 IF a(p)=p1 AND b(p)+1=p2 AND pu<>0 THEN LOCATE a(p),b(p)+1:PRINT" ":m(a(p),b(p)+1)=0:GOTO 2300 1310 LOCATE a(p),b(p) 1320 IF m(a(p),b(p))=2 THEN PEN 2:PRINT CHR$(143):PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE a(p),b(p):PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):GOTO 1340 1330 PRINT" " 1340 b(p)=b(p)+1:LOCATE a(p),b(p):PEN 8:PRINT"à":RETURN 1350 IF a(p)>1 THEN 1370 1360 IF m(a(p)-1,b(p))=1 THEN dr(p)=1:RETURN ELSE dr(p)=2:RETURN 1370 IF a(p)<20 THEN 1040 1380 IF m(a(p)-1,b(p))=1 THEN dr(p)=1:RETURN ELSE dr(p)=4:RETURN 1390 REM ****** ghost left ********* 1400 IF in=1 OR a(p)=1 THEN 1490 1410 IF m(a(p)-1,b(p))=1 THEN 1490 1420 IF a(p)-1=10 AND b(p)=23 THEN 1490 1430 IF a(p)-1=x AND b(p)=y THEN 2220 1440 IF a(p)-1=p1 AND b(p)=p2 AND pu<>0 THEN LOCATE a(p)-1,b(p):PRINT" ":m(a(p)-1,b(p))=0:GOTO 2300 1450 LOCATE a(p),b(p) 1460 IF m(a(p),b(p))=2 THEN PEN 2:PRINT CHR$(143):PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE a(p),b(p):PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):GOTO 1480 1470 PRINT" " 1480 a(p)=a(p)-1:LOCATE a(p),b(p):PEN 8:PRINT"à":RETURN 1490 IF b(p)>4 THEN 1510 1500 IF m(a(p),b(p)+1)=1 THEN dr(p)=2:RETURN ELSE dr(p)=3:RETURN 1510 IF b(p)<23 THEN 1230 1520 IF m(a(p),b(p)-1)=1 THEN dr(p)=2:GOTO 1230 ELSE dr(p)=1:RETURN 1530 REM ******** title *********** 1540 INK 1,24:INK 2,20:INK 3,6:INK 4,18:INK 5,26:INK 8,18:INK 6,2:INK 0,3:BORDER 10:MODE 0:INK 10,15:INK 9,13 1550 LOCATE 1,3:PEN 1:PRINT" DISCMAN'S REVENGE" 1560 sc=0 1570 screen=1 1580 PEN 4:PRINT:PRINT:PRINT:PRINT" A-Up Z-Down":PRINT:PRINT" K-Left L-Right" 1590 PRINT:PEN 5:PRINT:PRINT" Spacebar to kick":PEN 6:PRINT:PRINT:PRINT" or use a joystick" 1600 PEN 7:PRINT:PRINT:PRINT"Press a key . . ." 1610 FOR f=1 TO 20:a$=INKEY$:NEXT 1620 FOR F=1 TO 19:IF INKEY$<>"" THEN 1670 1630 PEN 2:LOCATE f,24:PRINTCHR$(231);:PEN 10:PRINT"]":FOR g=1 TO 50:NEXT:NEXT 1640 FOR f=19 TO 1 STEP -1:IF INKEY$<>""THEN 1670 1650 LOCATE f,24:PRINT"[ ":FOR g=1 TO 50:NEXT:NEXT 1660 GOTO 1620 1670 PRINT:PRINT:PEN 1:PRINT"HI SCORE:";HI:PEN 2:PRINT:PRINT" BY ";n$:FOR f=1 TO 5000:NEXT:GOTO 160 1680 REM ******* push u, ********* 1690 IF m(x,y-1)<>2 OR m(x,y-2)=1 THEN RETURN 1700 IF m(x,y-2)=2 OR y=5 THEN LOCATE x,y-1:SOUND 4,0,65,0,6,0,5:PEN 2:PRINTCHR$(171):FOR f=1 TO 40:NEXT:LOCATE x,y-1:m(x,y-1)=0:PRINT" ":RETURN 1710 SOUND 1,140,10,7,0,0,8:pu=1:p1=x:p2=y-1:m(p1,p2)=0 1720 REM ****** push block up ****** 1730 IF m(p1,p2-1)=2 OR m(p1,p2-1)=1 OR p2=4 THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):p1=0:RETURN 1740 IF p1=a(1) AND p2-1=b(1) THEN a=1:GOTO 2140 1750 IF p1=a(2) AND p2-1=b(2) THEN a=2:GOTO 2140 1760 p2=p2-1:LOCATE p1,p2+1:PRINT" ":LOCATE p1,p2:PEN 2:PRINT"#":RETURN 1770 REM ******* push r. *********** 1780 IF x=20 THEN RETURN 1790 IF m(x+1,y)<>2 THEN RETURN 1800 IF x=19 THEN LOCATE x+1,y:SOUND 4,0,65,0,6,0,5:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:p1=0:LOCATE x+1,y:m(x+1,y)=0:PRINT" ":RETURN 1810 IF m(x+2,y)=2 OR (x+2=10 AND y=23) THEN LOCATE x+1,y:SOUND 4,0,65,0,6,0,5:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:p1=0:LOCATE x+1,y:m(x+1,y)=0:PRINT" ":RETURN 1820 IF m(x+2,y)=1 THEN RETURN 1830 SOUND 1,140,10,7,0,0,8:pu=2:p1=x+1:p2=y:m(p1,p2)=0 1840 REM ***** push block right **** 1850 IF p1=20 THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):p1=0:RETURN 1860 IF m(p1+1,p2)=2 OR m(p1+1,p2)=1 OR (p1+1=10 AND p2=23) THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):p1=0:RETURN 1870 IF p1+1=a(1) AND p2=b(1) THEN a=1:GOTO 2150 1880 IF p1+1=a(2) AND p2=b(2) THEN a=2:GOTO 2150 1890 p1=p1+1:LOCATE p1-1,p2:PRINT" ":LOCATE p1,p2:PEN 2:PRINT"#":RETURN 1900 REM ******** push d. ********** 1910 IF m(x,y+1)<>2 THEN RETURN 1920 IF m(x,y+2)=2 OR y=22 OR (x=10 AND y+2=23) THEN LOCATE x,y+1:SOUND 4,0,65,0,6,0,5:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:p1=0:LOCATE x,y+1:m(x,y+1)=0:PRINT" ":RETURN 1930 IF m(x,y+2)=1 THEN RETURN 1940 SOUND 1,140,10,7,0,0,8:pu=3:p1=x:p2=y+1:m(p1,p2)=0 1950 REM ****** push block down **** 1960 IF p2=23 THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):p1=0:RETURN 1970 IF m(p1,p2+1)=2 OR m(p1,p2+1)=1 OR (p1=10 AND p2+1=23) THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):p1=0:RETURN 1980 IF p1=a(1) AND p2+1=b(1) THEN a=1:GOTO 2160 1990 IF p1=a(2) AND p2+1=b(2) THEN a=2:GOTO 2160 2000 p2=p2+1:LOCATE p1,p2-1:PRINT" ":LOCATE p1,p2:PEN 2:PRINT"#":RETURN 2010 REM ******** push l. ********** 2020 IF m(x-1,y)<>2 THEN RETURN 2030 IF x=2 THEN LOCATE x-1,y:SOUND 4,0,65,0,6,0,5:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE x-1,y:m(x-1,y)=0:p1=0:PRINT" ":RETURN 2040 IF m(x-2,y)=2 OR m(x-2,y)=1 OR (x-2=10 AND y=23)THEN LOCATE x-1,y:SOUND 4,0,65,0,6,0,5:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE x-1,y:m(x-1,y)=0:PRINT" ":p1=0:RETURN 2050 IF m(x-1,y)=1 THEN RETURN 2060 SOUND 1,140,10,7,0,0,8:pu=4:p1=x-1:p2=y:m(p1,p2)=0 2070 REM ****** push block left **** 2080 IF p1=1 THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):RETURN 2090 IF m(p1-1,p2)=2 OR m(p1-1,p2)=1 OR (p1-1=10 AND P2=23) THEN pu=0:m(p1,p2)=2:LOCATE p1,p2:PEN 2:PRINT"#":PRINT CHR$(22)+CHR$(1):PEN 5:LOCATE p1,p2:PRINT CHR$(233):PRINT CHR$(22)+CHR$(0):P1=0:RETURN 2100 IF p1-1=a(1) AND p2=b(1) THEN a=1:GOTO 2170 2110 IF p1-1=a(2) AND p2=b(2) THEN a=2:GOTO 2170 2120 p1=p1-1:LOCATE p1+1,p2:PRINT" ":LOCATE p1,p2:PEN 2:PRINT"#":RETURN 2130 REM ******* reset ghosts ****** 2140 SOUND 4,0,65,0,6,0,5:pu=0:m(p1,p2)=0:LOCATE p1,p2:PRINT" ":LOCATE p1,p2-1:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE p1,p2-1:PRINT" ":GOTO 2180 2150 SOUND 4,0,65,0,6,0,5:pu=0:m(p1,p2)=0:LOCATE p1,p2:PRINT" ":LOCATE p1+1,p2:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE p1+1,p2:PRINT" ":GOTO 2180 2160 SOUND 4,0,65,0,6,0,5:pu=0:m(p1,p2)=0:LOCATE p1,p2:PRINT" ":LOCATE p1,p2+1:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE p1,p2+1:PRINT" ":GOTO 2180 2170 SOUND 4,0,65,0,6,0,5:pu=0:m(p1,p2)=0:LOCATE p1,p2:PRINT" ":LOCATE p1-1,p2:PEN 2:PRINT CHR$(171):FOR f=1 TO 40:NEXT:LOCATE p1-1,p2:PRINT" " 2180 a(a)=20:b(a)=4:p1=0 2190 gk=gk+1:LOCATE 16,1:PEN 1:PRINT gk:sc=sc+5:PEN 3:LOCATE 12,25:PRINT sc 2200 IF pl=8 AND gk>4 THEN 2500 2210 RETURN 2220 REM ****** deduct life ******** 2230 SOUND 2,100,190,7,0,3:INK 2,20,15:INK 8,8,2:INK 0,0,3:PRINT CHR$(22)+CHR$(1):PEN 5:IF pu<>0 THEN LOCATE p1,p2:PRINT CHR$(233) 2240 PRINT CHR$(22)+CHR$(0):p1=0 2250 FOR f=1 TO 2:LOCATE a(f),b(f):IF m(a(f),b(f))=0 THEN PRINT" ":GOTO 2270 2260 IF m(a(f),b(f))=2 THEN PEN 2:PRINT CHR$(22)+CHR$(1):LOCATE a(f),b(f):PRINT CHR$(143):PEN 5:LOCATE a(f),b(f):PRINT CHR$(233):PRINT CHR$(22)+CHR$(0) ELSE PEN 14:PRINT CHR$(231) 2270 NEXT:FOR f=1 TO 2499:NEXT:INK 2,20:INK 8,18:INK 0,3:LOCATE x,y:PRINT" " 2280 li=li-1:LOCATE 17,25:PRINT" ":IF li=0 THEN 2330 ELSE 370 2290 REM *****ghost killed ********** 2300 SOUND 4,0,65,0,6,0,5:LOCATE a(p),b(p):PEN 2:PRINT CHR$(171):p1=0:pu=0:qa=a(p):qb=b(p):IF p=1 THEN a(1)=20:b(1)=4 ELSE a(2)=20:b(2)=4 2310 FOR f=1 TO 30:NEXT 2320 LOCATE qa,qb:PRINT" ":gk=gk+1:LOCATE 16,1:PEN 1:PRINT gk:sc=sc+5:PEN 3:LOCATE 12,25:PRINT sc:GOTO 2200 2330 REM ***** pac died ************* 2340 FOR f=1 TO 25:LOCATE 1,1:PRINT CHR$(11):SOUND 1,f*2,2:NEXT 2350 IF sc>hi THEN 2360 ELSE 1540 2360 REM ****** enter name ********** 2370 FOR f=1 TO 100:k$=INKEY$:NEXT 2380 CLS:n$="":PEN 1:PRINT:PRINT:PRINT" ENTER YOUR NAME" 2390 PEN 4:LOCATE 7,8:PRINTSTRING$(8,CHR$(208)) 2400 LOCATE 1,18:PEN 3:PRINT" Your score is";sc 2410 f=6:WHILE f<14:f=f+1 2420 IF INKEY(18)=0 THEN 2490 2430 j$=INKEY$:IF j$=""THEN 2430 2440 IF j$=CHR$(127) AND f>7 THEN f=f-1:LOCATE f,7:PRINT " ";:n$=LEFT$(n$,LEN(n$)-1):SOUND 1,30,5,4:f=f-1:GOTO 2480 2450 IF j$=CHR$(127) THEN f=6:GOTO 2480 2460 PEN 2:LOCATE f,7:PRINTUPPER$(j$) 2470 SOUND 1,f*5,5,4:n$=n$+j$ 2480 WEND 2490 n$=UPPER$(n$):hi=sc:GOTO 1540 2500 REM ****** screen finished ***** 2510 SOUND 1,284,400,1,1,1:INK 0,3,1:FOR f=1 TO 6990:NEXT:INK 0,3:FOR f=1 TO 25:LOCATE 1,1:PRINT CHR$(11):SOUND 1,f*5,1,4:NEXT:MODE 1 2520 LOCATE 11,10:PRINT" *** Well done. ***" 2530 screen=screen+1:IF screen=6 THEN 3470 2540 PEN 2:PRINT:PRINT:PRINT" You are now going on screen";screen 2550 FOR f=1 TO 6000:NEXT 2560 INK 1,24:gk=0:pl=0:MODE 0:GOTO 170 2570 REM ******** screen 1 ********** 2580 REM ******* set blocks ********* 2590 FOR f=3 TO 6:m(f,5)=2:m(f+6,5)=2:m(f+12,5)=2:m(f-1,11)=2 2600 m(f+13,11)=2:m(f+1,17)=2:m(f+11,17)=2:m(f-1,20)=2:m(f+13,20)=2:m(f+6,16)=2 2610 m(f+2,22)=2:m(f+13,22)=2 2620 NEXT 2630 FOR f=8 TO 10:m(f,9)=2:m(f+3,9)=2:m(f-1,11)=2:m(f+4,11)=2 2640 m(f-7,14)=2:m(f+10,14)=2:m(f-6,22)=2:m(f+5,22)=2 2650 NEXT 2660 m(3,13)=2:m(4,13)=2:m(17,13)=2:m(18,13)=2:m(10,20)=2:m(11,20)=2 2670 FOR f=5 TO 8:m(2,f)=2:m(19,f)=2:m(5,f+3)=2:m(16,f+3)=2:m(7,f+6)=2:m(14,f+6)=2 2680 m(2,f+11)=2:m(19,f+11)=2:m(7,f+12)=2:m(14,f+12)=2 2690 NEXT 2700 REM **** set stinging plants ** 2710 RESTORE 2730:FOR f=1 TO 22:READ a,b:m(a,b)=1:NEXT 2720 RETURN 2730 DATA 8,5,13,5,7,7,10,7,11,7,14,7,3,10,18,10,9,13,10,13,11,13,12,13 2740 DATA 5,15,16,15,9,18,12,18,5,19,16,19,8,20,13,20,4,23,17,23 2750 REM ****** screen 2 *********** 2760 REM ******* set blocks ******** 2770 FOR f=6 TO 9:m(f,4)=2:m(f+6,4)=2:m(f+3,9)=2:m(f-4,12)=2:m(f+10,12)=2 2780 m(f-1,16)=2:m(f+7,16)=2:m(f+3,18)=2:m(f-4,23)=2:m(f+10,23)=2 2790 NEXT 2800 FOR f=6 TO 8:m(f,6)=2:m(f+7,6)=2:m(f-5,10)=2:m(f-2,10)=2:m(f+9,10)=2:m(f+12,10)=2 2810 m(f+2,13)=2:m(f+5,13)=2:m(f-5,20)=2:m(f+12,20)=2:NEXT 2820 FOR f=4 TO 8:m(3,f)=2:m(18,f)=2:m(5,f+8)=2:m(16,f+8)=2 2830 m(3,f+11)=2:m(18,f+11)=2:m(6,f+14)=2:m(15,f+14)=2:NEXT 2840 RESTORE 2850:FOR f=1 TO 10:READ a,b:m(a,b)=2:NEXT 2850 DATA 2,8,6,7,6,8,15,7,15,8,19,8,3,20,18,20,6,23,15,23 2860 REM **** set stinging plants ** 2870 RESTORE 2880:FOR f=1 TO 20:READ a,b:m(a,b)=1:NEXT 2880 DATA 5,5,16,5,10,6,11,6,8,11,10,11,11,11,13,11,1,14,20,14 2890 DATA 10,15,11,15,5,19,16,19,9,20,12,20,4,21,17,21,7,22,14,22 2900 RETURN 2910 REM ****** screen 3 *********** 2920 REM ****** set blocks ********* 2930 FOR f=5 TO 9:m(f,5)=2:m(f+7,5)=2:m(f-4,7)=2:m(f+4,7)=2:m(f+11,7)=2 2940 m(f-1,10)=2:m(f+8,10)=2:m(f-3,22)=2:m(f+10,22)=2 2950 NEXT 2960 FOR f=1 TO 4:m(f,12)=2:m(f+16,12)=2:m(f+4,15)=2:m(f+8,15)=2:m(f+12,15)=2 2970 m(f+4,20)=2:m(f+12,20)=2:NEXT 2980 FOR f=15 TO 18:m(2,f)=2:m(8,f)=2:m(13,f)=2:m(19,f)=2 2990 m(5,f+2)=2:m(16,f+2)=2:NEXT 3000 RESTORE 3010:FOR f=1 TO 21:READ a,b:m(a,b)=2:NEXT 3010 DATA 8,7,4,11,17,11,7,12,8,12,9,12,7,13,12,12,13,12,14,12,14,13,1,19,20,7,2,19,19,19,20,19,7,22,7,23,14,22,14,23 3020 REM *** set stinging plants **** 3030 RESTORE 3050:FOR f=1 TO 24:READ a,b:m(a,b)=1:NEXT 3040 RETURN 3050 DATA 2,5,4,5,10,5,11,5,17,5,19,5,7,8,14,8,4,9,17,9,10,10,11,10 3060 DATA 10,14,11,14,4,16,17,16,9,17,12,17,10,19,11,19,3,20,18,20,6,23,15,23 3070 REM ******* screen 4 ********** 3080 REM **** set blocks *********** 3090 FOR f=3 TO 7:m(f,4)=2:m(f+11,4)=2:m(f+2,6)=2:m(f+9,6)=2:m(f+6,9)=2 3100 m(f-2,11)=2:m(f+13,11)=2:m(f+2,15)=2:m(f+9,15)=2:m(f+2,17)=2:m(f+9,17)=2 3110 m(f-2,21)=2:m(f+13,21)=2:m(f-1,23)=2:m(f+12,23)=2:NEXT 3120 FOR f=10 TO 11:m(f,4)=2:m(f,17)=2:m(f-2,19)=2:m(f+2,19)=2 3130 m(f-3,23)=2:m(f+3,23)=2:NEXT 3140 FOR f=4 TO 9:m(2,f)=2:m(19,f)=2:m(5,f+2)=2:m(16,f+2)=2:m(3,f+9)=2 3150 m(18,f+9)=2:NEXT 3160 FOR f=9 TO 11:m(8,f)=2:m(13,f)=2:m(5,f+4)=2:m(16,f+4)=2 3170 m(5,f+9)=2:m(16,f+9)=2:m(8,f+11)=2:m(13,f+11)=2:NEXT 3180 REM *** set stinging plants *** 3190 RESTORE 3210:FOR f=1 TO 34:READ a,b:m(a,b)=1:NEXT 3200 RETURN 3210 DATA 8,5,9,5,12,5,13,5,1,6,4,6,17,6,20,6,10,8,11,8,3,9,18,9 3220 DATA 6,10,7,10,14,10,15,10,10,11,11,11,9,13,12,13,1,14,20,14 3230 DATA 10,15,11,15,2,17,19,17,10,18,11,18,7,20,14,20,9,21,12,21,6,23,15,23 3240 REM ******* screen 5 ********** 3250 REM **** set blocks *********** 3260 FOR f=2 TO 5:m(f,5)=2:m(f+7,5)=2:m(f+14,5)=2:m(f+2,7)=2:m(f+12,7)=2 3270 m(f-1,11)=2:m(f+15,11)=2:m(f+4,15)=2:m(f+10,15)=2:m(f+5,17)=2:m(f+9,17)=2 3280 m(f-1,21)=2:m(f+15,21)=2:m(f+3,23)=2:m(f+11,23)=2:m(f+10,9)=2 3290 m(f+5,20)=2:m(f+9,20)=2 3300 NEXT 3310 FOR f=2 TO 4:m(f,9)=2:m(f+4,9)=2:m(f+7,9)=2:m(f+15,9)=2 3320 m(f+6,11)=2:m(f+9,11)=2:m(f+1,13)=2:m(f+4,13)=2:m(f+13,13)=2:m(f+14,13)=2 3330 m(f-1,17)=2:m(f+16,17)=2:m(f,23)=2:m(f+15,23)=2:m(f+11,13)=2:NEXT 3340 FOR f=5 TO 7:m(2,f)=2:m(7,f)=2:m(14,f)=2:m(19,f)=2 3350 m(6,f+4)=2:m(15,f+4)=2:m(1,f+8)=2:m(20,f+8)=2:m(3,f+9)=2:m(18,f+9)=2 3360 m(5,f+10)=2:m(16,f+10)=2:m(5,f+14)=2:m(16,f+14)=2:NEXT 3370 RESTORE 3380:FOR f=1 TO 6:READ a,b:m(a,b)=2:NEXT 3380 DATA 10,7,11,7,4,8,17,8,1,12,20,12 3390 REM *** set stinging plants *** 3400 RESTORE 3410:FOR f=1 TO 41:READ a,b:m(a,b)=1:NEXT 3410 DATA 4,4,6,4,8,4,10,4,12,4,14,4,16,4,1,5,20,5,9,7,12,7,2,8,19,8 3420 DATA 5,10,10,10,11,10,16,10,7,12,14,12,2,13,9,13,12,13,19,13,4,18,17,18 3430 DATA 1,19,3,19,7,19,8,19,10,19,11,19,13,19,14,19,18,19,20,19 3440 DATA 6,21,15,21,8,22,13,22,4,23,17,23 3450 RETURN 3460 REM *** end of game *** 3470 MODE 1:PEN 1:LOCATE 16,10:PRINT"EXCELLENT!":PRINT:PRINT" You have completed the whole game." 3480 PRINT:PEN 2:PRINT" Score = score * 1.5" 3490 sc=sc*1.5 3500 FOR f=1 TO 8000:NEXT 3510 MODE 0:GOTO 2370 3520 MODE 0:PRINT CHR$(22)+CHR$(1):PEN 1:LOCATE 10,10:PRINT CHR$(233):PEN 6:LOCATE 10,10:PRINT"#" 3530 LOCATE 10,10:ch%=0:CALL &A000,àch%:PRINT ch% 3540 ch%=0:MODE 0:x=10:y=10 3550 LOCATE x,y:PEN 2:PRINT"#":PEN 1:LOCATE x,y:CALL &A000,àch%:PRINT:PRINT ch% |