Auto bis Tal.

This commit is contained in:
Olli Graf
2022-05-27 19:20:36 +02:00
parent 227271ad09
commit 6ae6f3efd8
5 changed files with 146 additions and 16 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -102,7 +102,7 @@
<ausgang dir='Runter' nachRaum= '14' />
<beschreibung>
Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke.
Du stehst auf der Spitze der Bohnenranke.
</beschreibung>
</raum>
<raum id='16' name='Pfad'>
@@ -125,7 +125,7 @@
<raum id='18' name='Tal'>
<ausgang dir='West' nachRaum= '17' />
<ausgang dir='Ost' nachRaum= '20' />
<ausgang dir='Süd' nachRaum= '19' />
<ausgang dir='Sued' nachRaum= '19' />
<beschreibung>
@@ -333,5 +333,8 @@
<text id='seilwurf'>
Du wirfst das Seil Richtung Baumkrone. Dort verfängt es sich so fest, dass du daran klettern kannst.
</text>
<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>
</texte>
</welt>