5 Commits

Author SHA1 Message Date
Olli Graf
8bd0897af1 Endgame 2022-06-13 17:56:35 +02:00
Olli Graf
ebdf22f6a6 Diamant und Sockel werden sichtbar. 2022-06-13 14:59:55 +02:00
Olli Graf
7bd3ecaba0 Bis Statuenkopf.
Diamant wird sichtbar.
2022-06-12 16:04:41 +02:00
Olli Graf
0ff17aac13 uto: bis zur Klippe. 2022-06-11 14:08:42 +02:00
Olli Graf
3b848ffb80 Schwimmweste anziehen. 2022-06-10 10:26:41 +02:00
9 changed files with 217 additions and 19 deletions

View File

@@ -123,16 +123,26 @@ class ActionModul(ActionBasics):
if item.id ==self.world.ITEM_JACKE: if item.id ==self.world.ITEM_JACKE:
self.setFehler('Also du die Jacke anziehst, findest du einen kleine Schlüssel in der Tasche.') self.setFehler('Also du die Jacke anziehst, findest du einen kleine Schlüssel in der Tasche.')
self.findeTruhenschluessel() self.findeTruhenschluessel()
elif item.id == self.world.ITEM_LEITER: elif self.isItem(item,self.world.ITEM_LEITER):
if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER): if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}') logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf() self.rauf()
elif item.id == self.world.ITEM_PLANKE: elif self.isItem(item,self.world.ITEM_PLANKE):
if self.isAktuellerRaum(self.world.RAUM_BACH): if self.isAktuellerRaum(self.world.RAUM_BACH):
self.baueBruecke() self.baueBruecke()
self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke.') self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke.')
else: else:
self.setFehler('Das macht hier keinen Sinn.') self.setFehler('Das macht hier keinen Sinn.')
elif self.isItem(item, self.world.ITEM_SCHWIMMWESTE):
item.zustand = item.ANGEZOGEN
self.setFehler('Du ziehst die Schwimmweste an.')
elif self.isItem(item,self.world.ITEM_DIAMANT):
if self.isAktuellerRaum(self.world.RAUM_MAUER):
self.world.printText('graböffnung')
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GRAB
else:
self.setFehler('Nichts passiert.')
def baueBruecke(self): def baueBruecke(self):
@@ -180,6 +190,11 @@ class ActionModul(ActionBasics):
if self.isAktuellerRaum(self.world.RAUM_TUNNEL): if self.isAktuellerRaum(self.world.RAUM_TUNNEL):
self.world.printText(f'raum-{self.world.RAUM_TUNNEL}') self.world.printText(f'raum-{self.world.RAUM_TUNNEL}')
self.world.aktuellerRaum.ausgaenge[self.world.OST] = self.world.RAUM_HAFEN self.world.aktuellerRaum.ausgaenge[self.world.OST] = self.world.RAUM_HAFEN
elif self.isAktuellerRaum(self.world.RAUM_KOPF):
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
self.macheItemSichtbar(diamant)
def untersuchePerson(self,person): def untersuchePerson(self,person):
@@ -260,7 +275,6 @@ class ActionModul(ActionBasics):
logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}') logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}')
if parsedCommand.gegenstand == None: if parsedCommand.gegenstand == None:
self.untersucheAktuellenRaum(parsedCommand) self.untersucheAktuellenRaum(parsedCommand)
return return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
@@ -269,6 +283,7 @@ class ActionModul(ActionBasics):
return return
if item != None: if item != None:
logging.debug(f'item.id = {item.id}')
if item.id == self.world.ITEM_PFLANZE: if item.id == self.world.ITEM_PFLANZE:
krug = self.world.findRaumItemById(self.world.ITEM_KRUG) krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
logging.debug(f'mache Gegenstand {krug.name} sichtbar') logging.debug(f'mache Gegenstand {krug.name} sichtbar')
@@ -300,6 +315,16 @@ class ActionModul(ActionBasics):
self.ausDemInventar(item) self.ausDemInventar(item)
elif self.isItem(item,self.world.ITEM_KARTE): elif self.isItem(item,self.world.ITEM_KARTE):
self.world.printKarte() self.world.printKarte()
elif self.isItem(item, self.world.ITEM_KOPF):
self.zeigeItemBeschreibung(item)
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
self.macheItemSichtbar(diamant)
elif self.isItem(item, self.world.ITEM_MAUER):
self.setFehler('In der Mauer wird ein Sockel sichtbar.')
sockel = self.world.findItemById(self.world.ITEM_SOCKEL)
self.macheItemSichtbar(sockel)
else: else:
self.zeigeItemBeschreibung(item) self.zeigeItemBeschreibung(item)
@@ -411,9 +436,10 @@ class ActionModul(ActionBasics):
def nimm(self,parsedCommand): def nimm(self,parsedCommand):
logging.debug(f'start nimm() {parsedCommand.gegenstand}')
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
logging.debug(f'nimm(): item == {item}') logging.debug(f'nimm(): item == {item.name}')
if item != None: if item != None:
if item.imobil: if item.imobil:
text = self.world.msg[item.pickupmsg] text = self.world.msg[item.pickupmsg]
@@ -454,6 +480,19 @@ class ActionModul(ActionBasics):
def spring(self,parsedCommand):
if self.isAktuellerRaum(self.world.RAUM_KLIPPE):
weste = self.world.findItemImInventarById(self.world.ITEM_SCHWIMMWESTE)
logging.debug(f'weste={weste.zustand}')
if weste != None and weste.zustand == weste.ANGEZOGEN:
imwasser = self.world.findRaumById(self.world.RAUM_WASSER)
self.wechsleRaum(imwasser)
else:
self.setFehler('Das Wasser ist viel zu tief, du würdest ertrinken.')
def sprich(self,parsedCommand): def sprich(self,parsedCommand):
person = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand) person = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
@@ -549,11 +588,14 @@ class ActionModul(ActionBasics):
def entzuende(self,parsedCommand): def entzuende(self,parsedCommand):
logging.debug(f'entzünde {parsedCommand.gegenstand}')
item = self.world.findItemImInventar(parsedCommand.gegenstand) item = self.world.findItemImInventar(parsedCommand.gegenstand)
if item == None: if item == None:
self.setFehler('Das besitzt du nicht.') self.setFehler('Das besitzt du nicht.')
return
logging.debug(f'item={item}')
if self.isItem(item, self.world.ITEM_FACKEL): if self.isItem(item, self.world.ITEM_FACKEL):
self.toggleFackel(item) self.toggleFackel(item)

