From 6ae6f3efd8cb50917d1f8734e6a18712da7b1d40 Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Fri, 27 May 2022 19:20:36 +0200 Subject: [PATCH] Auto bis Tal. --- ActionBasics.py | 40 ++++++++++++++++++++++++++++ ActionModul.py | 39 ++++++++++++++++++---------- TestModule.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ tomb.py | 7 +++++ world.xml | 7 +++-- 5 files changed, 146 insertions(+), 16 deletions(-) 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. +