Das Inventar ist jetzt immer zu sehen.

This commit is contained in:
Olli Graf
2022-05-13 17:23:01 +02:00
parent 85d36993c1
commit 5b0b25cec1
5 changed files with 103 additions and 41 deletions

View File

@@ -45,7 +45,7 @@ class ActionModul:
logging.debug('öffne Truhe') logging.debug('öffne Truhe')
schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL) schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL)
if schluessel != None: if schluessel != None and item.zustand != item.OFFEN:
item.zustand = item.OFFEN item.zustand = item.OFFEN
seil = self.world.findItemById(self.world.ITEM_SEIL) seil = self.world.findItemById(self.world.ITEM_SEIL)
seil.sichtbar = True seil.sichtbar = True
@@ -53,7 +53,7 @@ class ActionModul:
schwert = self.world.findItemById(self.world.ITEM_SCHWERT) schwert = self.world.findItemById(self.world.ITEM_SCHWERT)
schwert.sichtbar = True schwert.sichtbar = True
self.world.aktuellerRaum.items[schwert.id] = schwert 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: else:
self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.') 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') logging.debug('öffne Haustür kein Haustürschlüssel')
self.setFehler('Die Tür ist verschlossen.') self.setFehler('Die Tür ist verschlossen.')
def isAktuellerRaum(self, raumid):
return self.world.aktuellerRaum.id == raumid
def benutze(self, parsedCommand): def benutze(self, parsedCommand):
leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand);
logging.debug(f'benutze(): Leiter is {leiter}') if item.id ==self.world.ITEM_JACKE:
if leiter != None: 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): 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()
else: elif item.id == self.world.ITEM_PLANKE:
self.setFehler('Eine Leiter sehe ich hier nicht.') 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): def verliere(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand); item = self.world.findItemImInventar(parsedCommand.gegenstand);
@@ -92,7 +104,7 @@ class ActionModul:
if self.world.aktuellerRaum.id == self.world.RAUM_BACH: if self.world.aktuellerRaum.id == self.world.RAUM_BACH:
if item.id == self.world.ITEM_PLANKE: 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.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke über den Bach')
self.world.aktuellerRaum.items[item.id] = item self.world.aktuellerRaum.items[item.id] = item
@@ -112,7 +124,7 @@ class ActionModul:
if item != None: if item != None:
logging.debug('stelle() item.id=' + str(item.id)) 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.world.aktuellerRaum.ausgaenge[self.world.NORD] = '5'
self.verliere(parsedCommand) self.verliere(parsedCommand)
self.world.printText('1') self.world.printText('1')
@@ -126,27 +138,33 @@ class ActionModul:
logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}') logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}')
if raum.id == self.world.aktuellerRaum.id: if raum.id == self.world.aktuellerRaum.id:
logging.debug(f'untersuche aktuellen Raum {raum.name}') 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): def untersuche(self,parsedCommand):
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 self.untersucheAktuellenRaum()
return return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
if item != None: if item != None:
if item.id == self.world.ITEM_PFLANZE: if item.id == self.world.ITEM_PFLANZE:
glas = self.world.findRaumItemById(self.world.ITEM_GLAS) krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
logging.debug(f'mache Gegenstand {glas.name} sichtbar') logging.debug(f'mache Gegenstand {krug.name} sichtbar')
glas.sichtbar = True krug.sichtbar = True
self.setFehler('Die Pflanze ist in einen Krug gepflanzt.')
elif item.id == self.world.ITEM_BETT: elif item.id == self.world.ITEM_BETT:
# Falltür sichtbar machen # Falltür sichtbar machen
self.world.aktuellerRaum.ausgaenge[self.world.RUNTER] = self.world.RAUM_KELLER 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') self.setFehler('Im Teich schwimmt ein kleiner Fish')
fisch = self.world.findItemInAktuellerRaum(self.world.ITEM_FISCH) fisch = self.world.findItemInAktuellerRaum(self.world.ITEM_FISCH)
fisch.sichtbar = True fisch.sichtbar = True
elif item.id == self.world.ITEM_JACKE:
self.findeTruhenschluessel()
else: else:
logging.debug('Kein Item gefunden, suche nach Raum') logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand) self.untersucheAktuellenRaum(parsedCommand)
@@ -188,6 +211,10 @@ class ActionModul:
else: else:
self.setFehler('Eine Leiter sehe ich hier nicht.') 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): def nimm(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
@@ -203,8 +230,11 @@ class ActionModul:
text = self.world.msg[item.pickupmsg] text = self.world.msg[item.pickupmsg]
self.setFehler(text) self.setFehler(text)
else: else:
logging.debug(f'Item {item.name} aus aktuellem Raum entfernen')
del self.world.aktuellerRaum.items[item.id] 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}') logging.debug(f'nimm: RaumId== {self.world.aktuellerRaum.id}')
if self.world.aktuellerRaum.id == self.world.RAUM_BACH: if self.world.aktuellerRaum.id == self.world.RAUM_BACH:

