From 5b0b25cec1409255e16efcce7783a549633dcaea Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Fri, 13 May 2022 17:23:01 +0200 Subject: [PATCH] Das Inventar ist jetzt immer zu sehen. --- ActionModul.py | 70 +++++++++++++++++++++++++++++++++++--------------- TestModule.py | 50 +++++++++++++++++++++++++----------- World.py | 18 ++++++++++--- tomb.py | 2 ++ world.xml | 4 +-- 5 files changed, 103 insertions(+), 41 deletions(-) diff --git a/ActionModul.py b/ActionModul.py index 0774312..ba9cde7 100644 --- a/ActionModul.py +++ b/ActionModul.py @@ -45,7 +45,7 @@ class ActionModul: logging.debug('öffne Truhe') schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL) - if schluessel != None: + if schluessel != None and item.zustand != item.OFFEN: item.zustand = item.OFFEN seil = self.world.findItemById(self.world.ITEM_SEIL) seil.sichtbar = True @@ -53,7 +53,7 @@ class ActionModul: schwert = self.world.findItemById(self.world.ITEM_SCHWERT) schwert.sichtbar = True self.world.aktuellerRaum.items[schwert.id] = schwert - self.setFehler('Truhe ist jetzt offen') + self.setFehler('Aus der Truhe fallen ein Seil und ein Schwert.') else: self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.') @@ -70,17 +70,29 @@ class ActionModul: logging.debug('öffne Haustür kein Haustürschlüssel') self.setFehler('Die Tür ist verschlossen.') + def isAktuellerRaum(self, raumid): + return self.world.aktuellerRaum.id == raumid def benutze(self, parsedCommand): - leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) + item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand); - logging.debug(f'benutze(): Leiter is {leiter}') - if leiter != None: + if item.id ==self.world.ITEM_JACKE: + self.setFehler('Also du die Jacke anziehst, findest du einen kleine Schlüssel in der Tasche.') + self.findeTruhenschluessel() + elif item.id == self.world.ITEM_LEITER: 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.') + elif item.id == self.world.ITEM_PLANKE: + if self.isAktuellerRaum(self.world.RAUM_BACH): + baueBruecke() + self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke über den Bach') + + + + def baueBruecke(self): + bach = self.world.sucheRaum(self.world.RAUM_BACH) + bach.ausgaenge[self.world.SUED] = self.world.RAUM_TEICH def verliere(self,parsedCommand): item = self.world.findItemImInventar(parsedCommand.gegenstand); @@ -92,7 +104,7 @@ class ActionModul: if self.world.aktuellerRaum.id == self.world.RAUM_BACH: if item.id == self.world.ITEM_PLANKE: - self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_TEICH + baueBruecke() self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke über den Bach') self.world.aktuellerRaum.items[item.id] = item @@ -112,7 +124,7 @@ class ActionModul: if item != None: logging.debug('stelle() item.id=' + str(item.id)) - if item.id == self.world.ITEM_GLAS: + if item.id == self.world.ITEM_KRUG: self.world.aktuellerRaum.ausgaenge[self.world.NORD] = '5' self.verliere(parsedCommand) self.world.printText('1') @@ -126,27 +138,33 @@ class ActionModul: logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}') if raum.id == self.world.aktuellerRaum.id: logging.debug(f'untersuche aktuellen Raum {raum.name}') - if raum.id == '5': - #Schlüssel im Keller sichtbar machen - logging.debug('mache Schlüssel sichtbar') - self.setFehler('Auf dem Boden findest du einen kleinen Schlüssel.') - schluessel = self.world.findRaumItemById(self.world.ITEM_KLEINER_SCHLUESSEL) - schluessel.sichtbar = True + def findeTruhenschluessel(self): + schluessel = self.world.findItemById(self.world.ITEM_KLEINER_SCHLUESSEL) + + logging.debug(f'Schlüssel ist sichtbar {schluessel.sichtbar}') + if not schluessel.sichtbar: + logging.debug('mache Schlüssel sichtbar') + self.setFehler('In der Jackentasche findest du einen kleinen Schlüssel.') + schluessel.sichtbar = True + self.insInventar(schluessel) + + def untersuche(self,parsedCommand): logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}') if parsedCommand.gegenstand == None: - self.untersucheAktuellenRaum + self.untersucheAktuellenRaum() return item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand) if item != None: if item.id == self.world.ITEM_PFLANZE: - glas = self.world.findRaumItemById(self.world.ITEM_GLAS) - logging.debug(f'mache Gegenstand {glas.name} sichtbar') - glas.sichtbar = True + krug = self.world.findRaumItemById(self.world.ITEM_KRUG) + logging.debug(f'mache Gegenstand {krug.name} sichtbar') + krug.sichtbar = True + self.setFehler('Die Pflanze ist in einen Krug gepflanzt.') elif item.id == self.world.ITEM_BETT: # Falltür sichtbar machen self.world.aktuellerRaum.ausgaenge[self.world.RUNTER] = self.world.RAUM_KELLER @@ -160,6 +178,11 @@ class ActionModul: self.setFehler('Im Teich schwimmt ein kleiner Fish') fisch = self.world.findItemInAktuellerRaum(self.world.ITEM_FISCH) fisch.sichtbar = True + elif item.id == self.world.ITEM_JACKE: + self.findeTruhenschluessel() + + + else: logging.debug('Kein Item gefunden, suche nach Raum') self.untersucheAktuellenRaum(parsedCommand) @@ -188,6 +211,10 @@ class ActionModul: else: self.setFehler('Eine Leiter sehe ich hier nicht.') + def insInventar(self, item): + logging.debug(f'neu ins Inventar: {item.name}') + self.world.inventar[item.id] = item + def nimm(self,parsedCommand): item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) @@ -203,8 +230,11 @@ class ActionModul: text = self.world.msg[item.pickupmsg] self.setFehler(text) else: + logging.debug(f'Item {item.name} aus aktuellem Raum entfernen') del self.world.aktuellerRaum.items[item.id] - self.world.inventar[item.id] = item + logging.debug(f'Item {item.name} ins Inventar') + + self.insInventar(item) logging.debug(f'nimm: RaumId== {self.world.aktuellerRaum.id}') if self.world.aktuellerRaum.id == self.world.RAUM_BACH: diff --git a/TestModule.py b/TestModule.py index ee5ff73..24924c5 100644 --- a/TestModule.py +++ b/TestModule.py @@ -7,40 +7,60 @@ class TestModule: logging.debug(f'** init Testmodule {world}') self.world = world - self.actionmodul = ActionModul.ActionModul(world) + self.ac = ActionModul.ActionModul(world) def debug(self,msg): logging.debug(f'AUTO: {msg}') def testOeffneTruhe(self): - pcmd = self.world.parseInput('nimm Truhe') #Auf den Dachboden - self.actionmodul.rauf() - self.actionmodul.nimm(pcmd) + self.ac.rauf() + self.ac.nimm(pcmd) #Zurück ins Wohnzimmer - self.actionmodul.runter() + self.ac.runter() #In den Flur - self.actionmodul.sued() + self.ac.sued() # Ins Schlafzimmer - self.actionmodul.west() + self.ac.west() self.debug(f'aktueller Raum: {self.world.aktuellerRaum.name}') self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}') pcmd = self.world.parseInput('untersuche Bett') - self.actionmodul.untersuche(pcmd) + self.ac.untersuche(pcmd) self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}') # In den Keller - self.actionmodul.runter() - pcmd = self.world.parseInput('untersuche Keller') - - self.actionmodul.untersuche(pcmd) - pcmd = self.world.parseInput('nimm Schlüssel') - self.actionmodul.nimm(pcmd) + self.ac.runter() + pcmd = self.world.parseInput('nimm Jacke') + self.ac.nimm(pcmd) + pcmd = self.world.parseInput('benutze Jacke') + self.ac.benutze(pcmd) pcmd = self.world.parseInput('öffne Truhe') - self.actionmodul.oeffne(pcmd) + self.ac.oeffne(pcmd) + + def testTeich(self): + self.testOeffneTruhe() + pcmd = self.world.parseInput('nimm Seil') + self.ac.nimm(pcmd) + pcmd = self.world.parseInput('nimm Schwert') + self.ac.nimm(pcmd) + + #Rauf ins Schlafzimmer + self.ac.rauf() + + pcmd = self.world.parseInput('untersuche Nachtschrank') + self.ac.untersuche(pcmd) + pcmd = self.world.parseInput('nimm Haustürschlüssel') + self.ac.nimm(pcmd) + + #In den Flur + self.ac.ost() + + + + diff --git a/World.py b/World.py index c1b6a08..a871c94 100644 --- a/World.py +++ b/World.py @@ -23,6 +23,15 @@ class World: self.stdscr.getch() + def labelsInventar(self): + labels =[] + + for itemid in self.inventar: + item = self.inventar[itemid] + if item.sichtbar: + labels.append(item.name) + + return labels def printRaum(self): raum = self.aktuellerRaum self.clearScreen() @@ -33,11 +42,12 @@ class World: self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3)) self.stdscr.addstr(4,0,raum.beschreibung) self.stdscr.addstr(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2)) - self.stdscr.addstr(8,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2)) + self.stdscr.addstr(8,0,'Inventar: '+ str(self.labelsInventar()), curses.color_pair(2)) + self.stdscr.addstr(9,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2)) aus = raum.ausgaenge - self.stdscr.addstr(9,0,'mögliche Richtungen: ') + self.stdscr.addstr(10,0,'mögliche Richtungen: ') r = [] if aus[self.NORD] != '-1': r.append('Norden') @@ -63,7 +73,7 @@ class World: if ixri +1 < len(r): richtungen = richtungen + ', ' ixri = ixri +1 - self.stdscr.addstr(9,22,richtungen) + self.stdscr.addstr(10,22,richtungen) self.stdscr.refresh() win.refresh() @@ -221,7 +231,7 @@ class World: self.ITEM_TRUHE = '3' self.ITEM_PFLANZE = '4' self.ITEM_HAUSTUER = '5' - self.ITEM_GLAS = '6' + self.ITEM_KRUG = '6' self.ITEM_BETT = '7' self.ITEM_NACHTSCHRANK = '8' self.ITEM_KLEINER_SCHLUESSEL = '9' diff --git a/tomb.py b/tomb.py index 8c769fc..108bade 100755 --- a/tomb.py +++ b/tomb.py @@ -102,6 +102,8 @@ def inputLoop(stdscr): if(debugcommand[1] == 'truhe'): testmodul.testOeffneTruhe() + elif debugcommand[1] == 'teich': + testmodul.testTeich() else: diff --git a/world.xml b/world.xml index 6974efa..e30f32e 100644 --- a/world.xml +++ b/world.xml @@ -124,10 +124,10 @@ - + - +