View File

@@ -44,7 +44,6 @@ class TestModule:
self.ac.untersuche(pcmd) self.ac.untersuche(pcmd)
self.schrittzaehler += 1 self.schrittzaehler += 1
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
# In den Keller # In den Keller
self.ac.runter() self.ac.runter()
self.schrittzaehler += 1 self.schrittzaehler += 1
@@ -147,9 +146,7 @@ class TestModule:
self.testTeich() self.testTeich()
logging.debug('===== Beginn Testmodul Stier =====') logging.debug('===== Beginn Testmodul Stier =====')
pcmd = self.parseInput('nimm Fisch')
self.ac.nimm(pcmd)
# zum Bach # zum Bach
self.ac.west() self.ac.west()
self.schrittzaehler += 1 self.schrittzaehler += 1
@@ -358,3 +355,101 @@ class TestModule:
self.ac.ost() self.ac.ost()
self.schrittzaehler += 1 self.schrittzaehler += 1
def testKlippe(self):
self.testInsel()
logging.debug('===== Beginn Testmodul Klippe =====')
pcmd = self.parseInput('entzünde Fackel')
self.ac.entzuende(pcmd)
self.schrittzaehler += 1
#Loch
self.ac.runter()
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Schwimmweste')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
# Insel
self.ac.rauf()
self.schrittzaehler += 1
# Palme
self.ac.rauf()
self.schrittzaehler += 1
# Insel
self.ac.runter()
self.schrittzaehler += 1
#Beiboot
self.ac.ost()
self.schrittzaehler += 1
#Boot
self.ac.rauf()
self.schrittzaehler += 1
#klippe
self.ac.nord()
self.schrittzaehler += 1
pcmd = self.parseInput('benutze Schwimmweste')
self.ac.benutze(pcmd)
self.schrittzaehler += 1
#Wasser
pcmd = self.parseInput('spring')
self.ac.spring(pcmd)
self.schrittzaehler += 1
def testStatue(self):
self.testKlippe()
#Strand
self.ac.sued()
self.schrittzaehler += 1
#Wald
self.ac.ost()
self.schrittzaehler += 1
#Statue
self.ac.nord()
self.schrittzaehler += 1
#Kopf
self.ac.rauf()
self.schrittzaehler += 1
pcmd = self.parseInput('untersuche Kopf')
self.ac.untersuche(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Diamant')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
#Statue
self.ac.runter()
self.schrittzaehler += 1
def testMauer(self):
self.testStatue()
# Mauer
self.ac.ost()
pcmd = self.parseInput('untersuche Mauer')
self.ac.untersuche(pcmd)
pcmd = self.parseInput('benutze Diamant')
self.ac.benutze(pcmd)
#Grab
self.ac.sued()

View File

@@ -99,7 +99,9 @@ class World:
def fortschritt(self): def fortschritt(self):
anz_raeume, anz_entdeckt = self.zaehleRaeume() anz_raeume, anz_entdeckt = self.zaehleRaeume()
return round((anz_entdeckt/anz_raeume) *100,2) progress = round((anz_entdeckt/anz_raeume) *100,2)
logging.debug(f'anz_raeume={anz_raeume}, entdeckt={anz_entdeckt}, progress={progress}')
return progress
def printRaum(self): def printRaum(self):
raum = self.aktuellerRaum raum = self.aktuellerRaum
@@ -169,6 +171,7 @@ class World:
return raum return raum
return None return None
def sucheRaumName(self,name): def sucheRaumName(self,name):
if name == None: if name == None:
return self.aktuellerRaum return self.aktuellerRaum
@@ -214,6 +217,7 @@ class World:
logging.debug(f'item.raumid={item.raumid}') logging.debug(f'item.raumid={item.raumid}')
logging.debug(f'findItemInAktuellerRaum() {itemname} - {item.name}') logging.debug(f'findItemInAktuellerRaum() {itemname} - {item.name}')
if item.raumid == raum.id and item.name.lower() == itemname.lower(): if item.raumid == raum.id and item.name.lower() == itemname.lower():
logging.debug(f'return {item.name}')
return item return item
logging.debug(f'Item {itemname} nicht im aktuellen Raum gefunden') logging.debug(f'Item {itemname} nicht im aktuellen Raum gefunden')
@@ -403,10 +407,13 @@ class World:
self.ITEM_SCHWIMMWESTE = '30' self.ITEM_SCHWIMMWESTE = '30'
self.ITEM_KABINE = '31' self.ITEM_KABINE = '31'
self.ITEM_BEIBOOT = '32' self.ITEM_BEIBOOT = '32'
self.ITEM_DIAMANT = '33' self.ITEM_DIAMANT = '38'
self.ITEM_SOCKEL = '34' self.ITEM_SOCKEL = '34'
self.ITEM_PALME = '40' self.ITEM_PALME = '40'
self.ITEM_LOCH = '41' self.ITEM_SOCKEL = '41'
self.ITEM_KOPF = '42'
self.ITEM_MAUER = '43'
self.ITEM_LOCH = '44'
# Räume # Räume

View File

@@ -123,6 +123,9 @@ class WorldParser():
gegenstand.pickupmsg = msgid gegenstand.pickupmsg = msgid
# logging.debug('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg) # logging.debug('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg)
if id in self.world.gegenstaende:
raise ValueError(f'dopplete Item-Id {id}')
self.world.gegenstaende[id] = gegenstand self.world.gegenstaende[id] = gegenstand
# Personen # Personen

View File

@@ -83,6 +83,8 @@ class Gegenstand(SuperNode):
self.HAENGEND = 0 self.HAENGEND = 0
self.GELOESCHT = 0 self.GELOESCHT = 0
self.ENTZUENDED = 1 self.ENTZUENDED = 1
self.ANGEZOGEN = 1
self.zustand = self.GESCHLOSSEN self.zustand = self.GESCHLOSSEN
class Adjektiv(SuperNode): class Adjektiv(SuperNode):

Binary file not shown.

19
tomb.py
View File

@@ -74,6 +74,8 @@ def verarbeiteBefehl(parsedCommand):
actionmodul.entzuende(parsedCommand) actionmodul.entzuende(parsedCommand)
elif id == '31': elif id == '31':
actionmodul.loesche(parsedCommand) actionmodul.loesche(parsedCommand)
elif id == '32':
actionmodul.spring(parsedCommand)
elif id == '-1': elif id == '-1':
world.fehler = 'Ich verstehe diesen Befehl nicht' world.fehler = 'Ich verstehe diesen Befehl nicht'
else: else:
@@ -126,6 +128,8 @@ def inputLoop(stdscr):
commandid = '0' commandid = '0'
elif debugcommand[1] == 'weg': elif debugcommand[1] == 'weg':
logging.debug(f'gelaufener Weg: {world.weg}') logging.debug(f'gelaufener Weg: {world.weg}')
elif debugcommand[1] == 'unvisited':
debug_NonVisited()
elif command.startswith('auto:'): elif command.startswith('auto:'):
command = command.rstrip() command = command.rstrip()
@@ -152,6 +156,12 @@ def inputLoop(stdscr):
testmodul.testHafen() testmodul.testHafen()
elif debugcommand[1] == 'insel': elif debugcommand[1] == 'insel':
testmodul.testInsel() testmodul.testInsel()
elif debugcommand[1] == 'klippe':
testmodul.testKlippe()
elif debugcommand[1] == 'statue':
testmodul.testStatue()
elif debugcommand[1] == 'mauer':
testmodul.testMauer()
world.fehler = '' world.fehler = ''
@@ -164,6 +174,15 @@ def inputLoop(stdscr):
verarbeiteBefehl(parsedCommand) verarbeiteBefehl(parsedCommand)
actionmodul.raumaction() actionmodul.raumaction()
def debug_NonVisited():
logging.debug('nicht entdeckte Räume:')
for raumid in world.raumliste:
raum = world.raumliste[raumid]
if not raum.entdeckt:
logging.debug(f'{raum.id} - {raum.name}')
def debug_Personen(): def debug_Personen():
logging.debug('Personen im aktuellen Raum') logging.debug('Personen im aktuellen Raum')

View File

@@ -191,6 +191,7 @@
<raum id='30' name='Insel'> <raum id='30' name='Insel'>
<ausgang dir='Ost' nachRaum= '28' /> <ausgang dir='Ost' nachRaum= '28' />
<ausgang dir='Runter' nachRaum= '31' /> <ausgang dir='Runter' nachRaum= '31' />
<ausgang dir='Rauf' nachRaum= '41' />
<beschreibung> <beschreibung>
Auf der Insel wächst eine einzelne Palme. In Sand hat jemand ein großes Loch gegraben. Auf der Insel wächst eine einzelne Palme. In Sand hat jemand ein großes Loch gegraben.
@@ -209,13 +210,13 @@
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='33' name='Klippe'> <raum id='33' name='Klippe'>
<ausgang dir='Süd' nachRaum= '32' /> <ausgang dir='Sued' nachRaum= '32' />
<beschreibung> <beschreibung>
Das Boot liegt vor einer Klippe. Neben dieser ist ein Kiesstrand zu erkennen. Das Boot liegt vor einer Klippe. Neben dieser ist ein Kiesstrand zu erkennen.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='34' name='Im Wasser'> <raum id='34' name='Im Wasser'>
<ausgang dir='Süd' nachRaum= '26' /> <ausgang dir='Sued' nachRaum= '35' />
<beschreibung> <beschreibung>
Du treibst im Wasser. Glücklicherweise hast du deine Rettungsweste an. Du treibst im Wasser. Glücklicherweise hast du deine Rettungsweste an.
</beschreibung> </beschreibung>
@@ -227,35 +228,46 @@
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='36' name='Wald'> <raum id='36' name='Wald'>
<ausgang dir='West' nachRaum= '37' /> <ausgang dir='West' nachRaum= '35' />
<ausgang dir='Nord' nachRaum= '37' />
<beschreibung> <beschreibung>
Ein alter, dichter Laubwald. Ein alter, dichter Laubwald.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='37' name='Statue'> <raum id='37' name='Statue'>
<ausgang dir='Rauf' nachRaum= '38' /> <ausgang dir='Rauf' nachRaum= '38' />
<ausgang dir='Ost' nachRaum= '40' /> <ausgang dir='Ost' nachRaum= '39' />
<ausgang dir='Sued' nachRaum= '36' />
<beschreibung> <beschreibung>
Du stehst vor einer etwa 10m hohen Statue Du stehst vor einer etwa 10m hohen Statue
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='38' name='Auf dem Kopf der Statue'> <raum id='38' name='Auf dem Kopf der Statue'>
<ausgang dir='Rauf' nachRaum= '37' /> <ausgang dir='Runter' nachRaum= '37' />
<beschreibung> <beschreibung>
Nach einer kleinen Kletterpartie stehst du stehst auf dem Kopf der Statue. Nach einer kleinen Kletterpartie stehst du auf dem Kopf der Statue.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='39' name='Mauer'> <raum id='39' name='Mauer'>
<ausgang dir='Ost' nachRaum= '37' />
<beschreibung> <beschreibung>
Du stehst vor einer Mauer. Du stehst vor einer Mauer.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='40' name='Grabkammer'> <raum id='40' name='Grabkammer'>
<ausgang dir='Nord' nachRaum= '38' /> <ausgang dir='Nord' nachRaum= '39' />
<beschreibung> <beschreibung>
Das Grab des Azteken. Du bist am Ziel. Das Grab des Azteken. Du bist am Ziel.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='41' name='Palme'>
<ausgang dir='Runter' nachRaum= '30' />
<beschreibung>
Du stehst in der Krone der Palme. Du hast einen weiten, aber völlig uninformativen Ausblick.
Aber, du fühlst dich wie der König der Welt.
</beschreibung>
</raum>
</ebene> </ebene>
<commandset> <commandset>
@@ -301,6 +313,7 @@
<command name='gib' id='39' key='29' /> <command name='gib' id='39' key='29' />
<command name='entzünde' id='40' key='30' /> <command name='entzünde' id='40' key='30' />
<command name='lösche' id='41' key='31' /> <command name='lösche' id='41' key='31' />
<command name='spring' id='42' key='32' />
</commandset> </commandset>
@@ -361,7 +374,10 @@
<item name='Diamant' id='38' display='' raum='38' imobil='false' adjektiv='0' msgid='3' visible='false' /> <item name='Diamant' id='38' display='' raum='38' imobil='false' adjektiv='0' msgid='3' visible='false' />
<item name='Sockel' id='39' display='' raum='39' imobil='false' adjektiv='0' msgid='3' visible='false' /> <item name='Sockel' id='39' display='' raum='39' imobil='false' adjektiv='0' msgid='3' visible='false' />
<item name='Palme' id='40' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' /> <item name='Palme' id='40' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
<item name='Loch' id='41' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' /> <item name='Sockel' id='41' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='false' />
<item name='Mauer' id='43' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='true' />
<item name='Kopf' id='42' display='' raum='38' imobil='true' adjektiv='0' msgid='12' visible='true' />
<item name='Loch' id='44' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
</items> </items>
<personen> <personen>
@@ -392,6 +408,9 @@
<text id='2'> <text id='2'>
In einer Schreibtischschublade findest du einen Schlüssel. In einer Schreibtischschublade findest du einen Schlüssel.
</text> </text>
<text id='item-4'>
Audrey II
</text>
<text id='item-13'> <text id='item-13'>
Der Schlüssel schimmert etwas bläulich. Der Schlüssel schimmert etwas bläulich.
</text> </text>
@@ -442,6 +461,13 @@
| Club | | Club |
---------- ----------
</text> </text>
<text id='item-41'>
Die Mauer wurde scheinbar vor ewigen Zeiten aus getrockneten Lehmziegel errichtet und die Fugen
anschlißend mit Lehm verputzt.
</text>
<text id='item-42'>
Der Kopf repräsentiert einen dir unbekannten Mann, der würdevoll über seine linke Schulter schaut.
</text>
<text id='raum-21'> <text id='raum-21'>
Im Tunnel ist es zu dunkel, um etwas zu sehen. Aber du spürst einen leichten Wind, der von Osten durch den Tunnel weht. Im Tunnel ist es zu dunkel, um etwas zu sehen. Aber du spürst einen leichten Wind, der von Osten durch den Tunnel weht.
</text> </text>
@@ -483,5 +509,9 @@
<text id='jackewurf'> <text id='jackewurf'>
Der Stier ist völlig fasziniert, als du die Jacke hin und herschwenkst. Als du sie nach Osten wirfst, schaubt er einmal auf und rennt hinter her. Der Stier ist völlig fasziniert, als du die Jacke hin und herschwenkst. Als du sie nach Osten wirfst, schaubt er einmal auf und rennt hinter her.
</text> </text>
<text id='graböffnung'>
Also du den Diamant in den Sockel setzt, schiebt sich ein Teil der Mauer knirschend nach hinten und gibt einen Durchgang frei. Staubige Luft
quillt dir entgegen.
</text>
</texte> </texte>
</welt> </welt>