View File

@@ -7,40 +7,60 @@ class TestModule:
logging.debug(f'** init Testmodule {world}') logging.debug(f'** init Testmodule {world}')
self.world = world self.world = world
self.actionmodul = ActionModul.ActionModul(world) self.ac = ActionModul.ActionModul(world)
def debug(self,msg): def debug(self,msg):
logging.debug(f'AUTO: {msg}') logging.debug(f'AUTO: {msg}')
def testOeffneTruhe(self): def testOeffneTruhe(self):
pcmd = self.world.parseInput('nimm Truhe') pcmd = self.world.parseInput('nimm Truhe')
#Auf den Dachboden #Auf den Dachboden
self.actionmodul.rauf() self.ac.rauf()
self.actionmodul.nimm(pcmd) self.ac.nimm(pcmd)
#Zurück ins Wohnzimmer #Zurück ins Wohnzimmer
self.actionmodul.runter() self.ac.runter()
#In den Flur #In den Flur
self.actionmodul.sued() self.ac.sued()
# Ins Schlafzimmer # Ins Schlafzimmer
self.actionmodul.west() self.ac.west()
self.debug(f'aktueller Raum: {self.world.aktuellerRaum.name}') self.debug(f'aktueller Raum: {self.world.aktuellerRaum.name}')
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}') self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
pcmd = self.world.parseInput('untersuche Bett') pcmd = self.world.parseInput('untersuche Bett')
self.actionmodul.untersuche(pcmd) self.ac.untersuche(pcmd)
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}') self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
# In den Keller # In den Keller
self.actionmodul.runter() self.ac.runter()
pcmd = self.world.parseInput('untersuche Keller') pcmd = self.world.parseInput('nimm Jacke')
self.ac.nimm(pcmd)
self.actionmodul.untersuche(pcmd) pcmd = self.world.parseInput('benutze Jacke')
pcmd = self.world.parseInput('nimm Schlüssel') self.ac.benutze(pcmd)
self.actionmodul.nimm(pcmd)
pcmd = self.world.parseInput('öffne Truhe') 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()

View File

