diff --git a/ActionModul.py b/ActionModul.py index a01d551..089479a 100644 --- a/ActionModul.py +++ b/ActionModul.py @@ -47,6 +47,12 @@ class ActionModul: if schluessel != None: item.zustand = item.OFFEN + seil = self.world.findItemById(self.world.ITEM_SEIL) + seil.sichtbar = True + self.world.aktuellerRaum.gegenstaende[seil.id] = seil + schwert = self.world.findItemById(self.world.ITEM_SCHWERT) + schwert.sichtbar = True + self.world.aktuellerRaum.gegenstaende[schwert.id] = schwert self.setFehler('Truhe ist jetzt offen') else: self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.') @@ -65,6 +71,17 @@ class ActionModul: self.setFehler('Die Tür ist verschlossen.') + def benutze(self, parsedCommand): + leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) + + logging.debug(f'benutze(): Leiter is {leiter}') + if leiter != None: + if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER): + logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}') + self.rauf() + else: + self.setFehler('Eine Leiter sehe ich hier nicht.') + def verliere(self,parsedCommand): item = self.world.findItemImInventar(parsedCommand.gegenstand); @@ -138,6 +155,10 @@ class ActionModul: self.setFehler('In der Schublade findest du einen Schlüssel') schluessel = self.world.findRaumItemById(self.world.ITEM_HAUSTUERSCHLUESSEL) schluessel.sichtbar = True + elif item.id == self.world.ITEM_TEICH: + self.setFehler('Im Teich schwimmt ein kleiner Fish') + fisch = self.world.findItemInAktuellerRaum(self.world.ITEM_FISCH) + fisch.sichtbar = True else: logging.debug('Kein Item gefunden, suche nach Raum') self.untersucheAktuellenRaum(parsedCommand) @@ -152,6 +173,21 @@ class ActionModul: else: self.setFehler('Das sehe ich hier nicht.') + def fange(self, parsedCommand): + skip + + def klettere(self, parsedCommand): + leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) + + logging.debug(f'klettere(): Leiter is {leiter}') + if leiter != None: + if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER): + logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}') + self.rauf() + else: + self.setFehler('Eine Leiter sehe ich hier nicht.') + + def nimm(self,parsedCommand): item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) @@ -181,12 +217,18 @@ class ActionModul: self.setFehler("diesen Gegenstand sehe ich hier nicht.") - def gehe(self): - richtung = self.world.parsedCommand.gegenstand + def gehe(self,parsedCommand): + richtung = parsedCommand.gegenstand.lower() logging.debug("gehe nach " + richtung) if richtung == 'nord': self.nord() + elif richtung == 'süd': + self.sued() + if richtung == 'west': + self.west() + if richtung == 'ost': + self.ost() def geheNach(self,richtung): logging.debug(f'geheNach() Richtung {richtung}') diff --git a/World.py b/World.py index f3ecf21..49fc0a3 100644 --- a/World.py +++ b/World.py @@ -89,6 +89,16 @@ class World: return item + def findItemById(self,id): + for itemkey in self.gegenstaende: + item = self.gegenstaende[itemkey] + logging.debug(f'findItemById(): Item= {item}') + logging.debug(f'findItemById(): Itemtype= {type(item)}') + if item.id == id: + return item + + return None + def findItemInAktuellerRaum(self,itemname): raum = self.aktuellerRaum @@ -167,6 +177,19 @@ class World: return parsedCommand + def debug_Items(self): + logging.debug('liste Items') + logging.debug(self.gegenstaende) + count = 1 + + for key in self.gegenstaende: + item = self.gegenstaende[key] + + logging.debug(f'count= {count}') + logging.debug('Itemtyp: ' + str(type(item))) + logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}') + count = count +1 + def __init__(self): self.raumliste = {} self.msg = {} @@ -199,14 +222,17 @@ class World: self.ITEM_NACHTSCHRANK = '8' self.ITEM_KLEINER_SCHLUESSEL = '9' self.ITEM_JACKE = '10' - self.ITEM_SCHWERT = '11' self.ITEM_SEIL = '12' self.ITEM_HAUSTUERSCHLUESSEL = '13' self.ITEM_RANKGITTER = '14' self.ITEM_PLANKE = '15' + self.ITEM_TEICH = '16' + self.ITEM_FISCH = '17' + self.ITEM_SCHWERT = '18' # Räume + self.RAUM_UNDEF = '-1' self.RAUM_ESSZIMMER = '1' self.RAUM_DACHBODEN = '2' self.RAUM_FLUR = '3' @@ -222,3 +248,5 @@ class World: parser = WorldParser.WorldParser(self) parser.parseWorld('world.xml') + self.debug_Items() + diff --git a/WorldParser.py b/WorldParser.py index fd812f1..8b6d369 100644 --- a/WorldParser.py +++ b/WorldParser.py @@ -100,13 +100,15 @@ class WorldParser(): gegenstand.sichtbar = visible.lower() not in ['false','False','0'] #logging.debug('Gegenstand ' + gegenstand.name + ' ist sichtbar: ' + str(gegenstand.sichtbar)) gegenstand.pickupmsg = msgid - print('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg) + logging.debug('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg) raum.items[id] = gegenstand + logging.debug(f'Hinzufügen Gegenstand vom Typ: {str(type(gegenstand))}') self.world.gegenstaende[id] = gegenstand else: - logging.error(f'Kann Raum für Gegenstand {gegenstand.name} nicht finden') - print(f'Kein Raum für {gegenstand.name}') + if raum != '-1': + logging.error(f'Kann Raum für Gegenstand {gegenstand.name} nicht finden') + logging.error(f'Kein Raum für {gegenstand.name}') # Personen for item in root.findall('personen/person'): diff --git a/tomb.py b/tomb.py index bd7da9b..3e5bb44 100755 --- a/tomb.py +++ b/tomb.py @@ -19,6 +19,8 @@ def verarbeiteBefehl(parsedCommand): actionmodul.nimm(parsedCommand) elif id == '3': actionmodul.untersuche(parsedCommand) + elif id == '4': + actionmodul.benutze(parsedCommand) elif id == '5': actionmodul.nord() elif id == '6': @@ -49,6 +51,8 @@ def verarbeiteBefehl(parsedCommand): actionmodul.oeffne(parsedCommand) elif id == '21': actionmodul.klettere(parsedCommand) + elif id == '22': + actionmodul.fange(parsedCommand) elif id == '-1': world.fehler = 'Ich verstehe diesen Befehl nicht' else: @@ -86,10 +90,7 @@ def inputLoop(stdscr): logging.debug(f'debugcommand: {debugcommand}') if debugcommand[1] == 'items': - logging.debug('liste Items') - logging.debug(world.gegenstaende) - for item in world.gegenstaende: - logging.debug(f'Id:{item.id} - Name:{item.name}') + world.debug_Items() else: @@ -99,4 +100,14 @@ def inputLoop(stdscr): schrittzaehler = schrittzaehler +1 actionmodul.raumaction() +def debug_Items(): + logging.debug('liste Items') + logging.debug(world.gegenstaende) + count = 0 + for item in world.gegenstaende: + logging.debug(f'count= {count}') + logging.debug('Itemtyp: ' + str(type(item))) +# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}') + count = count +1 + wrapper(inputLoop) diff --git a/world.xml b/world.xml index f41a428..6974efa 100644 --- a/world.xml +++ b/world.xml @@ -71,6 +71,7 @@ + @@ -95,6 +96,7 @@ + @@ -128,10 +130,13 @@ - + + + + @@ -142,7 +147,7 @@ - +