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}')
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):
isItem = self.isItem(item,itemid)
isRaum = self.isAktuellerRaum(raumid)
@@ -47,7 +53,15 @@ class ActionBasics:
logging.debug(f'{itemid} -{item.id}')
if item.id == itemid:
return item
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.')
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)
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
else:
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):
return self.world.aktuellerRaum.id == raumid
@@ -215,6 +230,9 @@ class ActionModul(ActionBasics):
return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das sehe ich hier nicht')
return
if item != None:
if item.id == self.world.ITEM_PFLANZE:
@@ -248,10 +266,6 @@ class ActionModul(ActionBasics):
else:
self.zeigeItemBeschreibung(item)
else:
logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand)
@@ -295,6 +309,21 @@ class ActionModul(ActionBasics):
self.setFehler('Der Elefant ist schon geflohen.')
else:
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:
self.verliere(parsedCommand)

View File

@@ -136,6 +136,36 @@ class TestModule:
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):
self.testTeich()

View File

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

View File

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

12
tomb.py
View File

@@ -111,6 +111,8 @@ def inputLoop(stdscr):
debug_Items()
elif debugcommand[1] == 'inventar':
debug_Inventar()
elif debugcommand[1] == 'personen':
debug_Personen()
elif command.startswith('auto:'):
command = command.rstrip()
if command.startswith('auto:'):
@@ -129,6 +131,8 @@ def inputLoop(stdscr):
testmodul.testTal()
elif debugcommand[1] =='baumhaus':
testmodul.testBaumhaus()
elif debugcommand[1] == 'stier':
testmodul.testStier()
world.fehler = ''
@@ -140,6 +144,14 @@ def inputLoop(stdscr):
verarbeiteBefehl(parsedCommand)
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():
logging.debug('liste Items')
logging.debug(world.gegenstaende)

View File

@@ -84,15 +84,13 @@
</beschreibung>
</raum>
<raum id='13' name='Wiese'>
<ausgang dir='Ost' nachRaum= '12' />
<ausgang dir='Sued' nachRaum= '14' />
<ausgang dir='Ost' nachRaum= '11' />
<beschreibung>
Du stehst auf einer Wiese, die nach
Du stehst auf einer umzäunten Wiese, Ein Gatter versperrt den Weg nach Süden.
</beschreibung>
</raum>
<raum id='14' name='Brachland'>
<ausgang dir='Nord' nachRaum= '13' />
<beschreibung>
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='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='Gatter' id='25' display='' raum='13' imobil='true' adjektiv = '0' msgid='11' visible='true' />
</items>
<personen>
<person name='Fisch' id='2' raum='10' bewegung='0' />
<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>
<messages>
<pickup text='Das ist zu schwer' id='1' />
@@ -352,5 +353,8 @@
<text id='mauswurf'>
Als der Elefant die Maus sieht, bekommt er einen Riesenschreck und flüchtet. Dadurch wird der Weg nach Süden frei.
</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>
</welt>