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 logging
import inspect
class ActionBasics: class ActionBasics:
def __init__(self,world): def __init__(self,world):
self.world = 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): def wirf(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand) 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): if self.isItemAndAktRaum(item, self.world.ITEM_SEIL,self.world.RAUM_BAUM):
self.world.printText('seilwurf') self.world.printText('seilwurf')
self.world.aktuellerRaum.richtungen[self.world.RAUF] = self.world.RAUM_BAUMHAUS self.world.aktuellerRaum.richtungen[self.world.RAUF] = self.world.RAUM_BAUMHAUS
self.ausDemInventar(item) 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): def klettere(self, parsedCommand):
@@ -292,7 +315,7 @@ class ActionModul(ActionBasics):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}') logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf() self.rauf()
elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND): 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: if ranke.zustand == Gegenstand.GROSS:
self.ac.rauf() self.ac.rauf()
@@ -301,15 +324,8 @@ class ActionModul(ActionBasics):
else: else:
self.setFehler('Eine Leiter sehe ich hier nicht.') 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): def nimm(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
@@ -354,11 +370,6 @@ class ActionModul(ActionBasics):
self.setFehler("diesen Gegenstand sehe ich hier nicht.") 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): def sprich(self,parsedCommand):
geist = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand) geist = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)

View File

@@ -151,6 +151,53 @@ class TestModule:
self.ac.sued() self.ac.sued()
self.schrittzaehler += 1 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 # Auf die Wiese
self.ac.west() self.ac.west()
@@ -167,6 +214,28 @@ class TestModule:
self.world.schrittzaehler = self.schrittzaehler 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) actionmodul.leere(parsedCommand)
elif id == '27': elif id == '27':
actionmodul.fuelle(parsedCommand) actionmodul.fuelle(parsedCommand)
elif id == '28':
actionmodul.wirf(parsedCommand)
elif id == '-1': elif id == '-1':
world.fehler = 'Ich verstehe diesen Befehl nicht' world.fehler = 'Ich verstehe diesen Befehl nicht'
else: else:
@@ -120,9 +122,14 @@ def inputLoop(stdscr):
testmodul.testTeich() testmodul.testTeich()
elif debugcommand[1] == 'ranke': elif debugcommand[1] == 'ranke':
testmodul.testRanke() testmodul.testRanke()
elif debugcommand[1] == 'tal':
testmodul.testTal()
world.fehler = ''
else: else:
actionmodul.clearFehler()
parsedCommand = world.parseInput(command) parsedCommand = world.parseInput(command)
commandid = parsedCommand.commandid commandid = parsedCommand.commandid
verarbeiteBefehl(parsedCommand) verarbeiteBefehl(parsedCommand)

View File

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