import logging class ActionModul: def isBlank(self,str): if str and len(str.strip()) == 0: return True return False def __init__(self, world): self.world = world def warte(self): print('Du wartest') def inventar(self): self.world.stdscr.addstr(12,0,'Du besitzt folgende Gegenstände:') zeile=13 for itemid in self.world.inventar: item = self.world.inventar[itemid] self.world.stdscr.addstr(zeile,0,item.name) zeile = zeile +1 def klettere(self, parsedCommand): item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) if item != None: if item.id == self.world.ITEM_RANKGITTER: self.rauf() else: self.setFehler('Das sehe ich hier nicht.') def oeffne(self,parsedCommand): item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand); logging.debug(f'öffne RaumId= {self.world.aktuellerRaum.id}') logging.debug(f'öffne Item= {item}') if item != None: logging.debug(f'öffne ItemId= {item.id}') if item.id == self.world.ITEM_TRUHE: logging.debug('öffne Truhe') schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL) if schluessel != None: item.zustand = item.OFFEN seil = self.world.findItemById(self.world.ITEM_SEIL) seil.sichtbar = True self.world.aktuellerRaum.items[seil.id] = seil schwert = self.world.findItemById(self.world.ITEM_SCHWERT) schwert.sichtbar = True self.world.aktuellerRaum.items[schwert.id] = schwert self.setFehler('Truhe ist jetzt offen') else: self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.') elif item.id == self.world.ITEM_HAUSTUER: if self.world.aktuellerRaum.id == self.world.RAUM_FLUR: schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL) logging.debug(f'öffne Haustür Schlüssel ist {schluessel}') if schluessel != None: item.zustand = item.OFFEN self.setFehler('Die Haustür ist geöffnet und führt in den Garten.') self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN else: logging.debug('öffne Haustür kein Haustürschlüssel') 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); logging.debug(f'verliere Item {item}') if item != None: del self.world.inventar[item.id] 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 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 item.raumid = self.world.aktuellerRaum.id else: self.setFehler("Diesen Gegenstand besitzt du nicht.") def setFehler(self,text): self.world.fehler =text def clearFehler(self): self.world.fehler = '' def stelle(self,parsedCommand): item = self.world.findItemImInventar(parsedCommand.gegenstand); if item != None: logging.debug('stelle() item.id=' + str(item.id)) if item.id == self.world.ITEM_GLAS: self.world.aktuellerRaum.ausgaenge[self.world.NORD] = '5' self.verliere(parsedCommand) self.world.printText('1') else: self.setFehler("Diesen Gegenstand besitzt du nicht.") def untersucheAktuellenRaum(self, parsedCommand): raum = self.world.sucheRaumName(parsedCommand.gegenstand) logging.debug(f'raumId {raum.id}') 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 untersuche(self,parsedCommand): logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}') if parsedCommand.gegenstand == None: 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 elif item.id == self.world.ITEM_BETT: # Falltür sichtbar machen self.world.aktuellerRaum.ausgaenge[self.world.RUNTER] = self.world.RAUM_KELLER logging.debug('untersuche(): Keller ist jetzt zugänglich') self.setFehler('Im Boden unter dem Bett findest du eine Falltür, die nach unten führt.') elif item.id == self.world.ITEM_NACHTSCHRANK: 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) def ziehe(self,parsedCommand): item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) if item != None: #alter Code! if item.id == 8: self.world.stdscr.addstr('Du ziehst den Hebel und es passiert.... nichts!') 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) logging.debug(f'nimm: item == {item}') if item != None: if item.imobil: text = self.world.msg[item.pickupmsg] if self.isBlank(item.pickupmsg): self.setFehler('Das kannst du nicht mitnehmen') else: text = self.world.msg[item.pickupmsg] self.setFehler(text) else: del self.world.aktuellerRaum.items[item.id] self.world.inventar[item.id] = item logging.debug(f'nimm: RaumId== {self.world.aktuellerRaum.id}') if self.world.aktuellerRaum.id == self.world.RAUM_BACH: logging.debug(f'nimm: ItemId == {item.id}') if item.id == self.world.ITEM_PLANKE: logging.debug('nehme Planke am Bach') self.world.aktuellerRaum.ausgaenge[self.world.SUED] = '-1' else: self.setFehler("diesen Gegenstand sehe ich hier nicht.") 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}') raum = self.world.aktuellerRaum if raum.ausgaenge[richtung]: ausgang = raum.sucheRaumAusgang(richtung) logging.debug(f'gefundener Ausgang: {ausgang}') if ausgang != None: raum = self.world.sucheRaum(ausgang) else: logging.warn('Keine AusgandId gefunde') self.setFehler("In diese Richtung gibt's keine Ausgang!") if raum != None: self.world.aktuellerRaum = raum else: logging.debug('Kein Raum zur AusgangId') self.setFehler("In diese Richtung gibt's keine Ausgang!") else: self.setFehler("In diese Richtung kannst du nicht gehen") def nord(self): self.geheNach(self.world.NORD) def sued(self): self.geheNach(self.world.SUED) def west(self): self.geheNach(self.world.WEST) def ost(self): self.geheNach(self.world.OST) def rauf(self): self.geheNach(self.world.RAUF) def runter(self): self.geheNach(self.world.RUNTER) def about(self): print("Tomb Version " + self.world.VERSION) self.world.waitForCR def raumaction(self): raumid = self.world.aktuellerRaum.id print('Raumaction für Raum: ' + raumid)