Adventure-Programmierung -------------------------- Teil 3 von Tim-Philipp Müller Nachdem wir unserem XL/XE Karte und Worte unsereS AbenteurersIn eingehaucht haben, beschäftigt sich dieser Teil mit der Verwaltung der Hosentasche unseres Helden und seiner Umgebung. Jedem Objekt haben wir ja schon im zweiten Teil eine Nummer zugeteilt. Über diese Nummer können wir nun ein Array verwalten, über das wir jederzeit in Erfahrung bringen können, wo sich ein Objekt gerade befindet: PLATZ (objekt-Nr.) = raumnummer Raum null ist der Spieler selbst. Was aber, wenn unser gutes Stück noch gar nicht sichtbar ist, und woher weiß das Programm, ob man es überhaupt mit- nehmen kann ? Das regeln wir über ein weiteres Feld, das den Status des Objekts angibt. Sinnvollerweise arbeiten wir hier mit Bits. So könnte Bit 0 z.B. aussagen, ob das Objekt sichtbar oder unsichtbar ist, Bit 1, ob es statisch oder dynamisch (also mitnehmbar) ist und Bit 2, ob das Radio ein-/aus-geschaltet ist, die Tür geöffnet oder geschlossen usw... Die Bits 2-7 sind also zur freien Verwendung freigegeben. Dadurch ergeben sich auch schon die Vorgaben für eine NIMM-Routine, die Objekt Nummer 20 in Raum 5 nehmen soll: wenn PLATZ(20)=0 'hab ich schon!' wenn PLATZ(20)<>5 'ist hier nicht!' wenn PLATZ(20)=5 und Bit 0 von STATUS(20)=0 (hidden) 'seh ich nicht! wenn PLATZ(20)=5 und Bit 1 von STATUS(20)=0 (statisch) 'das kann ich nicht nehmen' ansonsten PLATZ(20) auf 0 setzen. Hier könnte man nun zum Beispiel noch eine Routine einbauen, die entweder nur eine bestimmte Zahl an Gegenständen, oder ein bestimmtes Gewicht (zwei Bits könnten die mitnehmbaren Objekte ja in Gewichtsklassen von 0-3 einteilen) zulassen. Oft muß vorher auch noch eine Prozedur für Speizialfälle durchlaufen werden. Nimmt man in einem Geschäft einfach etwas, wird man z.B. als Ladendieb erwischt und schmoort den Rest seines Abenteuers hinter schwedischen Gardinen. Oder man kann einen magischen Stein erst heben, wenn man ihn mit einem Elixier betröpfelt hat. Der Phantasie sind da kaum Grenzen gesetzt. Eine INVENTAR-Routine geht in einer Schleife einfach nur alle Objekte durch. Sind diese in Raum 0, sind sie beim Spieler. Punkt. Beim SAVEN müssen alle wichtigen Zustände auf Diskette gebannt werden: - das Raum-Array - die beiden Objekt-Arrays - die aktuelle Raum-Position - sonstiges (z.B. die Zeit etc.) Bis auf ein paar Kleinigkeiten haben Sie jetzt das Rüstzeug, um selbst ein anspruchsvolles Abenteuer zu program- mieren. Im nächsten und letzten Teil gehe ich dann nochmal kurz auf die Äußerlich- keiten ein. Aber Sie wissen ja, die inneren Werte zählen. Bis dann!