10 REM **************************** 20 REM Amstrad Notebook Puzzle Pack 30 REM 4 Puzzle programs in one 40 REM **************************** 50 REM NC200 Version 1 : 10/25/94 60 REM Downloaded from Tim's NC Users' Site 70 REM http://www.ncus.org.uk 80 REM 1) HANGMAN : NC200 Version 1 28/12/93 by Timothy Surtell adapted. 90 REM 2) 4 IN A ROW : NC200 Version 1 3/1/94 by Timothy Surtell adapted. 100 REM 3) ASTEROIDS : NC200 Version 2 by Timothy Surtell adapted. 110 REM 4) WORM : NC200 Experimental program by Timothy Surtell adapted. 120 REM Menu and program adaptions by Timothy Surtell. 130 CLS:S=0 140 ONERRORPROCQUIT:RUN 150 PROCSOUND(457,90) 160 PRINTTAB(1,1)"Programmed by"TAB(1,2)"T.Surtell."TAB(76,1)"V.1"TAB(32,1)"Amstrad Notebook"TAB(31,3)"u z z l e a c k":PROCP(29,12):PROCP(44,12) 170 PROCBOX(1,1,79,15):PROCBOX(2,2,78,10):PROCBOX(3,3,39,5):PROCBOX(41,3,77,5):PROCBOX(3,7,39,9):PROCBOX(41,7,77,9) 180 MOVE18,54:PLOT21,37,54:PLOT21,37,73:PLOT21,18,73:PLOT21,18,54 190 MOVE18,22:PLOT21,37,22:PLOT21,37,41:PLOT21,18,41:PLOT21,18,22 200 MOVE246,22:PLOT21,265,22:PLOT21,265,41:PLOT21,246,41:PLOT21,246,22 210 MOVE246,54:PLOT21,265,54:PLOT21,265,73:PLOT21,246,73:PLOT21,246,54 220 MOVE20,56DRAW34,56MOVE27,56DRAW27,70DRAW32,70DRAW32,68MOVE31,67DRAW33,67DRAW33,65DRAW31,65DRAW31,67MOVE32,64DRAW32,60DRAW30,58MOVE32,60DRAW34,58MOVE32,64DRAW30,62MOVE32,64DRAW34,62 230 MOVE249,56DRAW249,71MOVE255,56DRAW255,71MOVE261,56DRAW261,71MOVE248,58DRAW263,58MOVE248,64DRAW263,64MOVE248,70DRAW263,70MOVE251,60PLOT101,253,62MOVE257,66PLOT101,259,68PLOT71,258,67 240 PRINTTAB(4,11)"**"TAB(4,12)"**":MOVE21,32DRAW24,32DRAW22,34MOVE24,32DRAW22,30 250 PRINTTAB(43,11);:VDU27,30:PRINTTAB(42,12);:VDU27,8,27,8 260 PRINTTAB(18,7)CHR$17"Hangman"CHR$18TAB(8,8)"Word game for one player."TAB(52,7)CHR$17"Four In A Row"CHR$18TAB(46,8)"Strategy game for two players." 270 PRINTTAB(17,11)CHR$17"Asteroids"CHR$18TAB(8,12)"Maths game for one player."TAB(56,11)CHR$17"Worm"CHR$18TAB(46,12)"Speed game for one player." 280 X=18:Y=54 290 MOVEX+1,Y+1:PLOT102,X+18,Y+18 300 G=GET 310 MOVEX+1,Y+1:PLOT102,X+18,Y+18 320 IF G=240 AND Y=22 Y=54:GOTO290 330 IF G=241 AND Y=54 Y=22:GOTO290 340 IF G=242 AND X=246 X=18:GOTO290 350 IF G=243 AND X=18 X=246:GOTO290 360 IF G=13 AND X=18 AND Y=54 PROCHANGMAN:GOTO130 370 IF G=13 AND X=246 AND Y=54 PROC4INAROW:GOTO130 380 IF G=13 AND X=18 AND Y=22 PROCASTER:GOTO130 390 IF G=13 AND X=246 AND Y=22 PROCWORM:GOTO130 400 IF G=32 PROCSOUND(457,90) 410 GOTO290 420 DEF PROCBOX(xx1,yy1,xx2,yy2):xx1=xx1*6-2:xx2=xx2*6+1:yy1=yy1*8-4:yy2=yy2*8+3:MOVExx1,yy1:PLOT6,xx2,yy1:PLOT6,xx2,yy2:PLOT6,xx1,yy2:PLOT6,xx1,yy1:MOVExx1-1,yy2+1:PLOT6,xx1-1,yy1-1:PLOT6,xx2+1,yy1-1:PLOT6,xx2+1,yy2+1:PLOT6,xx1-1,yy2+1:ENDPROC 430 DEFPROCP(xx,yy):xx=xx*6-2:yy=yy*8-3:MOVExx,yy:DRAWxx+3,yy+14:DRAWxx+6,yy+13:DRAWxx+7,yy+12:DRAWxx+8,yy+10:DRAWxx+7,yy+9:DRAWxx+6,yy+9:DRAWxx+2,yy+8:xx=xx-1:MOVExx,yy:DRAWxx+3,yy+14:DRAWxx+6,yy+13:DRAWxx+7,yy+12:DRAWxx+8,yy+10:ENDPROC 440 DEF PROCDELBUFF:FORI=1 TO 32:G=INKEY(1):NEXT:ENDPROC 450 DEF PROCSOUND(xx,yy) 460 IF S=1 S=0 ELSE S=1 470 IF S=1 MOVExx+4,yy+1:DRAWxx+6,yy+1:MOVExx+3,yy+2:DRAWxx+7,yy+2:MOVExx+4,yy+3:DRAWxx+6,yy+3:MOVExx+7,yy+2:DRAWxx+7,yy+12:DRAWxx+9,yy+11:DRAWxx+10,yy+10:MOVExx,yy:PLOT102,xx+13,yy+13 480 IF S=0 MOVExx,yy:PLOT103,xx+13,yy+13 490 ENDPROC 500 DEF PROCHANGMAN 510 ONERRORRUN 520 CLS:PROCBOX(1,1,79,15):PROCBOX(1,11,24,15):PROCBOX(2,2,24,9):PROCBOX(26,2,78,14) 530 PROCSOUND(130,86):PROCSOUND(130,86) 540 PRINTTAB(4,0)"Amstrad Notebook"TAB(3,2)"u z z l e a c k"TAB(9,4)CHR$17"Hangman"CHR$18:PROCP(1,13):PROCP(16,13) 550 PRINTTAB(33,2)"H o w t o p l a y H a n g m a n"TAB(33,3)STRING$(37,"-")TAB(27,5)"The object of this classic word game is to find"TAB(27,6)"the unknown word by guessing letters before the"TAB(27,7)"man is hung." 560 PRINTTAB(27,9)"A correct answer inserts the letter(s) into the"TAB(27,10)"word, a wrong answer adds a piece of the gallows or"TAB(27,11)"man."TAB(27,13)"The word is chosen form a dictionary of 180 words." 570 PRINTTAB(3,7)CHR$19"Keys :"CHR$20TAB(3,9)"Just press the letter"TAB(3,10)"key of your choice."TAB(3,12)"Press any key...":PROCDELBUFF:G=GET:PROCDELBUFF 580 CLS:PROCBOX(1,1,79,15):PROCBOX(1,11,24,15):PROCBOX(26,11,78,14) 590 PROCSOUND(130,86):PROCSOUND(130,86) 600 PRINTTAB(4,0)"Amstrad Notebook"TAB(3,2)"u z z l e a c k"TAB(9,4)CHR$17"Hangman"CHR$18TAB(26,3)"Press a letter key, or STOP to exit..."TAB(3,7)"Letters left :"TAB(3,12)"The unknown word :":PROCP(1,13):PROCP(16,13) 610 READnum 620 FORI=1 TO RND(num) 630 READword$ 640 NEXT 650 used$="":hang=0:count=0:len=LEN(word$) 660 PROCBOX(2,7,30,9):PROCBOX(2,2,30,4):PROCBOX(48,2,69,9):PRINTTAB(3,13); 670 FORI=1 TO len:PRINT"*";:NEXT 680 PRINTTAB(3,8); 690 FORI=65 TO 90:PRINTCHR$I;:NEXT 700 lett$=GET$ 710 IF lett$=" " PROCSOUND(130,86) 720 IF ASC(lett$)>96 lett$=CHR$(ASC(lett$)-32) 730 IF INSTR(used$,lett$) GOTO700 740 a=ASC(lett$) 750 IF a<65 OR a>90 GOTO700 760 FORI=1 TO len 770 IF MID$(word$,I,1)=lett$ PRINTTAB(I+2,13)lett$:SOUND1,0,S*250,1:count=count+1 780 NEXT 790 IF INSTR(word$,lett$) : ELSE hang=hang+1:SOUND1,0,S*(50-(hang*4)),1 800 IF count=len PROCEND(TRUE):GOTO540 810 PRINTTAB(a-64+2,8)" " 820 PROCHANG 830 IF hang=9 PROCEND(FALSE):GOTO540 840 used$=used$+lett$ 850 GOTO700 860 END 870 DEF PROCHANG 880 IF hang=1 MOVE300,20DRAW400,20 890 IF hang=2 MOVE350,20DRAW350,70 900 IF hang=3 MOVE350,70DRAW380,70 910 IF hang=4 MOVE350,60DRAW360,70 920 IF hang=5 MOVE380,70DRAW380,60 930 IF hang=6 MOVE375,50DRAW385,50DRAW385,60DRAW375,60DRAW375,50 940 IF hang=7 MOVE380,50DRAW380,35 950 IF hang=8 MOVE380,35DRAW370,25MOVE380,35DRAW390,25 960 IF hang=9 MOVE380,45DRAW370,35MOVE380,45DRAW390,35 970 ENDPROC 980 DEF PROCEND(WL) 990 IFWL=FALSE FORI=252 TO 200 STEP -4:SOUND1,0,S*I,1:NEXT 1000 IFWL=TRUE FORI=200 TO 252 STEP 4:SOUND1,0,S*I,1:NEXT 1010 IF WL=TRUE PRINTTAB(26,2)"Well Done ! You saved the man !"TAB(26,3)SPC50 1020 IF WL=FALSE PRINTTAB(26,2)"You let him die, you fool!"TAB(26,3)"The word was ";word$;"."SPC22 1030 PRINTTAB(26,4)"Press any key...":PROCDELBUFF:G=GET 1040 RUN 1050 DATA180 1060 DATA ACCORD,ACQUIRE,ADDITION,ADVOCATE,AISLE,ALONG,ARTICHOKE 1070 DATA BATTER,BEAM,BICYCLE,BIND,BLOOD,BULGE,BREED 1080 DATA CHALLENGE,CHAP,CHARM,COMPANION,CONSULT,COOLANT,CARPET 1090 DATA DESERT,DETECT,DOCKET,DOLLY,DORMOUSE,DRAWING,DEFACE 1100 DATA ESTUARY,ENVIOUS,EXACTLY,EYEWITNESS,EMERY,EBONY,EXTINGUISH 1110 DATA FEMALE,FIRE,FLAME,FUNCTION,FLOUR,FRAUD,FESTOON 1120 DATA GAMMON,GAZETTE,GIVEN,GRAPHICAL,GUSSET,GUST,GRIEVOUS 1130 DATA HALF,HAMPER,HINGE,HUNCH,HYPNOTIC,HOUSE,HANDSTAND 1140 DATA IMPOUND,IDEAL,ILLEGAL,INDENT,INTERBREED,ISLAND,IMMERSION 1150 DATA JAB,JUMPER,JUNGLE,JUNK,JOCKEY,JEALOUS,JEWELLERY 1160 DATA KEEN,KNEEL,KICK,KINETIC,KITEMARK,KOALA,KETCHUP 1170 DATA LABEL,LEMONADE,LITTLE,LONGING,LUMP,LUXURY,LAUNDERETTE 1180 DATA MACHINE,MAYOR,MELLOW,METHOD,MULE,MOMENT,MICROSCOPE 1190 DATA NEWT,NOMINAL,NUMBER,NOVICE,NEGOTIATE,NEITHER,NITRATE 1200 DATA OCTOBER,OFFERING,OINTMENT,OPERATOR,OUTRIGGER,OXTAIL,OUTBUILDING 1210 DATA PACE,PENTHOUSE,PHANTOM,PHONE,PHOTOGRAPH,POLYSTYRENE,PERSPECTIVE 1220 DATA QUADRANT,QUEEN,QUESTION,QUITE,QUOTE,QUILT,QUIZ 1230 DATA RACECOURSE,REEF,RIGHT,ROOTLESS,RUNNER,RYE,RADIOGRAPHY 1240 DATA SACRIFICE,SAVE,SEIZE,SHAVE,SMASH,SUPER,SABOTAGE 1250 DATA THOROUGHBRED,TOASTER,TRANSPORT,TUBE,TWINE,TWOFOLD,TIMETABLE 1260 DATA UNNERVE,UGLY,UNIT,UTTER,UPDATE,UPPER,UNDERSTAND 1270 DATA VACATION,VALENCE,VEGETATE,VETINARY,VIOLIN,VOYAGE,VENTRILOQUIST 1280 DATA WATER,WALTZ,WARREN,WATCHFUL,WAXWORK,WOUND,WARDROBE 1290 DATA XRAY,XYLOPHONE,XMAS,XEROX,XENOPHOBIA 1300 DATA YARN,YEOMAN,YIELD,YOUTH,YUPPIE,YOGHURT,YESTERDAY 1310 DATA ZAP,ZEBRA,ZERO,ZIPPER,ZONE,ZOOLOGY,ZODIAC 1320 DEF PROC4INAROW 1330 ONERRORRUN 1340 CLS:PROCBOX(1,1,79,15):PROCBOX(55,11,79,15):PROCBOX(55,2,78,9):PROCBOX(2,2,53,14) 1350 PROCSOUND(330,86):PROCSOUND(330,86) 1360 PRINTTAB(59,0)"Amstrad Notebook"TAB(58,2)"u z z l e a c k"TAB(60,4)CHR$17"Four In A Row"CHR$18:PROCP(56,13):PROCP(71,13) 1370 PRINTTAB(6,2)"H o w t o p l a y F o u r I n A R o w"TAB(6,3)STRING$(43,"-")TAB(3,5)"The object of this game is to build a row of four"TAB(3,6)"squares in your colour before your opponent does." 1380 PRINTTAB(3,8)"The playing board is 5 x 5 sqaures."TAB(3,10)"Player 1 is black and player 2 is white."TAB(56,7)CHR$19"Keys :"CHR$20TAB(56,9)"Use cursor keys to"TAB(56,10)"select square and"TAB(56,11)"press "CHR$255TAB(56,13)"Press any key..." 1390 PROCDELBUFF:G=GET 1400 CLS:PROCBOX(1,1,79,15):PROCBOX(55,11,79,15):PROCBOX(55,2,78,9):PROCBOX(32,2,53,14):PROCBOX(2,2,30,14) 1410 PROCSOUND(330,86):PROCSOUND(330,86) 1420 PRINTTAB(59,0)"Amstrad Notebook"TAB(58,2)"u z z l e a c k"TAB(60,4)CHR$17"Four In A Row"CHR$18:PROCP(56,13):PROCP(71,13) 1430 PRINTTAB(56,8)"Player 1 : "CHR$17"Black"CHR$18TAB(56,12)"Player 2 : "CHR$17"White"CHR$18:MOVE329,13:PLOT102,468,43:PRINTTAB(33,3)"Use cursor keys"TAB(33,4)"to select square"TAB(33,5)"and then press"TAB(33,6)CHR$255" to select." 1440 PRINTTAB(33,8)"Press STOP to"TAB(33,9)"exit..." 1450 FORI=20 TO 95 STEP 15:MOVE25,I+6DRAW100,I+6MOVEI+5,26DRAWI+5,101:NEXT 1460 DIMS(5,5):INPLAY=RND(2):C=0 1470 X=32:Y=34:REFX=1:REFY=1 1480 PRINTTAB(33,2)"Player ";INPLAY;"'s turn." 1490 MOVEX,17DRAWX,22DRAWX-2,19MOVEX,22DRAWX+2,19MOVE16,Y:DRAW21,Y:DRAW18,Y-2:MOVE21,Y:DRAW18,Y+2 1500 G=GET 1510 MOVEX-2,17:PLOT103,X+2,22:MOVE16,Y-2:PLOT103,21,Y+2 1520 IF G=240 AND REFY<5 REFY=REFY+1:Y=Y+15 1530 IF G=241 AND REFY>1 REFY=REFY-1:Y=Y-15 1540 IF G=242 AND REFX>1 REFX=REFX-1:X=X-15 1550 IF G=243 AND REFX<5 REFX=REFX+1:X=X+15 1560 PRINTTAB(33,13)"Co-ordinates : ";REFX;",";REFY 1570 IF G=13 GOTO1600 1580 IF G=32 PROCSOUND(330,86) 1590 GOTO1480 1600 IF S(REFX,REFY)<>0 SOUND1,0,S*50,1:GOTO1480 1610 MOVEREFX*15+12,REFY*15+13:PLOT101,REFX*15+23,REFY*15+24 1620 IF INPLAY=2 MOVEREFX*15+13,REFY*15+14:PLOT103,REFX*15+22,REFY*15+23:S(REFX,REFY)=2 ELSE S(REFX,REFY)=1 1630 FORT=1 TO 2 1640 FORI=1 TO 5 1650 IF S(I,1)=T AND S(I,2)=T AND S(I,3)=T AND S(I,4)=T PROCWIN(T) 1660 IF S(I,2)=T AND S(I,3)=T AND S(I,4)=T AND S(I,5)=T PROCWIN(T) 1670 IF S(1,I)=T AND S(2,I)=T AND S(3,I)=T AND S(4,I)=T PROCWIN(T) 1680 IF S(2,I)=T AND S(3,I)=T AND S(4,I)=T AND S(5,I)=T PROCWIN(T) 1690 NEXT 1700 IF S(1,1)=T AND S(2,2)=T AND S(3,3)=T AND S(4,4)=T PROCWIN(T) 1710 IF S(2,2)=T AND S(3,3)=T AND S(4,4)=T AND S(5,5)=T PROCWIN(T) 1720 IF S(1,5)=T AND S(2,4)=T AND S(3,3)=T AND S(4,2)=T PROCWIN(T) 1730 IF S(2,4)=T AND S(3,3)=T AND S(4,2)=T AND S(5,1)=T PROCWIN(T) 1740 IF S(1,2)=T AND S(2,3)=T AND S(3,4)=T AND S(4,5)=T PROCWIN(T) 1750 IF S(2,1)=T AND S(3,2)=T AND S(4,3)=T AND S(5,4)=T PROCWIN(T) 1760 IF S(1,4)=T AND S(2,3)=T AND S(3,2)=T AND S(4,1)=T PROCWIN(T) 1770 IF S(2,3)=T AND S(3,4)=T AND S(4,3)=T AND S(5,2)=T PROCWIN(T) 1780 NEXT 1790 C=C+1 1800 IF C=25 PROCWIN(99) 1810 SOUND1,0,S*250,1 1820 IF INPLAY=1 INPLAY=2 ELSE INPLAY=1 1830 GOTO1480 1840 DEF PROCWIN(T) 1850 FORY=2 TO 13:PRINTTAB(33,Y)SPC20:NEXT 1860 IF T<>99 PRINTTAB(33,3)"Player ";T;" has won!":FORI=200 TO 252 STEP 4:SOUND1,0,S*I,1:NEXT 1870 IF T=99 PRINTTAB(33,3)"A draw!"TAB(33,4)"Nobody won the game!":FORI=200 TO 252 STEP 4:SOUND1,0,S*I,1:NEXT:FORI=252 TO 200 STEP -4:SOUND1,0,S*I,1:NEXT:FORI=200 TO 252 STEP 4:SOUND1,0,S*I,1:NEXT 1880 PRINTTAB(33,7)"Press any key...":PROCDELBUFF:G=GET:RUN 1890 DEF PROCASTER 1900 ONERRORVDU15:RUN 1910 CLS:PROCBOX(1,1,79,15):PROCBOX(1,1,24,5):PROCBOX(2,7,24,14):PROCBOX(26,2,78,14) 1920 PROCSOUND(130,28):PROCSOUND(130,28) 1930 PRINTTAB(4,11)"Amstrad Notebook"TAB(3,13)"u z z l e a c k"TAB(7,15)CHR$17"Asteroids"CHR$18;:PROCP(1,2):PROCP(16,2) 1940 PRINTTAB(31,2)"H o w t o p l a y A s t e r o i d s"TAB(31,3)STRING$(41,"-")TAB(27,5)"The object of this game is to guide the space ship"TAB(27,6)"through the asteroids to the other side of the"TAB(27,7)"screen." 1950 PRINTTAB(27,9)"You specify the number of spaces the space ship"TAB(27,10)"moves. The only difficulty is that the number is"TAB(27,11)"multiplied by up to 4."TAB(27,13)"Remember not to go out of orbit!" 1960 PRINTTAB(3,2)CHR$19"Keys :"CHR$20TAB(3,4)"Press U for UP, D for"TAB(3,5)"DOWN, or R for RIGHT."TAB(3,6)"Then type in distance"TAB(3,7)"and press "CHR$255TAB(3,8)"Press any key...":PROCDELBUFF:G=GET:PROCDELBUFF 1970 CLS:PROCBOX(1,1,79,15):PROCBOX(1,1,24,5):PROCBOX(26,2,78,5) 1980 PROCSOUND(130,28):PROCSOUND(130,28) 1990 PRINTTAB(4,11)"Amstrad Notebook"TAB(3,13)"u z z l e a c k"TAB(7,15)CHR$17"Asteroids"CHR$18;:PROCP(1,2):PROCP(16,2) 2000 PRINTTAB(27,11)"Use U,D or R. Press DEL to delete.":M=RND(3)+1:PRINTTAB(27,12)"The multiplier is ";M;"." 2010 DIMAX(80),AY(80) 2020 VDU14:FORI=1 TO 9:PRINTTAB(1,I)SPC78:NEXT:FORI=1 TO 80:AX(I)=RND(77)+1:AY(I)=RND(9):PRINTTAB(AX(I),AY(I))"*":NEXT:VDU15 2030 X=1:Y=5:VDU14:PRINTTAB(X,Y);:VDU27,26,15 2040 PRINTTAB(27,13)"Go "; 2050 G=GET 2060 IF G=32 PROCSOUND(130,28) 2070 IF G>96 G=G-32 2080 IF G=82 D$="R" PRINT;"right by ";:GOTO2120 2090 IF G=85 D$="U" PRINT;"up by ";:GOTO2120 2100 IF G=68 D$="D" PRINT;"down by ";:GOTO2120 2110 GOTO2050 2120 G=GET 2130 IF G=32 PROCSOUND(130,28) 2140 IF G=127 PRINTTAB(30,13)SPC9TAB(30,13);:GOTO2050 2150 IF G>48 AND G<58 N=(G-48)*10:PRINTCHR$G;:GOTO2170 2160 GOTO2120 2170 G=GET 2180 IF G=32 PROCSOUND(130,28) 2190 IF G=127 PRINTCHR$127;:GOTO2120 2200 IF G>47 AND G<58 N2=(G-48):PRINTCHR$G;:GOTO2230 2210 IF G=13 PRINT;:NUM=N/10:GOTO2280 2220 GOTO2170 2230 G=GET 2240 IF G=32 PROCSOUND(130,28) 2250 IF G=127 PRINTCHR$127;:GOTO2170 2260 IF G=13 NUM=N+N2:GOTO2280 2270 GOTO2230 2280 IF NUM>1 PRINT" squares." ELSE PRINT" square." 2290 PRINTTAB(X,Y)CHR$176; 2300 FORI=1 TO NUM*M 2310 SOUND1,0,S*250,1 2320 VDU14:PRINTTAB(X,Y)CHR$176:VDU15 2330 IF INKEY(1)=32 PROCSOUND(130,28) 2340 IF D$="R" X=X+1 2350 IF D$="U" Y=Y-1 2360 IF D$="D" Y=Y+1 2370 FORA=1 TO 80 2380 IF AX(A)=X AND AY(A)=Y PRINTTAB(27,13)"You have hit an asteroid...press any key...":FORI=252 TO 200 STEP -4:SOUND1,0,S*I,1:NEXT:G=GET:RUN 2390 NEXT 2400 IF X>78 PRINTTAB(27,13)"Well done!!! Press any key...":FORI=200 TO 252 STEP4:SOUND1,0,S*I,1:NEXT:G=GET:RUN 2410 IF Y<1 OR Y>9 PRINTTAB(27,13)"You have gone out of orbit...press any key...":FORI=252 TO 200 STEP -4:SOUND1,0,S*I,1:NEXT:G=GET:RUN 2420 NEXT 2430 VDU14 2440 IF D$="R" PRINTTAB(X,Y);:VDU27,26 2450 IF D$="U" PRINTTAB(X,Y);:VDU27,24 2460 IF D$="D" PRINTTAB(X,Y);:VDU27,25 2470 VDU15 2480 PRINTTAB(27,13)SPC23 2490 GOTO2040 2500 DEF PROCWORM 2510 ONERRORRUN 2520 CLS:PROCBOX(1,1,79,15):PROCBOX(55,1,79,5):PROCBOX(2,2,53,14):PROCBOX(55,7,78,14) 2530 PROCSOUND(330,28):PROCSOUND(330,28) 2540 PRINTTAB(59,11)"Amstrad Notebook"TAB(58,13)"u z z l e a c k"TAB(65,15)CHR$17"Worm"CHR$18;:PROCP(56,2):PROCP(71,2) 2550 PRINTTAB(12,2)"H o w t o p l a y W o r m"TAB(12,3)STRING$(31,"-")TAB(3,5)"The object of this game is to eat the numbers in"TAB(3,6)"order. As the worm eats a number, he moves"TAB(3,7)"faster, making him harder to control." 2560 PRINTTAB(3,9)"Do let him hit the wrong number, his tail,"TAB(3,10)"or go off the screen."TAB(56,2)CHR$19"Keys :"CHR$20TAB(56,4)"Use cursor keys."TAB(56,6)"Press any key...":PROCDELBUFF:G=GET:PROCDELBUFF 2570 CLS:PROCBOX(1,1,79,15):PROCBOX(55,1,79,5):PROCBOX(2,2,53,5):PROCBOX(2,7,78,14) 2580 PROCSOUND(330,28):PROCSOUND(330,28) 2590 PRINTTAB(59,11)"Amstrad Notebook"TAB(58,13)"u z z l e a c k"TAB(65,15)CHR$17"Worm"CHR$18;:PROCP(56,2):PROCP(71,2) 2600 PRINTTAB(3,12)"Use cursor keys to move, press STOP to exit..." 2610 DIMB(77,8) 2620 FORI=1 TO 9:RX=RND(76):RY=RND(7):B(RX,RY)=I:PRINTTAB(RX+1,RY+1)CHR$17;I CHR$18:NEXT 2630 X=40:Y=4:TX=40:TY=4:D=11:SPEED=175:F=1:NUM=1:DUM=10 2640 PROCMOVE 2650 IF F=0 PROCTAIL ELSE F=F+1 2660 PROCCHECKSIDE 2670 PROCCHECKFOOD 2680 PROCCHECKTAIL 2690 IF F=5 F=0 2700 GOTO2640 2710 DEF PROCMOVE 2720 PRINTTAB(X+1,Y+1); 2730 IF D=11 VDU27,16 2740 IF D=10 VDU27,17 2750 IF D=12 VDU27,30 2760 IF D=13 VDU27,31 2770 G=INKEY(1):FORI=1 TO SPEED:NEXT 2780 PRINTTAB(X+1,Y+1);:VDU27,8 2790 IF G=32 PROCSOUND(330,28) 2800 IF G=240 D=12 2810 IF G=241 D=13 2820 IF G=242 D=10 2830 IF G=243 D=11 2840 B(X,Y)=D 2850 IF D=12 Y=Y-1 2860 IF D=13 Y=Y+1 2870 IF D=10 X=X-1 2880 IF D=11 X=X+1 2890 ENDPROC 2900 DEF PROCTAIL 2910 IF DUM>1 DUM=DUM-1:ENDPROC 2920 PRINTTAB(TX+1,TY+1)" " 2930 IF B(TX,TY)=12 B(TX,TY)=0:TY=TY-1:ENDPROC 2940 IF B(TX,TY)=13 B(TX,TY)=0:TY=TY+1:ENDPROC 2950 IF B(TX,TY)=10 B(TX,TY)=0:TX=TX-1:ENDPROC 2960 IF B(TX,TY)=11 B(TX,TY)=0:TX=TX+1:ENDPROC 2970 DEF PROCCHECKSIDE 2980 IF X<1 OR X>76 OR Y<1 OR Y>7 PROCFIN 2990 IF NUM=10 PROCFIN 3000 ENDPROC 3010 DEF PROCCHECKFOOD 3020 IF B(X,Y)=NUM AND F=0 SPEED=SPEED-30:F=1:NUM=NUM+1:SOUND1,0,S*250,1:ENDPROC 3030 IF B(X,Y)=NUM AND F>0 SPEED=SPEED-30:F=F-F:NUM=NUM+1:SOUND1,0,S*250,1:ENDPROC 3040 IF B(X,Y)<>NUM AND B(X,Y)<>0 PROCFIN 3050 DEF PROCCHECKTAIL 3060 IF B(X,Y)>9 PROCFIN 3070 ENDPROC 3080 DEF PROCFIN 3090 IF NUM=10 FORI=200 TO 252 STEP 4:SOUND1,0,S*I,1:NEXT ELSE FORI=252 TO 200 STEP -4:SOUND1,0,S*I,1:NEXT 3100 IF NUM=10 PRINTTAB(3,13)"Well done, you have won. Press any key..." ELSE PRINTTAB(3,13)"Bad luck!!! Press any key..." 3110 PROCDELBUFF:G=GET:RUN 3120 DEF PROCQUIT 3130 CLS 3140 PROCBOX(2,4,78,12) 3150 PRINTTAB(3,8)"Are you sure you want to quit? Press Y or N..." 3160 REPEAT:G$=GET$:UNTILG$="Y" OR G$="y" OR G$="N" OR G$="n" 3170 IF G$="Y" OR G$="y" :*QUIT 3180 ENDPROC