10 DIM E(50):X=0 20 CLS:PRINT''CHR$129"Do you want the instructions(Y or N) ?";:Z$=GET$:IF Z$= "N" THEN 130 ELSE IF Z$="Y" THEN 30 ELSE 20 30 CLS:PRINT''CHR$130"You have to esc ape from the castle with"CHR$130"a previ ous jewel,which Dracula removed "CHR$130 "from your kingdom." 40 TIME=0:REPEAT UNTIL TIME>500 50 PRINT''CHR$131"Dracula's guards th rew you into a cell "CHR$131"on catching you entering the castle." 60 TIME=0:REPEAT UNTIL TIME>400 70 PRINT''CHR$132"Your time is limite d before your escape"CHR$132"from the ce ll will be noticed." 80 TIME=0:REPEAT UNTIL TIME>400 90 PRINT''CHR$133" The computer has a fairly large number"CHR$133"of commands ,so therefore if one command"CHR$133"doe s not work then try another." 100 TIME=0:REPEAT UNTIL TIME>500 110 PRINT''CHR$134"The first three let ters of each command"CHR$134"and object need be typed in,although,if"CHR$134"des ired,the full word may be entered." 120 TIME=0:REPEAT UNTIL TIME>500 130 RESTORE 2000:FOR B=1 TO 50:READ E( B):NEXT B 140 CLS:A=1:W=0:R=1:B$="":S=0:T=0:U=0: SOUND 1,0,1,1 150 RESTORE 840 160 ENVELOPE 1,1,-1,1,-1,0,15,30,0,0,0 ,0,W/2.5,0 170 SOUND 1,1,W/2,1 180 IF A=55 THEN 270 190 W=W+1 200 IF W>34 AND W<70 PRINT CHR$130"Dra cula has detected your presence." 210 IF W>69 AND W<105 PRINT CHR$130"Dr acula is out to destroy you." 220 IF W>104 AND W<140 PRINT CHR$130"I 'd advise you to hurry up." 230 IF W>139 AND W<175 PRINT CHR$130"Y ou do not have much time left." 240 IF W>174 AND W<210 PRINT CHR$130"D racula is coming nearer." 250 IF W>209 PRINT CHR$130"He does not intend to let you escape." 260 IF W=245 THEN 1620 270 IF A=54 AND E(9)<>0 PRINT CHR$130" The dwarf kills you.":GOTO 1010 280 IF A=53 AND E(7)<>0 AND E(48)<>47 AND E(47)<>34 PRINT CHR$130"Dracula has hypnotised you.":GOTO 1010 290 IF A=53 AND E(16)<>0 THEN 1620 300 IF A=11 AND B$<>"Y" PRINT CHR$130" A computer asks if you think that this " CHR$130"program is good(answer Y or N)." 310 IF E(36)=49 AND E(43)=49 E(36)=56: PRINT CHR$130"The serpent has killed the dragon." 320 IF A=28 AND E(44)<>-1 PRINT CHR$13 0"You have fallen down the pit.":GOTO 10 10 330 IF A=28 PRINT CHR$130" Your rubber -boots give you grip on the"CHR$130"slip pery surface." 340 IF A=23 AND E(14)=0 and E(2)<>0 E( 14)=56:PRINT CHR$130"The jewel has falle n into the pool." 350 IF A=14 AND R<4 PRINT CHR$130"The werewolf has awoken and killed you.":GOT O 1010 360 IF A=55 AND E(14)<>0 PRINT CHR$130 "You have failed to recover the jewel.": GOTO 1010 370 IF E(40)=27 AND E(20)=27 E(40)=56: E(20)=56:E(21)=27:PRINT CHR$130"A skelet on key has been formed." 380 IF E(23)=42 AND E(39)=42 E(23)=56: PRINT CHR$130"Your acid has dissolved th e web." 390 IF A=35 AND E(4)<>0 OR A=24 AND E( 10)<>56 PRINT CHR$130"You have been atta cked by wolves.":GOTO 1010 400 IF A=35 AND E(10)=A PRINT CHR$130" Your lit-candles frighten the wolves." 410 IF A<>32 E(31)=32 420 IF A=7 AND E(1)<>0 PRINT CHR$130"A robot has killed you.":GOTO 1010 430 IF A=7 AND E(30)=56 E(30)=7:PRINT CHR$130"A robot,seeing your gun,dropped a key." 440 IF A=22 PRINT CHR$130"The ceiling has collapsed.":GOTO 1010 450 IF A=26 AND E(13)<>0 PRINT CHR$130 "You are hit by laser beams.":GOTO 1010 460 IF A=26 PRINT CHR$130"Your shield deflects some laser beams." 470 FOR B=1 TO A:READ A$:NEXT B 480 VDU 31,0,3,130:PRINT A$ 490 PRINT'CHR$131"Exits:- ";:RESTORE 7 70:FOR C=1 TO A:READ D:NEXT C:IF D<>0 PR INT":North:"; 500 RESTORE 780:FOR C=1 TO A:READ D:NE XT C:IF D<>0 PRINT":South:"; 510 RESTORE 790:FOR C=1 TO A:READ D:NE XT C:IF D<>0 PRINT":East:"; 520 RESTORE 800:FOR C=1 TO A:READ D:NE XT C:IF D<>0 PRINT":West:"; 530 PRINT''CHR$132"Objects:- "; 540 H=0:RESTORE 810 550 FOR G=1 TO 50:READ C$:IF E(G)<>A O R H=6 NEXT G ELSE PRINT":";C$;":";:H=H+1 :IF H<>2 AND H<>4 NEXT G ELSE PRINT'CHR$ 132" ";:NEXT G 560 PRINT''CHR$133"Inventory:- "; 570 F=0:RESTORE 810
580 FOR G=1 TO 50:READ C$:IF E(G)<>0 A
ND E(G)<>-1 OR F=6 NEXT G ELSE PRINT":"; C$;":";:F=F+1:IF F<>2 AND F<>4 NEXT G EL SE PRINT'CHR$133" ";:NEXT G 590 VDU 31,0,15,134:PRINT"[----------- --------------------------]" 600 VDU 31,0,19,134:PRINT"[----------- --------------------------]":VDU 31,0,17 ,135 610 IF A=55 E(9)=56:GOTO 1790 620 IF A=11 AND B$<>"Y" INPUT"Command? "B$:CLS:VDU 31,0,21:GOTO 150 630 INPUT"Command? "B$ 640 CLS:VDU 31,0,21,130 650 IF E(22)=0 AND B$="X*Y+Z-5=W/V" E( 22)=56:E(40)=0:PRINT"A glue has been for med.":GOTO 150 660 IF E(29)=56 AND LEFT$(B$,1)="N" PR INT"The guard will not let you pass.":GO TO 150 670 IF LEFT$(B$,3)="EXA" OR LEFT$(B$,3 )="WEA" OR LEFT$(B$,3)="EMP" THEN 900 680 IF LEFT$(B$,1)<>"N" THEN 690 ELSE RESTORE 770:FOR C=1 TO A:READ D:NEXT C:I F D=0 THEN 760 ELSE 720 690 IF LEFT$(B$,1)<>"S" THEN 700 ELSE RESTORE 780:FOR C=1 TO A:READ D:NEXT C:I F D=0 THEN 760 ELSE 720 700 IF LEFT$(B$,1)<>"E" THEN 710 ELSE RESTORE 790:FOR C=1 TO A:READ D:NEXT C:I F D=0 THEN 760 ELSE 720 710 IF LEFT$(B$,1)<>"W" THEN 900 ELSE RESTORE 800:FOR C=1 TO A:READ D:NEXT C:I F D=0 THEN 760 720 IF A=32 AND E(31)=A PRINT"The plan t will not let you pass.":GOTO 150:ELSE IF A=42 AND E(23)=A PRINT"You are caught in the web.":GOTO 150 730 IF A=44 AND E(43)=44 AND LEFT$(B$, 1)="S" PRINT"The serpent is blocking the exit.":GOTO 150:ELSE IF A=47 AND E(12)< >56 AND LEFT$(B$,1)="S" PRINT"You cannot pass the flames.":GOTO 150 740 IF A=49 AND E(36)<>56 AND LEFT$(B$ ,1)="S" PRINT"The dragon will not move." :GOTO 150:ELSE IF A=17 AND E(46)=A AND ( LEFT$(B$,1)="N" OR LEFT$(B$,1)="E") PRIN T"The exit is sealed.":GOTO 150 750 IF E(15)=45 AND A=45 AND LEFT$(B$, 1)="W" OR E(15)=48 AND A=48 AND LEFT$(B$ ,1)="N" OR A=50 AND (E(17)=0 OR E(18)=0 OR E(19)=0) PRINT"You cannot pass the gh ost.":GOTO 150:ELSE A=A+D:GOTO 150 760 PRINT"No exit!":GOTO 150 770 DATA 1,0,2,3,0,-3,3,-4,2,2,0,4,0,4 ,0,5,5,0,-5,-5,0,0,7,7,7,-7,0,-8,0,0,4,0 ,0,0,0,0,3,0,0,0,-4,3,-4,0,0,-3,-3,2,-2, 0,-2,0,0,0,1 780 DATA 0,-1,3,4,-2,0,-3,0,0,-3,-2,-2 ,0,5,5,-4,0,-4,7,8,-5,0,0,0,0,0,0,0,0,-7 ,-7,-7,0,0,-4,0,4,0,4,-3,0,0,3,3,-3,0,2, 0,2,-2,0,0,0,1,0 790 DATA 0,2,-1,0,0,0,0,0,-4,4,2,6,-3, 0,-4,7,-5,7,8,0,0,0,0,-7,0,7,0,6,0,6,0,5 ,5,0,-6,0,0,4,-4,4,0,0,0,0,0,0,0,-3,0,0, 0,-2,0,0,0 800 DATA 0,1,0,-2,4,0,0,0,0,3,4,0,-2,- 4,0,6,7,-6,0,0,0,0,-7,0,-7,0,-8,0,6,0,0, 0,-7,-6,4,-6,-5,-5,0,0,0,-4,0,-4,3,0,0,0 ,0,2,0,0,0,0,0 810 DATA GUN,WALLET,CONTAINER,LIT-CAND LES,COFFIN,WINE-LABEL,CRUCIFIX,LASER-GUN ,SILVER-COIN,WOLVES,COMPUTER,BUCKET,SHIE LD,JEWEL,GHOST,STAKE,SWORD,DAGGER,AXE,BR OKEN-BONES,SKELETON-KEY,CHEMICALS,SPIDER 'S-WEB,CLUE,MUSIC,RECORDER,WRITING 820 DATA GUARD,DEAD-GUARD,KEY,PLANT,CU PBOARD,ROPE,DWARF,DOOR,SAD-DRAGON,DRACUL A,MIRROR,ACID,GLUE,CLOCK,WEREWOLF,SERPEN T,RUBBER-BOOTS,SWITCH,SEALED-EXITS,GARLI C,VAMPIRE,MALLET,MEAT-CHOPPER 830 DATA GET,DRO,KIL,REA,PLA,KIC,OPE,M IX,EXA,WEA,EMP,PRE,BLA,TIE,LOW,CLI,CUT,L IF,HAM,CHO 840 DATA Cell,Corridor,W.End of corrid or,E.End of corridor,Library,Cell,Dining room,Outside of a locked door,Study 850 DATA S.End of main hall,Computer r oom,Main hall,Living room,Werewolf's cha mber,Candlelit room,N.End of main hall,C hamber of suspense,Chamber of horror 860 DATA Weapon room,Wine room,Music r oom,Chamber of death,Room with a pool,Bu rial chamber,Armour room,Torture chamber ,Skeleton chamber 870 DATA Room with a pit,Room with sol dier ants,Room with a clock,Room with a sarcophagus,Bright room,Workroom,Dracula 's bedroom,Room with cages,Kitchen 880 DATA Room of mirrors,Laboratory,Se rvants' quarters,Echo chamber,Electrc ge nerator room,Room with a giant spider,Ch amber of fear,Room with a serpent,Dull r oom 890 DATA Room with a clue,Room with a fire in it,Dim room,Room with a dragon,D ark room,Treasure chamber,Room which is pitch black,Room with a hole,Room with a dwarf,Outside of castle 900 M=0:N=0:D=0:IF LEFT$(B$,3)="QUI" T HEN 1010 910 RESTORE 830:FOR I=1 TO 20:READ C$: IF LEFT$(B$,3)=C$ M=I 920 NEXT I:IF M<>0 THEN 940 930 PRINT"I do not understand you.":GO TO 150 940 RESTORE 810:D$=MID$(B$,3,4):FOR J= 1 TO 50:READ C$:C$=LEFT$(C$,3) 950 FOR K=4 TO 10:IF LEFT$(D$,1)<>" " AND C$=MID$(D$,2,3) N=1 960 IF J=1 AND LEFT$(D$,1)="-" K=10:GO TO 980 970 IF C$=MID$(D$,2,3) O=J:K=10:J=50 E LSE D$=MID$(B$,K,4) 980 NEXT K:NEXT J:IF O=0 PRINT"Pardon? ":GOTO 150 990 IF N=1 PRINT"Learn to type."'CHR$1 30; 1000 ON M GOTO 1050,1110,1150,1220,1280 ,1320,1350,1430,1460,1510,1550,1590,1630 ,1670,1720,1760,1810,1850,1890,1950 1010 VDU 23;11,0;0;0;0,31,6,10:PRINT"Pr ess space to start again":IF INKEY$(50)= " " VDU 23,11,255;0;0;0:GOTO 20 ELSE VDU 31,6,10:PRINT" ":IF INKEY$(50)=" " VDU 23;11,255;0;0;0 :GOTO 20 ELSE 1010 1020 PRINT"I cannot do that.":GOTO 150 1030 PRINT"O.K.":GOTO 150 1040 PRINT"I am not carrying it.":GOTO 150 1050 IF O=5 OR O=10 OR O=11 OR O=15 OR O=20 OR O=23 OR O=24 OR O=25 OR O=27 OR O=28 OR O=31 OR O=32 OR O=34 OR O=36 OR O=37 OR O=39 AND E(3)<>0 OR O=41 OR O=42 OR O=45 OR O=46 OR O=47 AND T=0 OR O=48 OR O=16 AND E(48)=34 THEN 1020 1060 IF F=6 PRINT"I am carrying too muc h.":GOTO 150 1070 IF E(O)=A E(O)=0:GOTO 1030 1080 PRINT"I do not see it here.":GOTO 150 1090 PRINT"I do not see them here.":GOT O 150 1100 PRINT"I am not carrying them.":GOT O 150 1110 IF E(O)<>0 AND E(O)<>-1 THEN 1040 1120 IF H=6 OR H=5 AND O=3 AND E(39)=0 PRINT"I do not see a place to put it.":G OTO 150 1130 IF O=3 AND E(39)=0 E(39)=A 1140 E(O)=A:GOTO 1030 1150 IF (O<>28 OR E(29)<>56) AND O<>10 AND O<>15 THEN 1020 1160 IF O=15 AND A=50 PRINT"I cannot do that.":GOTO 150 1170 IF O=10 AND A<>35 OR E(O)=56 THEN 1090 1180 IF O=10 AND E(18)<>0 OR O=15 AND E (17)<>0 PRINT"I have nothing to kill wit h.":GOTO 150 1190 IF A=45 AND O=15 E(O)=48:GOTO 1030 1200 IF A=48 AND O=15 E(O)=50:GOTO 1030 1210 E(O)=56:E(29)=1:GOTO 1030 1220 IF O=27 AND A=6 PRINT"Escape befor e Dracula kills you.":GOTO 150 1230 IF O=24 AND A=46 PRINT" An exit fr om this castle lies behind a"CHR$130"loc ked door.":GOTO 150 1240 GOTO 1020 1250 IF O=6 AND E(O)<>0 THEN 1040 1260 IF O=6 PRINT"It gives the formula: - X*Y+Z-5=W/V":GOTO 150 1270 GOTO 1020 1280 IF O<>25 AND O<>26 THEN 1020 1290 IF A<>21 AND A<>40 THEN 1080 1300 IF A=40 PRINT" Wolves fear lit-can dles,and laser-guns"CHR$130"can blast se aled-doors.":GOTO 150 1310 A=29:PRINT" You have been thrown t hrough a door in"CHR$130"the west wall." :GOTO 150 1320 IF O<>31 THEN 1020 1330 IF A<>E(O) THEN 1080 1340 E(O)=56:GOTO 1030 1350 IF O<>35 AND O<>32 THEN 1020 1360 IF A<>8 AND A<>52 THEN 1080 1370 IF E(30)=0 AND A=8 PRINT"You have fallen through a trapdoor.":GOTO 1010 1380 IF E(30)=0 AND E(33)<>56 PRINT"It is already open.":GOTO 150 1390 IF E(30)=0 AND E(33)=56 E(33)=52:G OTO 1030 1400 IF E(21)=0 AND A=8 A=53:GOTO 1030 1410 IF E(21)=0 PRINT"The key does not fit.":GOTO 150 1420 PRINT"I have no key.":GOTO 150 1430 IF O<>22 THEN 1020 1440 IF E(O)<>0 THEN 1100 1450 PRINT"With what formula?":GOTO 150 1460 IF O<>12 AND O<>38 AND O<>41 THEN 1020 1470 IF O=41 AND A=30 R=RND(6):PRINT"It is ";R;" o'clock.":GOTO 150 1480 IF E(O)<>0 THEN 1040 1490 IF O=12 PRINT"There is water in th e bucket.":GOTO 150 1500 IF O=38 PRINT"You must escape with in ";245-W;" moves.":GOTO 150 1510 IF O<>44 THEN 1020 1520 IF E(O)<>0 AND E(O)<>-1 THEN 1100 1530 IF E(O)=-1 PRINT"I am already wear ing them."':GOTO 150 1540 E(O)=-1:GOTO 1030 1550 IF O<>12 THEN 1020 1560 IF E(O)<>0 THEN 1040 1570 IF A<>47 PRINT"I see no place to e mpty it.":GOTO 150 1580 E(O)=56:PRINT" A passage has been cleared through the"CHR$130"flames.Your bucket has melted.":GOTO 150 1590 IF O<>45 THEN 1020 1600 IF A<>41 THEN 1080 1610 PRINT"You have switched off the li ghts." 1620 PRINT CHR$130"Dracula has killed y ou.":GOTO 1010 1630 IF O<>46 THEN 1020 1640 IFA<>17 OR E(46)=56 THEN 1090 1650 IF E(8)<>0 PRINT"I have nothing to blast with.":GOTO 150 1660 E(46)=56:GOTO 1030 1670 IF O<>33 THEN 1020 1680 IF E(O)<>0 THEN 1040 1690 IF A<>53 PRINT"I see no place to a ttach it to.":GOTO 150 1700 IF E(37)<>56 PRINT"Dracula will no t let you.":GOTO 150 1710 S=1:PRINT"It is attached to a conv enient post.":GOTO 150 1720 IF O<>33 THEN 1020 1730 IF A<>53 PRINT"I see no place to l ower it to.":GOTO 150 1740 IF S<>1 PRINT"It has fallen down t he hole.":E(O)=56:GOTO 150 1750 S=2:GOTO 1030 1760 IF O<>33 OR A<>53 THEN 1020 1770 IF S<>2 PRINT"You have fallen down the hole.":GOTO 1010 1780 A=54:GOTO 150 1790 W=245-W:IF W>X X=W 1800 PRINT"Score=";W;" Best Score=";X :GOTO 1010 1810 IF O<>47 THEN 1020 1820 IF E(19)<>0 PRINT"I have nothing t o cut with.":GOTO 150 1830 IF A<>46 OR T=1 PRINT"I see nothin g to cut.":GOTO 150 1840 T=1:GOTO 1030 1850 IF O<>5 THEN 1020 1860 IF A<.34 THEN 1080 1870 IF H=6 OR E(48)<>56 PRINT"It will not move.":GOTO 150 1880 E(48)=34:GOTO 1030 1890 IF O<>16 THEN 1020 1900 IF E(O)<>0 PRINT"I have no stake." :GOTO 150 1910 IF E(49)<>0 PRINT"I have no mallet .":GOTO 150 1920 IF H<>6 AND A=34 AND E(48)=A PRINT "The vampire is dead,but your mallet has "CHR$130"disappeared.":E(49)=53:E(16)=34 :U=1:GOTO 150 1930 IF A=53 AND E(37)=A PRINT"You have killed Dracula.":E(37)=56:GOTO 150 1940 GOTO 1020 1950 IF O<>48 THEN 1020 1960 IF E(50)<>0 PRINT"I have nothing t o chop with.":GOTO 150 1970 IF A<>34 OR E(O)<>34 THEN 1080 1980 IF U=0 PRINT"It is still alive.":G OTO 150
1990 E(48)=57:GOTO 1030
2000 DATA 5,9,13,15,34,20,39,43,31,35,1 1,36,25,51,45,33,19,19,19,27,56,38,42,46 ,21,40,6,1,56,56,32,52,56,54,8,49,53,37, 18,56,30,14,44,29,41,17,46,56,3,36
The plan for the adventure, "Dracula's castle", is on the two previous pages. In each room, the objects present at the start of the game are given in brackets. If you are wondering why the rooms fifty-three, fifty-four, and fifty-five do not correspond to the method of numbering rooms, this is because when I oringally wrote the adventure, I had not fully considered these rooms, and so when I did think of them, they were tagged on at the end. The room numbers were not changed, since "A" is set equal to fifty- three on opening the locked door with the right key, instead of being added to a value in the variable "D".
As in the model adventure, the object corresponding to each value of "E" is given:
E(1) -- GUN
E(2) -- WALLET
E(3) -- CONTAINER
E(4) -- LIT-CANDLES
E(5) -- COFFIN
E(6) -- WINE-LABEL
E(7) -- CRUCIFIX
E(8) -- LASER-GUN
E(9) -- SILVER-COIN
E(10) -- WOLVES
E(11) -- COMPUTER
E(12) -- BUCKET
E(13) -- SHIELD
E(14) -- JEWEL
E(15) -- GHOST
E(16) -- STAKE
E(17) -- SWORD
E(18) -- DAGGER
E(19) -- AXE
E(20) -- BROKEN-BONES
E(21) -- SKELETON-KEY
E(22) -- CHEMICALS
E(23) -- SPIDER'S WEB
E(24) -- CLUE
E(25) -- MUSIC
E(26) -- RECORDER
E(27) -- WRITING
E(28) -- GUARD
E(29) -- DEAD-GUARD
E(30) -- KEY
E(31) -- PLANT
E(32) -- CUPBOARD
E(33) -- ROPE
E(34) -- DWARF
E(35) -- DOOR
E(36) -- SAD-DRAGON
E(37) -- DRACULA
E(38) -- MIRROR
E(39) -- ACID
E(40) -- GLUE
E(41) -- CLOCK
E(42) -- WEREWOLF
E(43) -- SERPENT
E(44) -- RUBBER-BOOTS
E(45) -- SWITCH
E(46) -- SEALED-EXITS
E(47) -- GARLIC
E(48) -- V AMPIRE
E(49) -- MALLET
E(50) -- MEAT-CHOPPER
Since I have already made a detailed analysis of an adventure, it is only necessary in this adventure to point out where the various routines are in the program:
1)
7)
400 IF A=35 AND E(10)=A PRINT CHR$130"Your lit-candles frighten the wolves."
to:
400 IFA=35ANDE(10)=A PRINTCHR$130"Your lit-candles frighten the wolves."
Note that the space is kept in between "E(10)=A" and "PRINT . . .", since the computer would otherwise think that "APRINT . . ." is a variable, and come up with the error message "No such variable". Repeated over a number of lines, this will save sufficient memory for the program to run on a 16K BBC Micro.
If you have another micro and you find that there is not enough memory left within your 16K (assuming that your micro has 16K), then you will probably require to delete pieces of information. The instructions are optional although preferable, but they may be deleted to save memory -- they are not essential for the program to run smoothly; likewise, the sound routine can also be deleted. If there is still insufficient memory, then the "PRINT" statements should be pruned to the bare essentials. If further memory saving is required then the user will have to study the listing and the documentation, and delete routines, which, to them, seem the least significant to the running . of the program, until it fits within the memory. For instance, in my original version of this program for the ZX80, I did not include the necessity to kill the vampire in the coffin.
When playing this larger adventure, you may notice that there is a difference in speed. This is because, with the increase in size, the computer has more things to check, and hence will take longer to come to its decisions.
Although it is preferable to have the listing and structure of the adventure as neat as possible, it often happens that complications arise, and the neatness suffers: this may occur through the laziness of the programmer -- a great deal of time may be required to iron out any problems in structuring an adventure, since when actually writing a program, it is hard to keep to the model version for that program; if your micro does not have the facility for renumbering the line numbers, then structural difficulties may also arise. However, the main objective when writing a program, is to make it look good on the screen, and the main benefits arising from a good structure are a slight increase in speed, and a saving in memory. In short, try and work as closely as possible to the structure of the model adventure, and if any difficulties arise, like, for example, having the moveable objects mixed with those objects which may not be moved -- this is not a pleasant thing to sort out in a program -- then attempt to fix it so that any player would not notice any obvious difference when playing the game.
I have included the adventure "Dracula's castle" in the book, as it is the first one that I have written, and I have improved upon the standard to which it was origianlly written. My first adventures were basically written around a six by eight matrix of rooms, but in my more recent ones, I try to devise more irregular matrices.