diff --git a/ActionBasics.py b/ActionBasics.py
index 2f24c25..963cf3b 100644
--- a/ActionBasics.py
+++ b/ActionBasics.py
@@ -1,8 +1,48 @@
import logging
+import inspect
class ActionBasics:
def __init__(self,world):
self.world = world
+
+ def debug(self, method, text):
+ logging.debug(f'ActionBasics#{method}: {text}')
+
+ def insInventar(self, item):
+ self.debug('insInventar()',f'neu ins Inventar: {item.name}')
+ self.world.inventar[item.id] = item
+
+ def setFehler(self,text):
+ self.world.fehler =text
+
+ def clearFehler(self):
+ self.world.fehler = ''
+
+ def moveItemVonRaumNachInventar(self,item):
+ self.debug('moveItemVonRaumNachInventar()',f'entferne aus aktuellen Raum {item.name}')
+ del self.world.aktuellerRaum.items[item.id]
+ self.debug('moveItemVonRaumNachInventar()',f'ins Inventar {item.name}')
+ self.insInventar(item)
+
+ def isItemAndAktRaum(self,item, itemid, raumid):
+ return self.isItem(item, itemid) and self.isAktuellerRaum(raumid)
+
+ def isItem(self, item, itemid):
+ return item.id == itemid
+
+ def macheWegFrei(self, richtung, raumid):
+ self.world.aktuellerRaum.ausgaenge[richtung] = raumid
+
+ def findItemInAktuellerRaumById(self, itemid):
+ for itemid in self.world.aktuellerRaum.items:
+ raum = self.world.aktuellerRaum
+
+ item = self.world.aktuellerRaum.items[itemid]
+ self.debug('findRaumItemById()',f'{itemid} -{item.id}')
+ if item.id == itemid:
+ return item
+
+ return None
diff --git a/ActionModul.py b/ActionModul.py
index 3cdf48e..1d6bb75 100644
--- a/ActionModul.py
+++ b/ActionModul.py
@@ -277,10 +277,33 @@ class ActionModul(ActionBasics):
def wirf(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand)
+ if item == None:
+ self.setFehler('Das besitzt du nicht.')
+ return
+
if self.isItemAndAktRaum(item, self.world.ITEM_SEIL,self.world.RAUM_BAUM):
self.world.printText('seilwurf')
self.world.aktuellerRaum.richtungen[self.world.RAUF] = self.world.RAUM_BAUMHAUS
self.ausDemInventar(item)
+ elif self.isAktuellerRaum(self.world.RAUM_BOHNENRANKE):
+ if self.isItem(item, self.world.ITEM_MAUS):
+
+ elefant = self.findItemInAktuellerRaumById(self.world.ITEM_ELEFANT)
+
+ logging.debug(f'Elefant - {elefant}')
+ if elefant != None:
+ self.world.printText('mauswurf')
+ self.ausDemInventar(item)
+ self.macheWegFrei(self.world.SUED,self.world.RAUM_PFAD)
+ del self.world.aktuellerRaum.items[elefant.id]
+ else:
+ self.setFehler('Der Elefant ist schon geflohen.')
+ else:
+ self.setFehler('Das besitzt du nicht')
+ else:
+ self.verliere(parsedCommand)
+
+
def klettere(self, parsedCommand):
@@ -292,7 +315,7 @@ class ActionModul(ActionBasics):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf()
elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
- ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE):
+ ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE)
if ranke.zustand == Gegenstand.GROSS:
self.ac.rauf()
@@ -301,15 +324,8 @@ class ActionModul(ActionBasics):
else:
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 moveItemVonRaumNachInventar(self,item):
- logging.debug(f'moveItemVonRaumNachInventar(): entferne aus aktuellen Raum {item.name}')
- del self.world.aktuellerRaum.items[item.id]
- logging.debug(f'moveItemVonRaumNachInventar(): ins Inventar {item.name}')
- self.insInventar(item)
def nimm(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
@@ -354,11 +370,6 @@ class ActionModul(ActionBasics):
self.setFehler("diesen Gegenstand sehe ich hier nicht.")
- def isItemAndAktRaum(self,item, itemid, raumid):
- return self.isItem(item, itemid) and self.isAktuellerRaum(raumid)
-
- def isItem(self, item, itemid):
- return item.id == itemid
def sprich(self,parsedCommand):
geist = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
diff --git a/TestModule.py b/TestModule.py
index 5e8f7bf..6af64a0 100644
--- a/TestModule.py
+++ b/TestModule.py
@@ -151,6 +151,53 @@ class TestModule:
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
+
+
+ # Aufs Brachland
+ self.ac.sued()
+ self.schrittzaehler += 1
+
+ pcmd = self.parseInput('leere Krug')
+ self.ac.leere(pcmd)
+ self.ac.clearFehler()
+ self.schrittzaehler += 1
+
+ # Wiese
+ self.ac.nord()
+
+ # Feld
+ self.ac.ost()
+
+ # Bach
+ self.ac.nord()
+
+ # Teich
+
+ self.ac.ost()
+ pcmd = self.parseInput('fuelle Krug')
+
+ # zum Bach
+ self.ac.west()
+ self.schrittzaehler += 1
+
+
+ #Aufs Feld
+ self.ac.sued()
+ self.schrittzaehler += 1
# Auf die Wiese
self.ac.west()
@@ -167,6 +214,28 @@ class TestModule:
self.world.schrittzaehler = self.schrittzaehler
+ def testTal(self):
+
+ self.testRanke()
+
+ self.ac.rauf()
+ self.schrittzaehler += 1
+
+ pcmd = self.parseInput('wirf Maus')
+ self.ac.wirf(pcmd)
+ self.schrittzaehler += 1
+
+ #Pfad
+ self.ac.sued()
+ self.schrittzaehler += 1
+
+ #südlicherPfad
+ self.ac.sued()
+ self.schrittzaehler += 1
+
+ # östlicher Pfad
+ self.ac.ost()
+ self.schrittzaehler += 1
diff --git a/tomb.py b/tomb.py
index 19882eb..81fad46 100755
--- a/tomb.py
+++ b/tomb.py
@@ -66,6 +66,8 @@ def verarbeiteBefehl(parsedCommand):
actionmodul.leere(parsedCommand)
elif id == '27':
actionmodul.fuelle(parsedCommand)
+ elif id == '28':
+ actionmodul.wirf(parsedCommand)
elif id == '-1':
world.fehler = 'Ich verstehe diesen Befehl nicht'
else:
@@ -120,9 +122,14 @@ def inputLoop(stdscr):
testmodul.testTeich()
elif debugcommand[1] == 'ranke':
testmodul.testRanke()
+ elif debugcommand[1] == 'tal':
+ testmodul.testTal()
+
+ world.fehler = ''
else:
+ actionmodul.clearFehler()
parsedCommand = world.parseInput(command)
commandid = parsedCommand.commandid
verarbeiteBefehl(parsedCommand)
diff --git a/world.xml b/world.xml
index ddc13e1..88a76d8 100644
--- a/world.xml
+++ b/world.xml
@@ -102,7 +102,7 @@
- Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke.
+ Du stehst auf der Spitze der Bohnenranke.
@@ -125,7 +125,7 @@
-
+
@@ -333,5 +333,8 @@
Du wirfst das Seil Richtung Baumkrone. Dort verfängt es sich so fest, dass du daran klettern kannst.
+
+ Als der Elefant die Maus sieht, bekommt er einen Riesenschreck und flüchtet. Dadurch wird der Weg nach Süden frei.
+