C 64
Listing des Monats

Listing des Monats: Castle of Doom

Castle of Doom ist ein Adventure, das es in sich hat. Man kann nicht nur drei verschiedene Versionen auswählen, es ist zudem gar nicht einfach, bis ans Ende durchzustehen. Dazu brauchen Sie Geduld, eine gehörige Portion Phantasie und – viel Zeit.

Bild 1. Die Burg des Grauens
Bild 2. Welcher Weg ist richtig
Bild 3. Beißen Sie sich die Zähne aus: Es ist nicht einfach, das Spiel durchzustehen

Zunächst einige wesentliche Informationen zum Ablauf des Spiels:

Am Anfang des Spiels kann man sich für eine von drei verschiedenen Versionen entscheiden. Bei allen Versionen ist das »Spielfeld« gleich, doch das Ziel, das es zu erreichen gilt, ist jeweils ein anderes. Die Kommandos müssen jeweils aus zwei Worten bestehen, die durch Leerraum getrennt werden. Beide Worte können beliebig abgekürzt werden, doch man muß darauf achten, daß keine Mißverständnisse auftreten.

Das Programm beinhaltet eine kurze Anleitung, in der die wichtigsten Punkte der Befehlseingabe nochmals erwähnt werden. Zudem sind alle Verben, die der Computer versteht, aufgeführt. Wird dennoch ein Wort benutzt, das der Computer nicht kennt, so gibt er an, welches der eingegebenen Worte ihm unbekannt ist.

Auf dem Bildschirm sind immer zu sehen:

(Bernd Weißbecker/gk)

Erklärung der Programmzeilen für Castle of Doom:

Zur Erläuterung des Programms sind hier die verschiedenen Abschnitte des Programms aufgeführt:

1 Sprung zur Befehlsausführung
5-95 DATAs einlesen, Erklärung?
100—160 Version auswählen
165-176 Zauberwörter bestimmen
179—740 Bilder zeichnen
748—860 Kommando auswerten
870-940 Bewegen
950-980 Sprung zur Befehlsausführung berechnen und ausführen
999—5382 Befehlsausführung
6500—6528 Befehl »sage«
7000—7065 Besitz + Gegenstände anzeigen
7100—7125 Befehl »nimm«
7200—7415 Befehl »wirf«
7500-7560 Erklärung
7600-7720 verloren
7800-7880 gewonnen
8000—8110 DATAs

Da die Kommandoauswertung recht ungewöhnlich ausgeführt wird, folgt hier noch eine Beschreibung der betreffenden Programmzeilen:

755 Kommandoeingabe
760-785 Zerlegen in Verb/Hauptwort
795—810 Vergleich mit der Liste aller bekannten Wörter
Zuordnung:
X = Nummer des Verbs (1—14)
Y = Nummer des Hauptworts (1—21)
830-845 Untersuchen, ob eine sinnvolle Kombination von Verb und Hauptwort vorliegt
960—980 Aus X und Y wird die Zeilennummer berechnet, in der die Antwort auf das eingegebene Kommando steht. Die berechnete Zeilennummer wird in ihre Ziffern zerlegt, und diese werden in den Programmspeicher hinter das GOTO in Zeile 1 gePOKEd. Anschließend wird ein GOTO 1 aus-geführt.

Variablen-Definition zum Listing des Monats:

Zum Abschluß hier noch die wichtigsten Variablen:

