Stier läuft der Jacke hinterher.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
|
@@ -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,7 +230,10 @@ 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:
|
||||
krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
|
||||
@@ -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)
|
||||
|
||||
|
@@ -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()
|
||||
|
||||
|
21
World.py
21
World.py
@@ -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 = ''
|
||||
|
@@ -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
12
tomb.py
@@ -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)
|
||||
|
12
world.xml
12
world.xml
@@ -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>
|
||||
|
Reference in New Issue
Block a user