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.



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:
- eine Grafik, die den Ort zeigt, an dem man sich befindet,
- eine Liste der Gegenstände, die sich an diesem Ort befinden,
- eine Liste der Gegenstände, die man besitzt.
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 **********************