V$(1...14) Liste Verben
H$(1...21) Liste Hauptwörter
RI$(1...19) mögliche Richtungen
ZI$(1...19) Nachbarfelder
G$(1...12) Liste Gegenstände
G(1..12) Ort der Gegenstände
P Position
V Version
Z1$,Z2$ Zauberwörter
ZA = 0,1,2 Zauberwort gesagt?
K$ Kommando
V$ Verb
H$ Hauptwort
KB$(1...9) mögliche Kombinationen
MO = 1 Monster besiegt
GE = 1 Geist besiegt
MR = 1 Monster anwesend
GS = 1 Geist anwesend
ZB = 1 Zauberer anwesend
GG Anzahl Gegenstände
0 goto5
1 goto!!!!
2 rem
3 rem zeilen 0 und 1 nicht aendern !!!!
4 rem
5 dimv$(14),h$(21),ri$(19),zi$(19),g$(12),g(12)
6 l$="{rvon}                        "
7 cl$="{CBM-G}                      {CBM-M}"
8 ef$="                                       "
10 poke53280,14:poke53281,14:poke53272,23:p=15:qq=54272:vi=53248
15 pokevi+21,0:print"{clr}"spc(12)"{blk}{down}{down}{down}{down}{down}{down}{down}{down}CASTLE{$a0}OF{$a0}DOOM":rem castle of doom
20 print"{down}{down}{wht}    Ein Adventure von B.Weissbecker"
25 printspc(11)"{down}{down}* Bitte warten *"
30 fori=1to14:readv$(i)
35 ifi<10thenreadkb$(i)
40 next
45 fori=1to21:readh$(i):next
50 fori=1to19:readri$(i),zi$(i):next
55 fori=1to12:g$(i)=h$(i):readg(i):next
60 fori=1to4:readzx$(i),zy$(i):next
65 fori=13to15
70 forj=0to62:readk:poke64*i+j,k:next:next
85 print"{up}  Moechten Sie eine Erklaerung ? (J/N)"
90 geta$:ifa$="j"then7500
95 ifa$<>"n"then90
100 print"{clr}{blk}"spc(10)"{down}CASTLE{$a0}OF{$a0}DOOM"
105 print"{down}{down}{cyn} Bei diesem Adventure koennen Sie zwi-"
110 print"{down} schen drei Versionen waehlen :":print"{down}  Wollen Sie :"
115 print"{down}  1 - Eine verzauberte Prinzessin":printspc(6)"{down}retten"
120 print"{down}  2 - Einen boesen Zauberer besiegen"
125 print"{down}  3 - Einen Schatz suchen"
130 print"{down}{down} Bitte geben Sie die entsprechende"
135 print"{down} Kennziffer ein."
140 poke198,0:wait198,1
145 geti$:ifasc(i$)<49orasc(i$)>51then140
150 v=val(i$):ifv<>2then160
155 ri$(13)="w-o":zi$(13)="1214":ri$(9)="w-o-r":zi$(9)="081018"
157 ri$(8)="n-s-o":zi$(8)="051209"
160 ifv=1theng(7)=1
165 fori=1to4:j(i)=1+4*rnd(ti):next
170 z1$=zx$(j(1))+zy$(j(2))
175 z2$=zx$(j(3))+zy$(j(4))
176 ifz1$=z2$then165
177 ti$="000000"
179 rem **** bilder zeichnen ****
180 print"{clr}{blk}";:poke53272,21:pokevi+21,0:pokevi+23,0:pokevi+29,0
185 fori=1to20:printspc(8)cl$:next
190 fori=1824to1863:pokei,99:pokei+qq,0:next
195 ifp>11then415
197 poke53280,5:poke53281,5
200 print"{home}";:fori=1to4:printspc(8+i)"M"spc(22-2*i)"N":next
205 printspc(13)"{up}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}"
210 fori=1to10:printspc(12)"{CBM-M}"spc(14)"{CBM-G}":next
215 printspc(13)"{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{up}"
220 fori=1to5:printspc(13-i)"N"spc(12+2*i)"M":next
225 fori=1tolen(ri$(p))step2:a$=mid$(ri$(p),i,1)
230 ifa$="n"then250
235 ifa$="w"then260
240 ifa$="o"then265
245 next:goto270
250 forj=1402to1562step40:fork=0to3:pokej+k,160:pokej+k+qq,0:next:next
255 poke1402,254:poke1405,252:goto245
260 forj=1552to1752step40:pokej,160:pokeqq+j,0:next:poke1752,105:goto245
265 forj=1575to1775step40:pokej,160:pokeqq+j,0:next:poke1775,95:goto245
270 onpgoto275,740,300,315,740,325,345,740,355,375,395
275 onvgoto740,280,285
280 poke2040,15:pokevi+39,0:pokevi,150:pokevi+1,140:pokevi+29,1:pokevi+23,1
282 pokevi+21,1:zb=1:goto740
285 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"spc(13)"{CBM-P}{CBM-P}{CBM-P}{CBM-P}":printspc(12)"N   N{CBM-H}"
290 printspc(11)"N   N {CBM-H}":printspc(11)"O{CBM-Y}{CBM-Y}P  {CBM-H}":printspc(11)"{CBM-H}$${CBM-N} N"
295 printspc(11)"L{CBM-P}{CBM-P}{SHIFT-@}N schatz":fori=1to2000:next:goto7830
300 ifleft$(ri$(3),1)="n"then740
305 forj=1402to1562step40:fork=0to3
310 pokej+k,160:pokej+k+qq,06:next:next:printspc(16)"{up}{up}{up}{up}{blk}spiegel":goto740
315 print"{home}{down}{down}"spc(13)"{CBM-*}{rvon}    {rvof}{SHIFT-POUND}":printspc(14)"{CBM-*}{rvon}  {rvof}{SHIFT-POUND}":printspc(15)"{CBM-H}{CBM-N}"
320 fori=1to10:printspc(15)"OP":next:goto740
325 print"{home}{brn}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}"spc(13)"{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}":printspc(13)"L{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
330 printspc(12)"N    N{CBM-H}":printspc(11)"N    NN{CBM-H}":printspc(10)"N    NN{CBM-Y}"
335 printspc(9)"O{CBM-Y}{CBM-Y}{CBM-Y}PNN":printspc(9)"{CBM-H}   {CBM-N}N":printspc(9)"L{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}  schlafzimmer"
340 goto740
345 ifge=1then740
350 poke2040,13:pokevi+39,1:pokevi,150:pokevi+1,150:pokevi+23,1:pokevi+29,1
351 pokevi+21,1:ifg(12)<>0thenfori=1to2000:next:goto7630
352 gs=1:goto740
355 print"{home}{blk}{down}"spc(11)"burghof / brunnen":printspc(13)"{down}OLOLOLOP{SHIFT-@}P{SHIFT-@}P{SHIFT-@}P"
360 printspc(17)"{down}{down}{down}{down}{down}{down}{down}{down}{down}{CBM-@}{CBM-P}{CBM-O}{CBM-O}{CBM-P}{CBM-@}":printspc(16)"{rvon}        "
365 printspc(16)"{CBM-H}{CBM-T}{CBM-Y}{CBM-U}{CBM-U}{CBM-Y}{CBM-T}{CBM-N}":printspc(16)"{CBM-H}      {CBM-N}":printspc(16)"{CBM-Y}EDCCDE{CBM-Y}"
370 goto740
375 poke214,14:print
380 iffa=1thenprintspc(23)"{down}{CBM-*}{rvon}   {CBM-*}":printspc(24)"{CBM-*}{rvon}   {CBM-*}":goto740
385 printspc(23)"{CBM-P}{CBM-P}{CBM-P}{CBM-P}":printspc(23)"M   M"
390 printspc(16)"quadrat M   M":printspc(25)"{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}":goto740
395 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}"spc(23)"{CBM-P}{CBM-P}{CBM-P}{CBM-P}":printspc(22)"{CBM-N}M   M":printspc(22)"{CBM-N} OP{CBM-Y}P"
400 printspc(15)"L{SHIFT-@}     {CBM-N} {CBM-H}{CBM-N}.{CBM-N}":printspc(15)"L{SHIFT-@}     {CBM-N} {CBM-H}{CBM-N} {CBM-N}"
405 printspc(14)"{rvon}{SHIFT-POUND}  {CBM-*}{rvof}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}ML{SHIFT-@}{CBM-P}{SHIFT-@}":printspc(13)"{rvon}{SHIFT-POUND}    {CBM-*}"
410 printspc(21)"schrank":goto740
415 ifp>14then445
417 poke53280,8:poke53281,8
420 print"{home}";:fori=1to6:printspc(8)"{blu}"l$:next
425 fori=55504to55514step2:pokei,7:next:fori=55517to55527step2:pokei,7:next
430 fori=1to11:print"{yel}"spc(8)l$:next:fori=1to3:print"{brn}"spc(8)l$:next
435 ifleft$(ri$(p),1)<>"n"then740
440 poke214,11:print"{blk}":fori=1to5:printspc(18)"{rvon}    ":next
442 goto740
445 poke53280,14:poke53281,14:onp-14goto555,450,485,500,540
450 print"{home}{yel}{down}{down}{down}{down}{down}{down}"spc(20)"{CBM-D}":printspc(18)"{rvon}   "
460 printspc(17)"{brn}{CBM-D}{rvon} N {CBM-C}":printspc(16)"{rvon}{SHIFT-POUND} N   {CBM-C}"
465 printspc(15)"{CBM-D}{rvon} (      {CBM-C}":printspc(14)"{CBM-I}{rvon}{CBM-V}  M       {CBM-C}"
470 printspc(13)"{rvon}{SHIFT-POUND}     M       {CBM-C}"
475 fori=1to7:printspc(8)l$:next
480 printspc(9)"{up}{up}{up}{up}{up}{up}{rvon}berg"
481 iflen(ri$(16))=5thenprintspc(9)"{down}{rvon}steiler weg nach oben"
482 goto740
485 print"{home}"spc(9)"{down}{down}{down}{down}steiler berghang,":printspc(9)"{down}hoehle"
490 printspc(21)"{down}{down}{down}{CBM-I}":printspc(19)"{CBM-D}{rvon}   {CBM-V}{CBM-C}{rvof}{CBM-F}"
495 fori=1to6:printspc(19)"{rvon}       ":next:goto740
500 print"{home}";:fori=1to19:printspc(8)l$:next
505 print"{home}"spc(9)"{rvon}{down}im brunnen ..."
510 ifv<>3then740
515 ifmo=1thenprint"{down}":goto530
520 poke2040,14:pokevi+39,13:pokevi,200:pokevi+1,150:pokevi+23,1:pokevi+29,1
525 printspc(9)"{rvon}{down}monster":pokevi+21,1:mr=1
530 printspc(9)"{rvon}{down}tuer{down}{down}{down}{down}{down}":fori=1to7:printspc(16)"     ":next
535 ifri$(18)="h"thenpoke1601,114
537 goto740
540 print"{home}";:fori=1to20:printspc(8)l$:next
545 print"{home}"spc(9)"{rvon}{down}in der hoehle ..."
550 printspc(9)"{rvon}{down}stockdunkel hier ...":goto740
555 print"{home}{red}{down}"spc(13)"O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P":printspc(13)"{CBM-H} b a s a r {CBM-N}"
560 printspc(13)"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
565 ifxx=1then655
570 printspc(9)"{blk}{down}ein   befreundeter"
575 printspc(9)"{down}haendler ist bereit,":printspc(9)"{down}ihnen zwei der folgen-"
580 printspc(9)"{down}den gegenstaende zu":printspc(9)"{down}ueberlassen :"
585 printspc(9)"{down}{rvon}1{rvof} glaskugel {rvon}2{rvof} kaefig"
590 printspc(9)"{down}{rvon}3{rvof} amulett   {rvon}4{rvof} buch"
595 print"{down}{down}{down}{down}  bitte entsprechende nummern eingeben"
600 geti$:ifi$=""then600
605 ifasc(i$)<49orasc(i$)>52then600
610 onval(i$)gosub635,640,645,650
615 getj$:ifj$=""orj$=i$then615
620 ifasc(j$)<49orasc(j$)>52then615
625 onval(j$)gosub635,640,645,650
630 xx=1:gg=gg+2:gosub7000:goto655
635 poke1633,49:g(1)=0:return
640 poke1645,50:g(2)=0:return
645 poke1713,51:g(3)=0:return
650 poke1725,52:g(4)=0:return
655 yy=0:fori=1to4:ifg(i)=0thenyy=yy+1
657 next:ifyy<>2then710
660 print"{home}{blk}{down}{down}{down}{down}{down}"spc(9)"wollen sie die gegen-"
665 printspc(9)"{down}staende, die sie hier":printspc(9)"{down}erhalten haben, noch  "
670 printspc(9)"{down}einmal umtauschen ?":printspc(9)"{down}        (j/n)"
675 print:printspc(8)cl$:print:printspc(8)cl$:gosub860
680 geti$:ifi$="n"then710
685 ifi$<>"j"then680
690 fori=1to4:g(i)=20:next:gg=gg-2
695 print"{home}{down}{down}{down}{down}":fori=1to9:printspc(8)cl$:next
700 print"{home}{down}{down}{down}{down}{down}"spc(12)"waehlen sie !":print"{down}{down}{down}{down}{down}{down}{down}"
705 goto585
710 print"{home}{down}{down}{down}{down}{blk}":fori=1to9:printspc(8)cl$:next
715 print"{home}{down}{down}{down}":fori=1to5:printspc(13)"{CBM-J}"spc(11)"{CBM-L}":next
720 printspc(13)"{cyn}O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P":printspc(13)"{CBM-H}O{CBM-Y}P O{CBM-Y}P O{CBM-Y}P{CBM-N}"
725 printspc(13)"{CBM-H}{CBM-H}{red}Q{cyn}{CBM-N} {CBM-H}{red}Q{cyn}{CBM-N} {CBM-H}{red}Q{cyn}{CBM-N}{CBM-N}"
730 printspc(13)"{CBM-H}L{CBM-P}{SHIFT-@} L{CBM-P}{SHIFT-@} L{CBM-P}{SHIFT-@}{CBM-N}":printspc(13)"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
740 poke214,18:print:printspc(9)"{blk}richtungen : {wht}"ri$(p):goto750
748 rem **** kommandoauswertung ****
749 fori=1to2500:next
750 za=0:gosub7000
755 gosub860:input"{yel} kommando :";k$
760 ifleft$(k$,1)=" "thenk$=right$(k$,len(k$)-1):goto760
765 iflen(k$)=1then870
770 fori=1tolen(k$):ifmid$(k$,i,1)=" "then780
772 next
775 gosub860:print"          unkorrekte eingabe !":goto749
780 v$=left$(k$,i-1):h$=right$(k$,len(k$)-i)
785 ifleft$(h$,1)=" "thenh$=right$(h$,len(h$)-1):goto785
790 ifv$="sage"then6500
795 fori=1to14:ifleft$(v$(i),len(v$))=v$thenx=i:goto805
800 next:nv$=v$:goto815
805 fori=1to21:ifleft$(h$(i),len(h$))=h$theny=i:goto825
810 next:nv$=h$
815 gosub860:print"{up} tut mir leid, aber ich verstehe"
820 print"{down} '"nv$"' nicht.":goto749
825 ifx>9thenx=x-5
830 fori=1tolen(kb$(x)):ifmid$(kb$(x),i,1)=chr$(y+64)then950
835 next:gosub860
840 print"{up} tut mir leid, aber ich verstehe ihren"
845 print"{down} befehl nicht.":goto749
860 poke214,20:print:fori=1to3:printef$:next:print"{up}{up}{up}":return
869 rem **** bewegen ****
870 fori=1to6:ifk$=mid$("nswohr",i,1)then880
875 next:goto775
880 ifgs=1orzb=1ormr=1then7600
882 fori=1tolen(ri$(p))step2
885 ifmid$(ri$(p),i,1)=k$then900
890 next:gosub860
895 print"   in diese richtung geht es nicht":goto749
900 sc=0:zi=val(mid$(zi$(p),i,2))
905 ifp=16andzi=13then925
910 ifp=13andzi=9andg(8)=0andv=1then7660
915 ifzi=0then7680
920 p=zi:goto180
925 ifg(8)=0thenonvgoto930,7650,7670
930 gosub860:print"{up} hinter ihnen loest sich eine stein-"
935 print"{down} lawine, die den weg verschuettet.":ri$(16)="w-o":zi$(16)="1517"
940 fori=1to2500:next:p=zi:goto180
949 rem ** sprung zur bef.ausfuehrung **
950 ifx=4andy<13then7100
955 ifx=5then7200
960 zn=1000+(x-1)*500+(y-1)*20:zn$=str$(zn)
965 fori=1to4:nz=val(mid$(zn$,i+1,1))
970 poke(2060+i),(nz+48)
975 next
980 gosub860:goto1
998 rem *** befehlsausfuehrung ***
999 print"  ok !":goto749
1000 ify=1ory=7ory=16ory=19ory=20thene$="e ":goto1002
1001 e$=" "
1002 print" hier ist kein"e$h$(y):goto749
1020 ifg(y)=0org(y)=pthen999
1022 goto1000
1060 goto1020
1180 ifg(10)<>0andg(10)<>pthen1000
1182 ifv<>2thenprint" der "h$(10)" laesst sich nicht oeffnen":goto749
1184 ifg(9)<>21then999
1186 print" im "h$(10)" befindet sich ein "h$(9)" !!":g(9)=p:goto749
1300 ifp=18andri$(18)="h"andv=3then1306
1302 ifp=1orp>13then1000
1304 print" hier ist keine geschlossene tuer":goto749
1306 ifg(11)<>0thenprint" die tuer ist verschlossen !":goto749
1308 ri$(18)="o-h":zi$(18)="1909":ri$(19)="s-w":zi$(19)="1718":goto180
1340 ifp<>11then1000
1342 ifv=3org(10)<>21then999
1344 ifg(11)<>0thenprint" der schrank ist verschlossen":goto749
1346 print"{up}   im schrank befindet sich"
1348 print"{down}   ein goldener ball":g(10)=11:goto749
1400 print" das ist unmoeglich !":goto749
1580 ifg(5)<>pthen1000
1582 ifp=18thenprint" es ist zu dunkel hier !":goto749
1584 ifg(2)=0then1590
1586 print"{up} sie brauchen einen behaelter"
1588 print"{down} um den frosch zu fangen !":goto749
1590 ifgg=5thenprint" sie tragen schon 5 gegenstaende !":goto749
1592 g(5)=0:gg=gg+1:print" ok !":goto749
1740 ifmr=1then7640
1742 ifv=3andp=9andmo=0thenprint" von hier aus geht das nicht !":goto749
1744 goto1000
1780 ifgs<>1then1000
1782 print"  der geist mag das nicht !!":fori=1to2000:next:goto7630
2080 ifg(5)=pthenprint" der frosch laesst sich nicht kuessen":goto749
2082 ifg(5)<>0then1000
2084 ifv<>1orp<>6then999
2086 print" es knallt und stinkt...":fori=1to2000:next:goto7800
2240 ifmr<>1then1000
2242 print"{up} das monster schlaegt wild um sich"
2244 print"{down} und schleudert sie aus dem brunnen":mr=0
2246 fori=1to3000:next:p=9:goto180
2260 ifzb<>1then1000
2262 fori=0to15:poke53281,i:poke53280,i:forj=1to100:next:next:zb=0
2264 poke53280,5:poke53281,5:zk=zk+1:ifzk=3then7620
2266 p=2+int(13*rnd(ti)):goto180
2280 ifgs<>1then1000
2282 ifti$<"001000"then7630
2284 ge=1:gs=0:fori=832to892step3:pokei,0:pokei+1,0:pokei+2,0:next
2286 print"{up}  der geist hat ihren mundgeruch":print"{down}  nicht vertragen !"
2288 goto749
2400 ifp<>10orfa=1then1000
2402 ifv<>1then999
2404 ifv=1thenfa=1:ri$(10)="n-w-r":zi$(10)="070919"
2406 ri$(19)="s-h":zi$(19)="1710":goto180
2820 ifp<>3orlen(ri$(3))=5then1000
2822 print" das geht nicht !":goto749
2840 ifp<>11then1000
2842 print" der schrank ist zu schwer !":goto749
2900 ifp<>10orfa=1then1000
2902 goto2822
3560 ifgs=1then7630
3562 ifg(4)<>0thenprint" ich habe das buch nicht !":goto749
3564 ifv=3then3568
3566 print" zauberwort : "z1$:goto749
3568 print"{up} zauberwoerter : "z1$:print"{down}"spc(17)z2$:goto749
3660 ifg(9)<>0thenprint" ich habe keinen zettel":goto749
3662 print" zauberwort: "z2$:fori=1to2500:next
3664 print"{up} der zettel verschwindet !!!":gg=gg-1:g(9)=21:goto749
3860 ifp<>12orsc=0then1000
3862 print"{up}  tut mir leid, aber es scheint"
3864 print"{down}  eine fremde sprache zu sein":goto749
4300 ifp<12or(v=3andp=18)thenprint" ok...nichts passiert !":goto749
4302 goto1000
4320 ifp<>3orlen(ri$(3))=5then1000
4322 print"{up} hinter dem "h$(17)
4324 print"{down} scheint ein hohlraum zu sein !":goto749
4380 ifv=2andp=12andlen(ri$(12))=3then4388
4382 ifp=19andg(8)=21then4392
4384 ifp>14andp<18then1000
4386 print" ok...nichts besonderes festzustellen !":goto749
4388 poke214,11:print:printspc(18)"{yel}{rvon}U{CBM-Q}/W":gosub860
4390 print" eine schrift erscheint...":sc=1:goto749
4392 g(8)=19:print" an der wand haengt ein schwert !":goto749
4400 ifp=10andfa=0thenprint" klingt hohl...":goto749
4402 goto1000
4580 ifg(5)<>0andg(5)<>pthen1000
4582 print" der frosch entwischt ihnen !"
4584 ifg(5)<>18orv<>1then4588
4586 goto749
4588 ifg(5)=0thengg=gg-1
4590 g(5)=1+int(19*rnd(1)):goto749
4740 ifmr=0then1000
4742 print" gute idee, aber das geht nicht !":goto749
4760 ifzb=0then1000
4762 gosub4770:ify=0org(y)<>0then749
4764 ify=8andza=2then7820
4766 goto7620
4770 input" womit ";wm$
4771 fori=1tolen(wm$):ifmid$(wm$,i,1)=" "then4773
4772 next:goto4774
4773 wm$=right$(wm$,len(wm$)-i)
4774 fory=1to12:ifwm$=left$(h$(y),len(wm$))then4776
4775 next:gosub860:print" ich verstehe '"wm$"' nicht !":y=0:return
4776 ifg(y)<>0thengosub860:print" ich habe diesen gegenstand nicht !"
4777 return
4780 ifgs=0then1000
4782 gosub4770:ify=0org(y)<>0then749
4784 gosub860:onvgoto4785,4790,4794
4785 ifg(8)=0thenprint" sie sind gestolpert, und...":fori=1to2000:next:goto7630
4786 ifza=1andy=7then4798
4788 goto7630
4790 ifza=1andy=3then4798
4792 goto7630
4794 ify=1thenprint" der geist ist tot, aber...":fori=1to2000:next
4796 goto7630
4798 pokevi+21,0:gs=0:ge=1:print" ok...der geist ist tot !":goto749
5000 ifg(1)<>0andg(1)<>pthen1000
5002 print" wozu sollte das gut sein ?":goto749
5020 ifg(2)<>0andg(2)<>pthen1000
5022 print"{up} so geht man nicht mit fremdem"
5024 print"{down} eigentum um !":goto749
5300 ifp=18andri$(18)="h"andv=3then5306
5302 ifp=1orp>13then1000
5304 print"wieso, hier ist keine verschlossene tuer":goto749
5306 print" die tuer ist zu stabil...":goto749
5320 gosub4770:ify=0org(y)<>0then749
5322 if(v=1andy=8)or(v=3andza=2andy=8)then7247
5324 gosub860:print" das geht nicht !":goto749
5340 ifp<>11then1000
5342 print"{up} der schrank laesst sich nicht"
5344 print"{down} mit gewalt oeffnen !":goto749
5380 ifp>14andp<18then1000
5382 print"sie koennen die wand nicht zerstoeren !":goto749
6499 rem *** befehl 'sage' ***
6500 gosub860:ifh$=z1$thenza=1:goto6506
6502 ifh$=z2$thenza=2:goto6506
6504 goto7690
6506 onvgoto6508,6512,6520
6508 ifza=1andg(7)=0andgs=1andg(4)=0thenprint" die keule vibriert...":goto6528
6510 goto6526
6512 ifza=1andp=12andsc=1thenri$(12)="n-w-o":zi$(12)="080013":goto415
6514 ifza=1andg(3)=0andgs=1thenpokevi+39,0:goto755
6516 ifza=2andg(8)=0andzb=1andg(4)=0thenprint" das schwert leuchtet...":goto6528
6518 goto6526
6520 ifza=1andg(3)=0andmo=0andp=9thenprint" das amulett leuchtet...":goto6528
6522 ifza<>2org(4)<>0orp<>3orri$(3)<>"w-o"then6526
6524 print" der spiegel leuchtet...":goto6528
6526 print" ok...es tut sich nichts !":goto749
6528 fori=1to2000:next:goto755
6999 rem * besitz/gegenstd anzeigen *
7000 print"{home}";:fori=1to20:print"        ":next
7002 print"{home}{blk}{down}sie":print"{down}besitzen":sp=0
7005 fori=1to12:ifg(i)=0thengosub7050
7010 next
7020 print"{home}";:fori=1to20:printspc(32)"       ":next
7022 j=0:print"{home}{blk}{down}"spc(32)"es gibt":printspc(32)"{down}hier :":sp=32
7025 fori=1to12:ifg(i)=pthengosub7050:j=j+1:ifj=6thenreturn
7030 next:return
7050 ifi=1thenprintspc(sp)"{down}glas-":printspc(sp)"kugel":return
7055 ifi=11thenprintspc(sp)"{down}schlues":printspc(sp)"sel":return
7060 ifi=12thenprintspc(sp)"{down}ketten-":printspc(sp)"hemd":return
7065 printspc(sp)"{down}"g$(i):return
7099 rem *** befehl 'nimm' ***
7100 ifg(y)=pthen7110
7105 gosub860:print"  dieser gegenstand ist nicht hier !":goto749
7110 ifgg<5then7120
7115 gosub860:print"  sie haben bereits 5 gegenstaende !":goto749
7120 ify=5thengosub860:print"    der frosch huepft ihnen davon !":goto749
7125 g(y)=0:gg=gg+1:gosub860:print"   ok !":fori=1to1000:next:goto750
7199 rem *** befehl 'wirf' ***
7200 ifg(y)<>0thengosub860:print" ich habe diesen gegenstand nicht !":goto749
7205 gosub860:input"  wohin ";wh$
7210 fori=1tolen(wh$):ifmid$(wh$,i,1)=" "then7220
7215 next:goto7225
7220 wh$=right$(wh$,len(wh$)-i)
7225 ifwh$="boden"orwh$="weg"orwh$="egal"orwh$="wand"then7235
7230 onvgoto7240,7270,7330
7235 gosub860:print"  ok !":g(y)=p:gg=gg-1:goto749
7240 ify<>8orwh$<>"spiegel"orp<>3orlen(ri$(3))=5then7255
7245 g(y)=3:gg=gg-1
7247 ri$(3)="n-w-o":zi$(3)="010204":gosub860
7250 print"  der spiegel zerbricht !":fori=1to2000:next:goto180
7255 ify<>10orwh$<>"brunnen"orp<>9org(5)<>18then7380
7260 gosub860:print"{up}  aus dem brunnen kommt ein frosch"
7265 print"{down}  mit dem ball im mund.":g(10)=9:g(5)=9:gg=gg-1:goto749
7270 ify<>3orwh$<>"geist"orgs<>1then7290
7275 ifza<>1then7630
7280 pokevi+21,0:gosub860:print"    sie haben den geist besiegt !"
7285 ge=1:gs=0:g(y)=7:gg=gg-1:goto749
7290 ify<>6orp<>10orwh$<>"quadrat"orfa=1then7305
7295 fa=1:g(6)=10:gg=gg-1:ri$(10)="n-w-r":zi$(10)="070919"
7300 ri$(19)="s-h":zi$(19)="1710":goto180
7305 ify<>4orp<>3orwh$<>"spiegel"orlen(ri$(3))=5then7315
7310 goto7245
7315 ify<>8orzb<>1orwh$<>"zauberer"then7380
7320 ifza<>2then7620
7325 pokevi+21,0:fori=1to2000:next:goto7820
7330 ify<>1orwh$<>"geist"orgs<>1then7340
7335 goto7280
7340 ify<>3orwh$<>"brunnen"orp<>9then7360
7345 g(3)=18:gg=gg-1:gosub860:ifmo=1thenprint"  ok !":goto749
7350 ifza=1thenprint" aus dem brunnen ertoent ein schrei...":mo=1:goto749
7355 g(3)=9:print" das amulett kommt zurueckgeflogen !":goto749
7360 ify<>8orwh$<>"spiegel"orp<>3orlen(ri$(3))=5then7380
7365 ifza=2then7245
7370 goto7235
7380 ifwh$="brunnen"andp=9theng(y)=18:goto7415
7382 ifwh$="quadrat"andp=10andfa=0theng(y)=10:goto7415
7385 ifwh$="hoehle"andp=17theng(y)=19:goto7415
7390 ifwh$="geist"andgs=1then7630
7395 ifwh$="zauberer"andzb=1then7620
7400 ifwh$="spiegel"andp=3andlen(ri$(3))=3then7235
7405 gosub860:print" ich verstehe sie nicht..."
7410 fori=1to2000:next:goto7205
7415 gg=gg-1:gosub860:print"  ok !":goto749
7499 rem *** erklaerung ***
7500 print"{clr}{down} Sie muessen versuchen, eine Aufgabe zu"
7505 print"{down} loesen, indem Sie dem Computer sagen,"
7510 print"{down} was er tun soll."
7515 print"{down} Zur  Fortbewegung  geben  Sie nur"
7520 print"{down} Abkuerzungen ein (N-S-W-O-H-R = NORD -":rem n-s-w-o-h-r = nord -
7525 print"{down} SUED - WEST - OST - HOCH - RUNTER)"
7526 rem sued - west - ost - hoch - runter
7530 print"{down} Ansonsten muessen die Befehle aus zwei"
7535 print"{down} Woertern bestehen (Verb/Hauptwort)"
7540 print"{down} Der Computer versteht die Verben :"
7545 print"{down} oeffne,fange,kuesse,nimm,lies,wirf,"
7550 print"{down} beruehre/klopfe,erschlage/toete,sage"
7555 print"{down} zerbreche/zerstoere   -  Fertig ???"
7560 poke198,0:wait198,1:goto100
7599 rem **** verloren ****
7600 ifzb=1then7620
7605 ifgs=1then7630
7610 ifmr=1then7640
7620 print"{clr}{blk}{down} der zauberer hat sie in eine kroete"
7625 print"{down} verwandelt.":goto7700
7630 print"{clr}{blk}{down}     der geist hat sie gebissen.":goto7700
7640 print"{clr}{blk}{down} das monster hat beschlossen, sie"
7645 print"{down} zu heiraten.":goto7700
7650 print"{clr}{blk}{down} sie sind unterwegs gestolpert und"
7655 print"{down} haben sich dabei den kleinen finger":print"{down} verstaucht.":goto7700
7660 print"{clr}{blk}{down} aus dem torbogen hat sich ein stein"
7665 print"{down} geloest und ist ihnen auf den fuss":print"{down} gefallen.":goto7700
7670 print"{clr}{blk}{down} sie sind in einen erdrutsch geraten"
7675 print"{down} und haben sich ihre neue hose dreckig":print"{down} gemacht.":goto7700
7680 print"{clr}{blk}{down} sie sind vom berg gefallen und haben"
7685 print"{down} dabei ihre brille zerbrochen.":goto7700
7690 print"{clr}{blk}{down}        sie haben sich in eine"
7695 print"{down}          banane verwandelt !"
7700 print"{down} deshalb muessen sie leider aufgeben."
7705 print"{down}{down}{down}{yel} moechten sie es noch einmal probieren ?"
7710 geti$:ifi$="j"thenrun5
7715 ifi$<>"n"then7710
7720 end
7799 rem **** gewonnen ****
7800 print"{clr}{yel}{down}        ... und  der  "h$(5)" ...":fori=1to1500:next
7805 print"{up}         ... verwandelt  sich ...":fori=1to1500:next
7810 print"{up}... in eine wunderschoene prinzessin ...":fori=1to2000:next
7815 print"{clr}{down}{down}{down}{down}{down}":goto7840
7820 pokevi+21,0:print"{clr}{yel}{down}{down}{down}{down}{down}{down}    sie haben den zauberer besiegt !!!":goto7840
7830 print"{clr}{yel}{down}{down}{down}{down}{down}{down}    sie haben den schatz gefunden !!!"
7840 printspc(13)"{down}{down}gratuliere,":print"{down}     sie haben ihr ziel erreicht !!"
7850 print"{down}{down}{down}      wollen sie weiter spielen ?"
7860 geti$:ifi$="j"thenrun5
7870 ifi$<>"n"then7860
7880 end
8000 dataoeffne,bdjpru,fange,emo,kuesse,emnou,nimm,abcdefghijklqru
8005 datawirf,abcdefghijkl,lies,dis,beruehre,pqtu,toete,emno
8010 datazerstoere,abpqrt,werfe,lese,klopfe,erschlage,zerbreche
8015 dataglaskugel,kaefig,amulett,buch,frosch,helm,keule,schwert,zettel,ball
8020 dataschluessel,kettenhemd,monster,zauberer,geist,tuer,spiegel,schrank
8025 dataschrift,wand,quadrat
8030 datas,03,s-o,0503,w-o,0204,w-h,0311,n-s,0208,o,07,s-w,1006,n-o,0509
8035 datas-w-o-r,13081018,n-w,0709,r,04,w-o,0013,n-w-o,091214,w-o,1300,o,16
8040 dataw-o-h,151713,n-w,1916,h,09,s,17
8045 data20,20,20,20,18,2,21,21,21,21,6,5
8050 datasilber,blume,gold,ring,kupfer,horn,platin,stern
8054 rem sprite 1 - geist
8055 data0,127,0,0,255,192,1,206,96,3,255,240,1,255,240,1,245,248,1,255,248
8060 data3,255,248,7,255,248,15,255,252,31,255,254,3,255,240,3,255,224
8065 data3,255,224,7,255,224,7,255,224,7,255,240,15,255,240,15,255,248
8070 data31,255,252,59,187,110
8074 rem sprite 2 - monster
8075 data12,0,48,30,0,120,3,0,192,1,129,128,3,195,192,15,231,240,62,126,124
8080 data124,60,62,248,60,31,254,126,127,255,255,255,127,255,254,127,255,254
8085 data63,90,252,30,165,120,31,255,248,7,255,224,4,126,32,4,60,32
8090 data31,0,248,42,129,84
8094 rem sprite 3 - zauberer
8095 data0,15,224,0,63,128,0,127,128,0,219,0,1,255,0,3,255,128,31,255,240
8100 data127,255,252,127,255,252,111,255,236,111,255,236,103,255,204,98,170,140
8105 data99,255,140,71,255,196,7,199,192,15,131,224,15,1,224,14,0,224
8110 data28,0,112,60,0,120
8200 rem
8201 rem **********************
8202 rem *   castle of doom   *
8203 rem * von b. weissbecker *
8204 rem *  maerz/april 1984  *
8205 rem **********************
Listing des Monats: Castle of Doom
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →