Stier läuft der Jacke hinterher.

This commit is contained in:
Olli Graf
2022-05-28 16:01:58 +02:00
parent 33ee761f32
commit c634711b57
7 changed files with 122 additions and 12 deletions

View File

@@ -25,6 +25,12 @@ class ActionBasics:
logging.debug(f'ins Inventar {item.name}') logging.debug(f'ins Inventar {item.name}')
self.insInventar(item) self.insInventar(item)
def moveItemVonInventarNachRaum(self,item, nachRaumId):
self.ausDemInventar(item)
raum = self.world.findRaumById(nachRaumId)
raum.items[item.id] = item
item.raumid = nachRaumId
def isItemAndAktRaum(self,item, itemid, raumid): def isItemAndAktRaum(self,item, itemid, raumid):
isItem = self.isItem(item,itemid) isItem = self.isItem(item,itemid)
isRaum = self.isAktuellerRaum(raumid) isRaum = self.isAktuellerRaum(raumid)
@@ -47,7 +53,15 @@ class ActionBasics:
logging.debug(f'{itemid} -{item.id}') logging.debug(f'{itemid} -{item.id}')
if item.id == itemid: if item.id == itemid:
return item return item
return None return None
def personVonRaumNachRaum(self, person, vonRaumId, nachRaumId):
vonRaum = self.world.findRaumById(vonRaumId)
nachRaum = self.world.findRaumById(nachRaumId)
del vonRaum.personen[person.id]
nachRaum.personen[person.id] = person
person.raumid = nachRaumId

View File

@@ -75,7 +75,7 @@ class ActionModul(ActionBasics):
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.')
elif item.id == self.world.ITEM_HAUSTUER: elif item.id == self.world.ITEM_HAUSTUER:
if self.world.aktuellerRaum.id == self.world.RAUM_FLUR: if self.isAktuellerRaum(self.world.RAUM_FLUR):
schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL) schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL)
logging.debug(f'öffne Haustür Schlüssel ist {schluessel}') logging.debug(f'öffne Haustür Schlüssel ist {schluessel}')
@@ -86,6 +86,21 @@ class ActionModul(ActionBasics):
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN
else: else:
self.setFehler('Die Tür ist verschlossen.') self.setFehler('Die Tür ist verschlossen.')
elif item.id == self.world.ITEM_GATTER:
logging.debug('Gatter öffnen')
if self.isAktuellerRaum(self.world.RAUM_WIESE):
stier = self.world.findPersonImAktuellenRaum(self.world.PERSON_STIER)
logging.debug('Stier ist {stier}')
if stier != None:
item.zustand = item.OFFEN
self.macheWegFrei(self.world.SUED,self.world.RAUM_BRACHLAND)
self.setFehler('Das Gatter steht offen.')
else:
self.setFehler(f'Der {stier.name} steht dir im Weg.')
def isAktuellerRaum(self, raumid): def isAktuellerRaum(self, raumid):
return self.world.aktuellerRaum.id == raumid return self.world.aktuellerRaum.id == raumid
@@ -215,6 +230,9 @@ class ActionModul(ActionBasics):
return return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das sehe ich hier nicht')
return
if item != None: if item != None:
if item.id == self.world.ITEM_PFLANZE: if item.id == self.world.ITEM_PFLANZE:
@@ -248,10 +266,6 @@ class ActionModul(ActionBasics):
else: else:
self.zeigeItemBeschreibung(item) self.zeigeItemBeschreibung(item)
else: else:
logging.debug('Kein Item gefunden, suche nach Raum') logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand) self.untersucheAktuellenRaum(parsedCommand)
@@ -295,6 +309,21 @@ class ActionModul(ActionBasics):
self.setFehler('Der Elefant ist schon geflohen.') self.setFehler('Der Elefant ist schon geflohen.')
else: else:
self.setFehler('Das besitzt du nicht') self.setFehler('Das besitzt du nicht')
elif self.isAktuellerRaum(self.world.RAUM_WIESE):
logging.debug('Jackenwurf')
stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
jacke = self.world.findItemImInventarById(self.world.ITEM_JACKE)
logging.debug(f'Stier {stier},Jacke {jacke}')
if stier != None:
if jacke != None:
self.world.printText('jackewurf')
self.personVonRaumNachRaum(stier,self.world.aktuellerRaum.id, self.world.RAUM_FELD)
self.moveItemVonInventarNachRaum(jacke, self.world.RAUM_FELD)
else:
self.setFehler('Die trägst du nicht bei dir.')
else:
self.verliere(parsedCommand)
else: else:
self.verliere(parsedCommand) self.verliere(parsedCommand)

View File

@@ -136,6 +136,36 @@ class TestModule:
self.world.schrittzaehler = self.schrittzaehler self.world.schrittzaehler = self.schrittzaehler
def testStier(self):
self.testTeich()
pcmd = self.parseInput('nimm Fisch')
self.ac.nimm(pcmd)
# zum Bach
self.ac.west()
self.schrittzaehler += 1
#Aufs Feld
self.ac.sued()
self.schrittzaehler += 1
# Kleines Feld
self.ac.sued()
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Maus')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
self.ac.nord()
self.schrittzaehler += 1
# Auf die Wiese
self.ac.west()
self.schrittzaehler += 1
def testRanke(self): def testRanke(self):
self.testTeich() self.testTeich()

View File

@@ -135,6 +135,13 @@ class World:
return None return None
def findRaumById(self,raumid):
for rid in self.raumliste:
if rid == raumid:
return self.raumliste[rid]
return None
def findItemInAktuellerRaum(self,itemname): def findItemInAktuellerRaum(self,itemname):
raum = self.aktuellerRaum raum = self.aktuellerRaum
@@ -170,6 +177,16 @@ class World:
return person return person
return None return None
def findPersonImAktuellenRaumById(self, personid):
raum = self.aktuellerRaum
for persid in raum.personen:
person = raum.personen[persid]
if person.id == personid:
return person
return None
def findItemImInventar(self,itemname): def findItemImInventar(self,itemname):
@@ -308,6 +325,7 @@ class World:
self.ITEM_BOHNENRANKE = '21' self.ITEM_BOHNENRANKE = '21'
self.ITEM_ELEFANT = '22' self.ITEM_ELEFANT = '22'
self.ITEM_HAFEN = '23' self.ITEM_HAFEN = '23'
self.ITEM_GATTER = '25'
# Räume # Räume
@@ -342,6 +360,9 @@ class World:
# Personen # Personen
self.PERSON_GEIST = '4' self.PERSON_GEIST = '4'
self.PERSON_FISCH = '2'
self.PERSON_STIER = '5'
self.PERSON_ZWERG = '6'
self.fehler = '' self.fehler = ''

View File

@@ -135,7 +135,7 @@ class WorldParser():
person = Person(name,id,raum) person = Person(name,id,raum)
self.world.personen[id] = person self.world.personen[id] = person
raum = self.world.sucheRaum(raumid) raum = self.world.sucheRaum(raumid)
raum.personen[raumid] = person raum.personen[id] = person
# Texte # Texte
for item in root.findall('texte/text'): for item in root.findall('texte/text'):

12
tomb.py
View File

@@ -111,6 +111,8 @@ def inputLoop(stdscr):
debug_Items() debug_Items()
elif debugcommand[1] == 'inventar': elif debugcommand[1] == 'inventar':
debug_Inventar() debug_Inventar()
elif debugcommand[1] == 'personen':
debug_Personen()
elif command.startswith('auto:'): elif command.startswith('auto:'):
command = command.rstrip() command = command.rstrip()
if command.startswith('auto:'): if command.startswith('auto:'):
@@ -129,6 +131,8 @@ def inputLoop(stdscr):
testmodul.testTal() testmodul.testTal()
elif debugcommand[1] =='baumhaus': elif debugcommand[1] =='baumhaus':
testmodul.testBaumhaus() testmodul.testBaumhaus()
elif debugcommand[1] == 'stier':
testmodul.testStier()
world.fehler = '' world.fehler = ''
@@ -140,6 +144,14 @@ def inputLoop(stdscr):
verarbeiteBefehl(parsedCommand) verarbeiteBefehl(parsedCommand)
actionmodul.raumaction() actionmodul.raumaction()
def debug_Personen():
logging.debug('Personen im aktuellen Raum')
for pid in world.aktuellerRaum.personen:
person = world.personen[pid]
logging.debug(f'Id: {person.id} - Name: {person.name}')
def debug_Items(): def debug_Items():
logging.debug('liste Items') logging.debug('liste Items')
logging.debug(world.gegenstaende) logging.debug(world.gegenstaende)

View File

@@ -84,15 +84,13 @@
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='13' name='Wiese'> <raum id='13' name='Wiese'>
<ausgang dir='Ost' nachRaum= '12' /> <ausgang dir='Ost' nachRaum= '11' />
<ausgang dir='Sued' nachRaum= '14' />
<beschreibung> <beschreibung>
Du stehst auf einer Wiese, die nach Du stehst auf einer umzäunten Wiese, Ein Gatter versperrt den Weg nach Süden.
</beschreibung> </beschreibung>
</raum> </raum>
<raum id='14' name='Brachland'> <raum id='14' name='Brachland'>
<ausgang dir='Nord' nachRaum= '13' />
<beschreibung> <beschreibung>
Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke. Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke.
@@ -265,11 +263,14 @@
<item name='Elefant' id='22' display='' raum='15' imobil='true' adjektiv = '0' msgid='9' visible='true' /> <item name='Elefant' id='22' display='' raum='15' imobil='true' adjektiv = '0' msgid='9' visible='true' />
<item name='Hafen' id='23' display='' raum='21' imobil='true' adjektiv = '0' msgid='10' visible='true' /> <item name='Hafen' id='23' display='' raum='21' imobil='true' adjektiv = '0' msgid='10' visible='true' />
<item name='Segelschiff' id='24' display='' raum='22' imobil='true' adjektiv = '0' msgid='10' visible='true' /> <item name='Segelschiff' id='24' display='' raum='22' imobil='true' adjektiv = '0' msgid='10' visible='true' />
<item name='Gatter' id='25' display='' raum='13' imobil='true' adjektiv = '0' msgid='11' visible='true' />
</items> </items>
<personen> <personen>
<person name='Fisch' id='2' raum='10' bewegung='0' /> <person name='Fisch' id='2' raum='10' bewegung='0' />
<person name='Geist' id='4' raum='2' bewegung='1' /> <person name='Geist' id='4' raum='2' bewegung='1' />
<person name='Stier' id='5' raum='13' bewegung='0' />
<person name='Zwerg' id='6' raum='24' bewegung='0' />
</personen> </personen>
<messages> <messages>
<pickup text='Das ist zu schwer' id='1' /> <pickup text='Das ist zu schwer' id='1' />
@@ -352,5 +353,8 @@
<text id='mauswurf'> <text id='mauswurf'>
Als der Elefant die Maus sieht, bekommt er einen Riesenschreck und flüchtet. Dadurch wird der Weg nach Süden frei. Als der Elefant die Maus sieht, bekommt er einen Riesenschreck und flüchtet. Dadurch wird der Weg nach Süden frei.
</text> </text>
<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.
</text>
</texte> </texte>
</welt> </welt>