@@ -23,6 +23,15 @@ class World:
self.stdscr.getch() 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): def printRaum(self):
raum = self.aktuellerRaum raum = self.aktuellerRaum
self.clearScreen() self.clearScreen()
@@ -33,11 +42,12 @@ class World:
self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3)) self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3))
self.stdscr.addstr(4,0,raum.beschreibung) self.stdscr.addstr(4,0,raum.beschreibung)
self.stdscr.addstr(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2)) 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 aus = raum.ausgaenge
self.stdscr.addstr(9,0,'mögliche Richtungen: ') self.stdscr.addstr(10,0,'mögliche Richtungen: ')
r = [] r = []
if aus[self.NORD] != '-1': if aus[self.NORD] != '-1':
r.append('Norden') r.append('Norden')
@@ -63,7 +73,7 @@ class World:
if ixri +1 < len(r): if ixri +1 < len(r):
richtungen = richtungen + ', ' richtungen = richtungen + ', '
ixri = ixri +1 ixri = ixri +1
self.stdscr.addstr(9,22,richtungen) self.stdscr.addstr(10,22,richtungen)
self.stdscr.refresh() self.stdscr.refresh()
win.refresh() win.refresh()
@@ -221,7 +231,7 @@ class World:
self.ITEM_TRUHE = '3' self.ITEM_TRUHE = '3'
self.ITEM_PFLANZE = '4' self.ITEM_PFLANZE = '4'
self.ITEM_HAUSTUER = '5' self.ITEM_HAUSTUER = '5'
self.ITEM_GLAS = '6' self.ITEM_KRUG = '6'
self.ITEM_BETT = '7' self.ITEM_BETT = '7'
self.ITEM_NACHTSCHRANK = '8' self.ITEM_NACHTSCHRANK = '8'
self.ITEM_KLEINER_SCHLUESSEL = '9' self.ITEM_KLEINER_SCHLUESSEL = '9'

View File

@@ -102,6 +102,8 @@ def inputLoop(stdscr):
if(debugcommand[1] == 'truhe'): if(debugcommand[1] == 'truhe'):
testmodul.testOeffneTruhe() testmodul.testOeffneTruhe()
elif debugcommand[1] == 'teich':
testmodul.testTeich()
else: else:

View File

@@ -124,10 +124,10 @@
<item name='Truhe' id='3' raum='2' imobil='false' adjektiv = '0' msgid='4' visible='true' /> <item name='Truhe' id='3' raum='2' imobil='false' adjektiv = '0' msgid='4' visible='true' />
<item name='Pflanze' id='4' raum='3' imobil='false' adjektiv = '0' msgid='3' visible='true' /> <item name='Pflanze' id='4' raum='3' imobil='false' adjektiv = '0' msgid='3' visible='true' />
<item name='Haustür' id='5' raum='3' imobil='true' adjektiv = '0' msgid='5' visible='true' /> <item name='Haustür' id='5' raum='3' imobil='true' adjektiv = '0' msgid='5' visible='true' />
<item name='Glas' id='6' raum='3' imobil='false' adjektiv = '0' msgid='3' visible='false' /> <item name='Krug' id='6' raum='3' imobil='false' adjektiv = '0' msgid='3' visible='false' />
<item name='Bett' id='7' raum='4' imobil='true' adjektiv = '0' msgid='1' visible=' true' /> <item name='Bett' id='7' raum='4' imobil='true' adjektiv = '0' msgid='1' visible=' true' />
<item name='Nachtschrank' id='8' raum='4' imobil='true' adjektiv = '0' msgid='1' visible=' true' /> <item name='Nachtschrank' id='8' raum='4' imobil='true' adjektiv = '0' msgid='1' visible=' true' />
<item name='Schlüssel' id='9' raum='5' imobil='false' adjektiv = '1' msgid='1' visible='false' /> <item name='Schlüssel' id='9' raum='-1' imobil='false' adjektiv = '1' msgid='1' visible='false' />
<item name='Jacke' id='10' raum='5' imobil='false' adjektiv = '0' msgid='1' visible='true' /> <item name='Jacke' id='10' raum='5' imobil='false' adjektiv = '0' msgid='1' visible='true' />
<item name='Schwert' id='11' raum='5' imobil='false' adjektiv = '0' msgid='1' visible='false' /> <item name='Schwert' id='11' raum='5' imobil='false' adjektiv = '0' msgid='1' visible='false' />
<item name='Seil' id='12' raum='-1' imobil='false' adjektiv = '0' msgid='1' visible='false' /> <item name='Seil' id='12' raum='-1' imobil='false' adjektiv = '0' msgid='1' visible='false' />