8-Bit Software Online Conversion

Haunted House Adventure - Listing

10*FX202,32 120MODE7 130PROCINTRO 140REM HAUNTED HOUSE 150REM 160nvbs%=29:nobs%=36:get%=18 170 PROCinit 175 PROCsetupkeys 180CLS:PRINT" HAUNTED HOUSE" 190PRINT" `````````````" 200PRINT 210PRINT" You are:"' 220PROCprint(loc$(rm%),130) 230PRINT 240PRINT" There are exits:"; 250FOR I=1 TO LEN(route$(rm%)) 260PRINTCHR$129MID$(route$(rm%),I,1);" ,"; 270NEXTI 280PRINT' 290FOR I=1 TO get% 300IF loc%(I)=rm% AND flag%(I)=0 THEN :FOR I%=1 TO 2:PRINTCHR$131;CHR$141;"You can see";CHR$131;obj$(I);CHR$131"here": NEXTI% 310NEXTI 320PRINT'" ==================" 330PRINT 340PRINT 350PROCprint(msge$,129):msge$="Sorry - you cannot do that." 360PRINT 370INPUT" What will you do now? "in$ 380vb$="":n$="":vb%=0:ob%=0 390FOR I=1 TO LEN(in$) 400IF MID$(in$,I,1)=" " AND vb$="" THE N vb$=LEFT$(in$,I-1) 410IF MID$(in$,I+1,1)<>" " AND vb$<>"" THEN n$=MID$(in$,I+1,LEN(in$)-1):I=LEN( in$) 420NEXTI 430IF n$="" vb$=in$ 440FOR I=1 TO nvbs% 450IF vb$=vb$(I) THENvb%=I 460NEXTI 470FOR I=1 TO nobs% 480 IF LEFT$(n$,3)=gob$(I) THEN ob%=I 490NEXTI 500IF n$>"" AND ob%=0 THENmsge$="That is silly!" 510IF vb%=0 vb%=vb%+1 520IF n$="" msge$="?" 530IF vb%>nvbs% AND ob%>0 msge$="You c annot '"+in$+"'" 540IF vb%>nvbs% AND ob%=0 msge$="You d o not make sense!" 550IF vb%<nvbs% AND ob%>0 AND cy%(ob%) =0 msge$="You do not have '"+n$+"'" 560 IFflag%(26)=1 AND rm%=13 AND RND(3 )<>3 AND vb%<>21 msge$=" VAMPIRES ATTAC KING! ":SOUND2,-15,30,153:GOTO180 570IF rm%=44 AND RND(2)=1 AND flag%(24 )<>1 flag%(27)=1 580IF vb%=1 PROChelp 590IF vb%=2 PROCinv 600IF vb%=3 PROCmove 610IF vb%=4 PROCmove 620IF vb%=5 PROCmove 630IF vb%=6 PROCmove 640IF vb%=7 PROCmove 650IF vb%=8 PROCmove 660IF vb%=9 PROCmove 670IF vb%=10 PROCtake 680IF vb%=11 PROCtake 690IF vb%=12 PROCopen 700IF vb%=13 PROCexam 710IF vb%=14 PROCread 720IF vb%=15 PROCsay 730IF vb%=16 PROCdig 740IF vb%=17 PROCswing 750IF vb%=18 PROCclimb 760IF vb%=19 PROClight 770 IF vb%=20 PROCsnuff 780IF vb%=21 PROCspray 790IF vb%=22 PROCuse 800IF vb%=23 PROCunlock 810IF vb%=24 PROCleave 820IF vb%=25 PROCscore 830 IF vb%=26 PROCsave 840 IF vb%=27 PROCload 850IF vb%=28 PROCquit 860IF vb%=29 PROChint 870GOTO180 880 DEF PROChelp 890PRINT"Words I know:" 900FOR I=1 TO nvbs% 910PRINTvb$(I);","; 920NEXTI 930msge$="":PRINT 940PROCcyon 950ENDPROC 960 DEF PROCinv 970PRINT"You are carrying:" 980FOR I=1 TO get% 990IF cy%(I)=1 PRINTobj$(I);","; 1000NEXTI 1010msge$="":PRINT 1020 PROCcyon 1030 ENDPROC 1040 DEF PROCmove 1050dir%=0 1060IF ob%=0 dir%=vb%-3 1070IF ob%=19 dir%=1 1080IF ob%=20 dir%=2 1090IF ob%=21 dir%=3 1100IF ob%=22 dir%=4 1110IF ob%=23 dir%=5 1120IF ob%=24 dir%=6 1130IF rm%=20 AND dir%=5 dir%=1 1140IF rm%=20 AND dir%=6 dir%=3 1150IF rm%=22 AND dir%=6 dir%=2 1160IF rm%=22 AND dir%=5 dir%=3 1170IF rm%=36 AND dir%=6 dir%=1 1180IF rm%=36 AND dir%=5 dir%=2 1190IF flag%(14)=1 msge$="crash! You fe ll out of the tree!":flag%(14)=0:ENDPROC 1200IF flag%(27)=1 AND rm%=52 msge$="Gh osts will not let you move!":ENDPROC 1210 IF rm%=45 AND cy%(1)=1 AND flag%(3 4)=0 THEN msge$="A magical barrier has a ppeared":ENDPROC 1220IF (rm%=18 AND flag%(0)=0) AND (dir %=1 OR dir%=4) msge$="It is too dark to move and you need a light. Have you foun d the glove and candle?":ENDPROC 1230IF rm%=54 AND cy%(15)<>1 PRINT"You are stuck!For you the game is over.Bette r luck next time.":PRINT:PROCcyon:RUN 1240IF cy%(15)=1 AND NOT(rm%=53 OR rm%= 54 OR rm%=55 OR rm%=47) msge$="You canno t carry a boat!":ENDPROC 1250IF (rm%>26 AND rm%<30) AND flag%(0) =0 msge$="It is too dark to move":ENDPRO C 1260flag%(35)=0:RL=LEN(route$(rm%)) 1270FOR I=1 TO RL 1280dir$=MID$(route$(rm%),I,1) 1290IF (dir$="N" AND dir%=1 AND flag%(3 5)=0) rm%=rm%-8:flag%(35)=1 1300IF (dir$="S" AND dir%=2 AND flag%(3 5)=0) rm%=rm%+8:flag%(35)=1 1310IF (dir$="W" AND dir%=3 AND flag%(3 5)=0) rm%=rm%-1:flag%(35)=1 1320IF (dir$="E" AND dir%=4 AND flag%(3 5)=0) rm%=rm%+1:flag%(35)=1 1330NEXTI 1340msge$="Ready" 1350 IF flag%(35)=0 msge$="You cannot g o that way!" 1360IF dir%<1 msge$="Go where?" 1370IF rm%=41 AND flag%(23)=1 route$(49 )="W":SOUND3,-15,20,90:msge$="The door s lams shut behind you!":flag%(23)=0 1380ENDPROC 1390 DEF PROCtake 1400IF ob%>get% msge$="You cannot get " +n$:ENDPROC 1410IF loc%(ob%)<>rm% msge$="It is not here" 1420IF ob%<>0 msge$="WHAT "+n$+"?" 1430IF cy%(ob%)=1 msge$="You already ha ve it" 1440IFob%>0 AND loc%(ob%)=rm% AND flag% (ob%)=0 cy%(ob%)=1:loc%(ob%)=65:msge$="Y ou now have it." 1450ENDPROC 1460DEF PROCopen 1470IF rm%=43 AND (ob%=28 OR ob%=29) fl ag%(17)=0:msge$="The drawer is now open" 1480IF rm%=28 AND ob%=25 msge$="It is l ocked" 1490IF rm%=38 AND ob%=32 msge$="It is n ow open":flag%(2)=0 1500ENDPROC 1510 DEF PROCexam 1520IF ob%=10 msge$="It needs batteries " 1530IF ob%=30 flag%(18)=0:msge$="Someth ing falls out of the pocket." 1540IF ob%=31 msge$="That's disgusting! " 1550IF (ob%=28 OR ob%=29) msge$="There is a drawer" 1560IF ob%=33 OR ob%=5 PROCread 1570IF rm%=43 AND ob%=35 msge$="There i s something beyond....." 1580IF ob%=32 PROCopen 1590ENDPROC 1600 DEF PROCread 1610IF rm%=42 AND ob%=33 msge$="They ar e demonic works" 1620IF (ob%=3 OR ob%=36) AND cy%(3)=1 A ND flag%(34)=0 msge$="It says:'Use this word with care ` JELLYBABIES'" 1630IF cy%(5)=1 AND ob%=5 msge$="The wr iting is in a strange language" 1640ENDPROC 1650 DEF PROCsay 1660msge$="Ready '"+n$+"'" 1670 IF cy%(3)=1 AND ob%=34 THEN msge$= "You suddenly feel very faint and have t o close your eyes. When you open them yo u realize that something magical has hap pened.":IF rm%<>45 THEN rm%=RND(63) 1680 IF cy%(3)=1 AND ob%=34 AND rm%=45 THEN flag%(34)=1 1690ENDPROC 1700 DEF PROCdig 1710IF cy%(12)=1 msge$="You made a love ly little hole!" 1720IF cy%(12)=1 AND rm%=30 msge$="You have dug the bars out":loc$(rm%)="There is a hole in the wall":route$(rm%)="NSE" 1730 ENDPROC 1740 DEF PROCswing 1750IF cy%(14)<>1 AND rm%=7 msge$="This is no time to play games!" 1760IF ob%=14 AND cy%(14)=1 msge$="You swung it" 1770IF ob%=13 AND cy%(13)=1 msge$="Whoo oosshhh!" 1780IF ob%=13 AND cy%(13)=1 AND rm%=43 route$(rm%)="WN":loc$(rm%)="in a study w ith a secret room connected":msge$="You have broken the thin wall" 1790ENDPROC 1800 DEF PROCclimb 1810IF ob%=14 AND cy%(14)=1 msge$="It i s not attached to anything!" 1820IF ob%=14 AND cy%(14)<>1 AND rm%=7 AND flag%(14)=0 msge$="You see thick for est and a cliff to the south":flag%(14)= 1:ENDPROC 1830IF ob%=14 AND cy%(14)<>1 AND rm%=7 AND flag%(14)=1 msge$="Going down!":flag %(14)=0 1840ENDPROC 1850 DEF PROClight 1860IF ob%=17 AND cy%(17)=1 AND cy%(8)= 0 msge$="It will burn your hands!" 1870IF ob%=17 AND cy%(17)=1 AND cy%(9)= 0 msge$="You have nothing to light it wi th!" 1880IF ob%=17 AND cy%(17)=1 AND cy%(9)= 1 AND cy%(8)=1 msge$="It casts a flicker ing light":flag%(0)=1 1890ENDPROC 1900 DEF PROCsnuff 1910IF flag%(0)=1 flag%(0)=0:msge$="You r candle is out" 1920ENDPROC 1930 DEF PROCspray 1940IF ob%=26 AND cy%(16)=1 msge$="Hiss ssss" 1950IF ob%=26 AND cy%(16)=1 flag%(26)=0 :msge$="Pfffft! Got them!" 1960ENDPROC 1970 DEF PROCuse 1980IF ob%=10 AND cy%(10)=1 AND cy%(11) =1 msge$="It is switched on":flag%(24)=1 1990IF flag%(27)=1 AND flag%(24)=1 msge $="Whizzzz! You have vacuumed the ghosts up!":flag%(27)=0 2000ENDPROC 2010DEF PROCunlock 2020IF rm%=43 AND(ob%=27 OR ob%=28) PRO Copen 2030IF rm%=28 AND ob%=25 AND flag%(25)= 0 AND cy%(18)=1 flag%(25)=1:route$(rm%)= "SEW":loc$(rm%)="by a huge open door":ms ge$="The key turns!" 2040ENDPROC 2050DEF PROCleave 2060IF cy%(ob%)=1 cy%(ob%)=0:loc%(ob%)= rm%:msge$="Done" 2070ENDPROC 2080 DEF PROCscore 2090score%=0 2100FOR I=1 TO get% 2110IF cy%(I)=1 score%=score%+1 2120NEXTI 2130IF score%=17 AND cy%(15)<>1 AND rm% <>57 PRINT"You have everything":PRINT"Re turn to the gate for your final score": 2140IF score%=17 AND rm%=57 PRINT" DOUB LE SCORE FOR REACHING HERE!":score%=scor e%*2:PRINTscore%:PROCcyon:ENDPROC 2150PRINT"Your score is ";score%:PROCcy on:IF score%>18 PRINT"Well done! You hav e finished the game":END 2151 2160 ENDPROC 2170DEF PROCcyon 2180INPUT'"Press RETURN to continue"in$ 2190ENDPROC 2200 DEF PROCinit 2210DIMroute$(63),loc$(63),obj$(nobs%), vb$(nvbs%),gob$(nobs%) 2220DIM cy%(nobs%),loc%(get%),flag%(nob s%) 2230DATA46,38,35,50,13,18,28,42,10,25,2 6,4,2,7,47,60,43,32 2240FOR I=1 TO get% 2250READ loc%(I) 2260NEXTI 2270 DATAHELP,CARRYING,GO,N,S,W,E,U,D,G ET,TAKE,OPEN,EXAMINE,READ,SAY 2280DATADIG,SWING,CLIMB,LIGHT,OFF,SPRAY ,USE,UNLOCK,LEAVE,SCORE,SAVE,LOAD,QUIT,H INT 2290FOR I=1 TO nvbs% 2300READ vb$(I) 2310NEXTI 2320DATASE,WE,WE,SWE,WE,WE,SWE,WS 2330DATANS,SE,WE,NW,SE,W,NE,NSW 2340DATANS,NS,SE,WE,NWUD,SE,WSUD,NS 2350DATAN,NS,NSE,WE,WE,NSW,NS,NS 2360DATAS,NSE,NSW,S,NSUD,N,N,NS 2370DATANE,NW,NE,W,NSE,WE,W,NS 2380DATASE,NSW,E,WE,NW,S,SW,NW 2390DATANE,NWE,WE,WE,WE,NWE,NWE,W 2400FOR I=0 TO 63 2410READ route$(I) 2420NEXTI 2430DATAin a dark corner,in an overgrow n garden,by a large woodpile,in a yard b y a pile of rubbish 2440DATAin a weedpatch,in a forest,in a thicker part of the forest,by a blasted tree 2450DATAby the corner of an old house,a t the entrance to the kitchen,in the kit chen ` There is a grimy cooker here,in t he scullery 2460DATAin a room thick with dust,in th e rear turret room,in a clearing by an o ld house,on an old footpath 2470DATA by the side of an old house,at the back of the hallway,in a dark alcov e,in a small dark room 2480DATA at the bottom of a spiral staircase,in a wide passage,on a set of slippery steps,on a cliff top 2490DATA near a crumbling wall,in a glo omy passage,in a short corridor,in an im pressive hallway 2500DATA in a hall by a thick wooden door.The door is locked.,in the trophy room,in a cellar with a barred wind ow,on a cliff path 2510DATA in a cupboard with a coat hanging on the door,in the front hall, in the sitting room,in a secret room 2520DATA on some steep marble stairs,in the dining room,in a deep cellar.There is a coffin here.It is closed,on a c liff path 2530DATA in a closet,in the front lobby ,in a library full of evil books,in a st udy.There is a desk here and a weak`look ing wall 2540DATA in a weird cobwebbed room,in a n ice`cold chamber,in a very spooky room ,on a cliff path.There is a marsh close by 2550DATA on a rubble`strewn verandah,on the front porch,in the front tower,in a sloping corridoor 2560DATA in the upper gallery,in a mars h by a wall,in a marsh,on a soggy path 2570DATA by a twisted railing,on a path through an iron gate,by some old railin gs,beneath the front tower of an old h ouse 2580DATAby some debris from a crumbling wall,by some large fallen brickwork,by a rotting stone arch,on a crumbling clif ftop 2590FOR I=0 TO 63 2600READ loc$(I) 2610NEXTI 2620DATA"a painting","a ring","some mag ic spells","a goblet","an old scroll","s ome old coins","a small statue","a glove " 2630DATA"a box of matches","a vacuum cl eaner","some batteries","a shovel","an a xe","a rope","a small boat","an aerosol spray","a candle","a key" 2640DATANORTH,SOUTH,WEST,EAST,UP,DOWN 2650DATADOOR,VAMPIRES,GHOSTS,DRAWER,DES K,COAT,RUBBISH 2660 DATACOFFIN,BOOKS,JELLYBABIES,WALL, SPELLS 2670DATAPAI,RIN,MAG,GOB,SCR,COI,STA,GLO ,MAT,VAC,BAT,SHO,AXE,ROP,BOA,AER,CAN,KEY ,NOR,SOU,WES,EAS,UP,DOW,DOO,VAM,GHO,DRA, DES,COA,RUB,COF,BOO,JEL,WAL,SPE 2680FOR I=1 TO nobs% 2690READ obj$(I) 2700NEXTI 2710FOR I=1 TO nobs% 2720READ gob$(I) 2730NEXTI 2740flag%(18)=1:flag%(17)=1:flag%(2)=1: flag%(26)=1:flag%(28)=1:flag%(23)=1:rm%= 57:msge$="Ready" 2750ENDPROC 2760DEF PROCsave 2770INPUT'"IS THE DISC IN THE DRIVE",Y$ 2780IF LEFT$(Y$,1)<>"Y" THEN2770 2790INPUT''"What will you call the file ",file$ 2800PRINT''"Saving. Please wait..." 2810X=OPENOUT file$ 2820PRINT#X,rm% 2830 FOR I=1 TO get%:PRINT#X,loc%(I):NE XT 2840FOR I=0 TO 63:PRINT#X,loc$(I):NEXT 2850FOR I=0 TO 63:PRINT#X,route$(I):NEX T 2860 FOR I=1 TO nobs%:PRINT#X,cy%(I):NE XT 2870 FOR I=1 TO nobs%:PRINT#X,flag%(I): NEXT 2880 CLOSE#X 2890 ENDPROC 2900DEF PROCload 2910INPUT'"ARE YOU READY TO LOAD",Y$ 2920IF LEFT$(Y$,1)<>"Y" THEN2910 2930 INPUT''"What is the name of the fi le",file$ 2940PRINT''"Loading. Please wait...." 2950X=OPENUP file$ 2960 INPUT#X,rm% 2970FOR I=1 TO get%:INPUT#X,loc%(I):NEX T 2980 FOR I=0TO 63:INPUT#X,loc$(I):NEXT 2990 FOR I=0TO 63:INPUT#X,route$(I):NEX T 3000 FOR I=1 TO nobs%:INPUT#X,cy%(I):NE XT 3010 FOR I=1 TO nobs%:INPUT#X,flag%(I): NEXT 3020 CLOSE#X 3030 3040ENDPROC 3050DEF PROCquit 3060INPUT" ARE YOU SURE YOU WANT TO QUI T"in$ 3070 IF in$="N" PRINT" GET ON WITH THE ADVENTURE!"'"PRESS A KEY.":REPEATUNTILG ET:ENDPROC 3080 INPUT"IF YOU WANT TO SAVE YOUR POS ITION, TYPE 'SAVE'"in$ 3090IF in$<>"SAVE" OSCLI("DESKTOP") 3100IF in$="SAVE" PROCsave 3110 ENDPROC 3120DEF PROCINTRO 3130*FX11,0 3220PRINT"Welcome to HAUNTED HOUSE adve nture." 3230PRINT''"You have to explore your wa y around"'"a haunted house." 3240PRINT"In the house (or perhaps outs ide) you"'"will have to find seventeen o bjects" 3250PRINT"and bring them back to the ma in gate." 3260PRINT"You might find yourself in da nger so"'"think carefully!" 3270PRINT'"If you need help, type HELP and" 3280PRINT"if you want to save the game to continue later, type SAVE." 3290PRINT'"If you want to know what you are"'"carrying,type CARRYING." 3300 PRINT"If you want to know what you r present"'"score is type SCORE.":PRINT 3310PROCprint("If you want a hint when you are stuck, type HINT",129) 3320 PRINT''"Press any key." 3350REPEATUNTILGET 3351 key$="To help you, the RED keys ha ve been set up to print some of the most -used words for you, and these will be p rinted at the bottom of the screen durin g the game. (But I could only squeeze in the first three letters!)" 3352PROCprint(key$,131) 3353PROCcyon 3360ENDPROC 3370DEF PROCprint(mess$,colour%) 3380LOCAL K%,L%,S% 3390K%=0 3400PRINTCHR$(colour%); 3410REPEAT 3420S%=FNINSTR(mess$," ") 3430K%=K%+S%:IF K%>38 PRINT'CHR$(colour %);:K%=S% 3440IF S%>0 THEN PRINT LEFT$(mess$,S%); 3450mess$=RIGHT$(mess$,LEN(mess$)-S%) 3460UNTIL S%=0 3470 L%=LEN(mess$):K%=K%+L%:IF K%>38 TH EN PRINT'CHR$(colour%); 3480PRINTmess$ 3490ENDPROC 3500DEFFNINSTR(A$,B$) 3510IF LEN A$<LEN B$ THEN=0 ELSE 3520=INSTR(A$,B$) 3530DEF PROChint 3540IF rm%=13 PROCprint("Have you got t he 'Vampire Spray' in the aerosol can?", 129):PROCcyon:ENDPROC 3550IF rm%=30 PROCprint("If you have th e shovel, use it to dig the window. If y ou haven't, you will have to go back the way you came.",129:PROCcyon:ENDPROC 3560IF rm%=32 PROCprint("Examine the co at.",129):PROCcyon:ENDPROC 3570IF rm%=35 PROCprint("Try reading th e book.",129:PROCcyon:ENDPROC 3580IF rm%=38 PROCprint("Have a look in the coffin.",129):PROCcyon:ENDPROC 3590IF rm%=39 PROCprint("Examine the de sk.",129):PROCcyon:ENDPROC 3600IF rm%=19 PROCprint("Wear the glove ",129):PROCcyon:ENDPROC 3610IF rm%=45 PROCprint("Do you know th e magic word? If not, you might as well quit!",129):PROCcyon:ENDPROC 3620IF rm%=43 PROCprint("Have you got t he axe?",129):PROCcyon:ENDPROC 3630IF rm%=52 PROCprint("Use the vacuum cleaner on the ghosts. If it doesn't wo rk, you need the batteries.",129):PROCcy on:ENDPROC 3640IF rm%=49 PROCprint("Make sure you have found one thing before you go in.", 129):PROCcyon:ENDPROC 3650 PROCprint("There is nothing much I can do for you here. Sorry!",129):PROCc yon:ENDPROC 3660ENDPROC 20000DEF PROCsetupkeys 20010*KEY 0 "GET " 20020*KEY1 CARRYING 20030*KEY 2 SCORE 20040*KEY 3 SAVE 20050*KEY 4 LOAD 20060*KEY 5 HELP 20070*KEY 6 HINT 20080*KEY 7 "OPEN " 20090*KEY 8 "USE " 20100*KEY 9 "EXAMINE " 20120: 20140DIM f$(2,2,9) 20150REM (ld,level,key) 20160f$(0,0,0)="GET":f$(0,0,1)="CAR" 20170f$(0,0,2)="SCO":f$(0,0,3)="SAV" 20180f$(0,0,4)="LOA":f$(0,0,5)="HEL" 20190f$(0,0,6)="HIN":f$(0,0,7)="OPE" 20200f$(0,0,8)="USE":f$(0,0,9)="EXA" 20210 ls=2 20220ls=ls-1 20230: 20240CLS 20250 ld=1 20260 ld=ld-1 20270PROCkeyld 20290: 20300DEF PROCkeyld 20310VDU28,0,24,39,21-ls 20320PROCdrawframe 20330f$(ld,ls,9)=LEFT$(f$(ld,ls,9),3) 20340FOR F%=0 TO ls 20350FOR E%=0 TO 9 20360PRINTTAB(1+4*E%,3+F%) f$(ld,F%,E%); 20370NEXT:NEXT 20380VDU28,0,20-ls,39,0 20390ENDPROC 20400: 20410DEF PROCdrawframe 20420VDU151,44,44,44 20430FOR E%=1 TO 9 20440VDU60,44,44,44:NEXT 20450: 20460VDU32,32,48,151 20470FOR E%=1 TO 9 20480VDU53,135,48+E%,151:NEXT 20490: 20500VDU151,44,44,44 20510FOR E%=1 TO 9 20520VDU61,44,44,44:NEXT 20530: 20540FOR F%=0 TO ls 20550VDU151,32,32,32 20560FOR E%=1 TO 9 20570VDU53,32,32 20580IF NOT (E%=9 AND F%=ls) THEN VDU32 20590NEXT:NEXT 20600: 20610ENDPROC 20620 ENDPROC