Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8bd0897af1 | ||
![]() |
ebdf22f6a6 | ||
![]() |
7bd3ecaba0 | ||
![]() |
0ff17aac13 | ||
![]() |
3b848ffb80 |
@@ -123,16 +123,26 @@ class ActionModul(ActionBasics):
|
||||
if item.id ==self.world.ITEM_JACKE:
|
||||
self.setFehler('Also du die Jacke anziehst, findest du einen kleine Schlüssel in der Tasche.')
|
||||
self.findeTruhenschluessel()
|
||||
elif item.id == self.world.ITEM_LEITER:
|
||||
elif self.isItem(item,self.world.ITEM_LEITER):
|
||||
if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER):
|
||||
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
|
||||
self.rauf()
|
||||
elif item.id == self.world.ITEM_PLANKE:
|
||||
elif self.isItem(item,self.world.ITEM_PLANKE):
|
||||
if self.isAktuellerRaum(self.world.RAUM_BACH):
|
||||
self.baueBruecke()
|
||||
self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke.')
|
||||
else:
|
||||
self.setFehler('Das macht hier keinen Sinn.')
|
||||
elif self.isItem(item, self.world.ITEM_SCHWIMMWESTE):
|
||||
item.zustand = item.ANGEZOGEN
|
||||
self.setFehler('Du ziehst die Schwimmweste an.')
|
||||
elif self.isItem(item,self.world.ITEM_DIAMANT):
|
||||
if self.isAktuellerRaum(self.world.RAUM_MAUER):
|
||||
self.world.printText('graböffnung')
|
||||
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GRAB
|
||||
else:
|
||||
self.setFehler('Nichts passiert.')
|
||||
|
||||
|
||||
|
||||
def baueBruecke(self):
|
||||
@@ -180,6 +190,11 @@ class ActionModul(ActionBasics):
|
||||
if self.isAktuellerRaum(self.world.RAUM_TUNNEL):
|
||||
self.world.printText(f'raum-{self.world.RAUM_TUNNEL}')
|
||||
self.world.aktuellerRaum.ausgaenge[self.world.OST] = self.world.RAUM_HAFEN
|
||||
elif self.isAktuellerRaum(self.world.RAUM_KOPF):
|
||||
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
|
||||
|
||||
self.macheItemSichtbar(diamant)
|
||||
|
||||
|
||||
def untersuchePerson(self,person):
|
||||
|
||||
@@ -260,7 +275,6 @@ class ActionModul(ActionBasics):
|
||||
logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}')
|
||||
if parsedCommand.gegenstand == None:
|
||||
self.untersucheAktuellenRaum(parsedCommand)
|
||||
|
||||
return
|
||||
|
||||
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
|
||||
@@ -269,6 +283,7 @@ class ActionModul(ActionBasics):
|
||||
return
|
||||
|
||||
if item != None:
|
||||
logging.debug(f'item.id = {item.id}')
|
||||
if item.id == self.world.ITEM_PFLANZE:
|
||||
krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
|
||||
logging.debug(f'mache Gegenstand {krug.name} sichtbar')
|
||||
@@ -300,6 +315,16 @@ class ActionModul(ActionBasics):
|
||||
self.ausDemInventar(item)
|
||||
elif self.isItem(item,self.world.ITEM_KARTE):
|
||||
self.world.printKarte()
|
||||
elif self.isItem(item, self.world.ITEM_KOPF):
|
||||
self.zeigeItemBeschreibung(item)
|
||||
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
|
||||
|
||||
self.macheItemSichtbar(diamant)
|
||||
elif self.isItem(item, self.world.ITEM_MAUER):
|
||||
self.setFehler('In der Mauer wird ein Sockel sichtbar.')
|
||||
|
||||
sockel = self.world.findItemById(self.world.ITEM_SOCKEL)
|
||||
self.macheItemSichtbar(sockel)
|
||||
else:
|
||||
self.zeigeItemBeschreibung(item)
|
||||
|
||||
@@ -411,9 +436,10 @@ class ActionModul(ActionBasics):
|
||||
|
||||
|
||||
def nimm(self,parsedCommand):
|
||||
logging.debug(f'start nimm() {parsedCommand.gegenstand}')
|
||||
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
|
||||
logging.debug(f'nimm(): item == {item}')
|
||||
logging.debug(f'nimm(): item == {item.name}')
|
||||
if item != None:
|
||||
if item.imobil:
|
||||
text = self.world.msg[item.pickupmsg]
|
||||
@@ -454,6 +480,19 @@ class ActionModul(ActionBasics):
|
||||
|
||||
|
||||
|
||||
def spring(self,parsedCommand):
|
||||
if self.isAktuellerRaum(self.world.RAUM_KLIPPE):
|
||||
weste = self.world.findItemImInventarById(self.world.ITEM_SCHWIMMWESTE)
|
||||
|
||||
logging.debug(f'weste={weste.zustand}')
|
||||
if weste != None and weste.zustand == weste.ANGEZOGEN:
|
||||
imwasser = self.world.findRaumById(self.world.RAUM_WASSER)
|
||||
|
||||
self.wechsleRaum(imwasser)
|
||||
else:
|
||||
self.setFehler('Das Wasser ist viel zu tief, du würdest ertrinken.')
|
||||
|
||||
|
||||
def sprich(self,parsedCommand):
|
||||
person = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
|
||||
|
||||
@@ -549,11 +588,14 @@ class ActionModul(ActionBasics):
|
||||
|
||||
|
||||
def entzuende(self,parsedCommand):
|
||||
logging.debug(f'entzünde {parsedCommand.gegenstand}')
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das besitzt du nicht.')
|
||||
return
|
||||
|
||||
logging.debug(f'item={item}')
|
||||
if self.isItem(item, self.world.ITEM_FACKEL):
|
||||
self.toggleFackel(item)
|
||||
|
||||
|
103
TestModule.py
103
TestModule.py
@@ -44,7 +44,6 @@ class TestModule:
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
|
||||
# In den Keller
|
||||
self.ac.runter()
|
||||
self.schrittzaehler += 1
|
||||
@@ -147,9 +146,7 @@ class TestModule:
|
||||
self.testTeich()
|
||||
logging.debug('===== Beginn Testmodul Stier =====')
|
||||
|
||||
pcmd = self.parseInput('nimm Fisch')
|
||||
self.ac.nimm(pcmd)
|
||||
|
||||
|
||||
# zum Bach
|
||||
self.ac.west()
|
||||
self.schrittzaehler += 1
|
||||
@@ -358,3 +355,101 @@ class TestModule:
|
||||
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testKlippe(self):
|
||||
self.testInsel()
|
||||
logging.debug('===== Beginn Testmodul Klippe =====')
|
||||
|
||||
pcmd = self.parseInput('entzünde Fackel')
|
||||
self.ac.entzuende(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Loch
|
||||
self.ac.runter()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Schwimmweste')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Insel
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Palme
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Insel
|
||||
self.ac.runter()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Beiboot
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
#Boot
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#klippe
|
||||
self.ac.nord()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('benutze Schwimmweste')
|
||||
self.ac.benutze(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Wasser
|
||||
|
||||
pcmd = self.parseInput('spring')
|
||||
self.ac.spring(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
def testStatue(self):
|
||||
self.testKlippe()
|
||||
|
||||
#Strand
|
||||
self.ac.sued()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Wald
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Statue
|
||||
self.ac.nord()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Kopf
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('untersuche Kopf')
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Diamant')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Statue
|
||||
self.ac.runter()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testMauer(self):
|
||||
self.testStatue()
|
||||
|
||||
# Mauer
|
||||
self.ac.ost()
|
||||
|
||||
pcmd = self.parseInput('untersuche Mauer')
|
||||
self.ac.untersuche(pcmd)
|
||||
|
||||
pcmd = self.parseInput('benutze Diamant')
|
||||
self.ac.benutze(pcmd)
|
||||
|
||||
#Grab
|
||||
self.ac.sued()
|
||||
|
||||
|
13
World.py
13
World.py
@@ -99,7 +99,9 @@ class World:
|
||||
|
||||
def fortschritt(self):
|
||||
anz_raeume, anz_entdeckt = self.zaehleRaeume()
|
||||
return round((anz_entdeckt/anz_raeume) *100,2)
|
||||
progress = round((anz_entdeckt/anz_raeume) *100,2)
|
||||
logging.debug(f'anz_raeume={anz_raeume}, entdeckt={anz_entdeckt}, progress={progress}')
|
||||
return progress
|
||||
|
||||
def printRaum(self):
|
||||
raum = self.aktuellerRaum
|
||||
@@ -169,6 +171,7 @@ class World:
|
||||
return raum
|
||||
return None
|
||||
|
||||
|
||||
def sucheRaumName(self,name):
|
||||
if name == None:
|
||||
return self.aktuellerRaum
|
||||
@@ -214,6 +217,7 @@ class World:
|
||||
logging.debug(f'item.raumid={item.raumid}')
|
||||
logging.debug(f'findItemInAktuellerRaum() {itemname} - {item.name}')
|
||||
if item.raumid == raum.id and item.name.lower() == itemname.lower():
|
||||
logging.debug(f'return {item.name}')
|
||||
return item
|
||||
|
||||
logging.debug(f'Item {itemname} nicht im aktuellen Raum gefunden')
|
||||
@@ -403,10 +407,13 @@ class World:
|
||||
self.ITEM_SCHWIMMWESTE = '30'
|
||||
self.ITEM_KABINE = '31'
|
||||
self.ITEM_BEIBOOT = '32'
|
||||
self.ITEM_DIAMANT = '33'
|
||||
self.ITEM_DIAMANT = '38'
|
||||
self.ITEM_SOCKEL = '34'
|
||||
self.ITEM_PALME = '40'
|
||||
self.ITEM_LOCH = '41'
|
||||
self.ITEM_SOCKEL = '41'
|
||||
self.ITEM_KOPF = '42'
|
||||
self.ITEM_MAUER = '43'
|
||||
self.ITEM_LOCH = '44'
|
||||
|
||||
# Räume
|
||||
|
||||
|
@@ -123,6 +123,9 @@ class WorldParser():
|
||||
gegenstand.pickupmsg = msgid
|
||||
# logging.debug('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg)
|
||||
|
||||
if id in self.world.gegenstaende:
|
||||
raise ValueError(f'dopplete Item-Id {id}')
|
||||
|
||||
self.world.gegenstaende[id] = gegenstand
|
||||
|
||||
# Personen
|
||||
|
@@ -83,6 +83,8 @@ class Gegenstand(SuperNode):
|
||||
self.HAENGEND = 0
|
||||
self.GELOESCHT = 0
|
||||
self.ENTZUENDED = 1
|
||||
self.ANGEZOGEN = 1
|
||||
|
||||
self.zustand = self.GESCHLOSSEN
|
||||
|
||||
class Adjektiv(SuperNode):
|
||||
|
Binary file not shown.
Binary file not shown.
19
tomb.py
19
tomb.py
@@ -74,6 +74,8 @@ def verarbeiteBefehl(parsedCommand):
|
||||
actionmodul.entzuende(parsedCommand)
|
||||
elif id == '31':
|
||||
actionmodul.loesche(parsedCommand)
|
||||
elif id == '32':
|
||||
actionmodul.spring(parsedCommand)
|
||||
elif id == '-1':
|
||||
world.fehler = 'Ich verstehe diesen Befehl nicht'
|
||||
else:
|
||||
@@ -126,6 +128,8 @@ def inputLoop(stdscr):
|
||||
commandid = '0'
|
||||
elif debugcommand[1] == 'weg':
|
||||
logging.debug(f'gelaufener Weg: {world.weg}')
|
||||
elif debugcommand[1] == 'unvisited':
|
||||
debug_NonVisited()
|
||||
|
||||
elif command.startswith('auto:'):
|
||||
command = command.rstrip()
|
||||
@@ -152,6 +156,12 @@ def inputLoop(stdscr):
|
||||
testmodul.testHafen()
|
||||
elif debugcommand[1] == 'insel':
|
||||
testmodul.testInsel()
|
||||
elif debugcommand[1] == 'klippe':
|
||||
testmodul.testKlippe()
|
||||
elif debugcommand[1] == 'statue':
|
||||
testmodul.testStatue()
|
||||
elif debugcommand[1] == 'mauer':
|
||||
testmodul.testMauer()
|
||||
|
||||
|
||||
world.fehler = ''
|
||||
@@ -164,6 +174,15 @@ def inputLoop(stdscr):
|
||||
verarbeiteBefehl(parsedCommand)
|
||||
actionmodul.raumaction()
|
||||
|
||||
def debug_NonVisited():
|
||||
logging.debug('nicht entdeckte Räume:')
|
||||
|
||||
for raumid in world.raumliste:
|
||||
raum = world.raumliste[raumid]
|
||||
|
||||
if not raum.entdeckt:
|
||||
logging.debug(f'{raum.id} - {raum.name}')
|
||||
|
||||
def debug_Personen():
|
||||
logging.debug('Personen im aktuellen Raum')
|
||||
|
||||
|
46
world.xml
46
world.xml
@@ -191,6 +191,7 @@
|
||||
<raum id='30' name='Insel'>
|
||||
<ausgang dir='Ost' nachRaum= '28' />
|
||||
<ausgang dir='Runter' nachRaum= '31' />
|
||||
<ausgang dir='Rauf' nachRaum= '41' />
|
||||
|
||||
<beschreibung>
|
||||
Auf der Insel wächst eine einzelne Palme. In Sand hat jemand ein großes Loch gegraben.
|
||||
@@ -209,13 +210,13 @@
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='33' name='Klippe'>
|
||||
<ausgang dir='Süd' nachRaum= '32' />
|
||||
<ausgang dir='Sued' nachRaum= '32' />
|
||||
<beschreibung>
|
||||
Das Boot liegt vor einer Klippe. Neben dieser ist ein Kiesstrand zu erkennen.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='34' name='Im Wasser'>
|
||||
<ausgang dir='Süd' nachRaum= '26' />
|
||||
<ausgang dir='Sued' nachRaum= '35' />
|
||||
<beschreibung>
|
||||
Du treibst im Wasser. Glücklicherweise hast du deine Rettungsweste an.
|
||||
</beschreibung>
|
||||
@@ -227,35 +228,46 @@
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='36' name='Wald'>
|
||||
<ausgang dir='West' nachRaum= '37' />
|
||||
<ausgang dir='West' nachRaum= '35' />
|
||||
<ausgang dir='Nord' nachRaum= '37' />
|
||||
<beschreibung>
|
||||
Ein alter, dichter Laubwald.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='37' name='Statue'>
|
||||
<ausgang dir='Rauf' nachRaum= '38' />
|
||||
<ausgang dir='Ost' nachRaum= '40' />
|
||||
<ausgang dir='Ost' nachRaum= '39' />
|
||||
<ausgang dir='Sued' nachRaum= '36' />
|
||||
<beschreibung>
|
||||
Du stehst vor einer etwa 10m hohen Statue
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='38' name='Auf dem Kopf der Statue'>
|
||||
<ausgang dir='Rauf' nachRaum= '37' />
|
||||
<ausgang dir='Runter' nachRaum= '37' />
|
||||
<beschreibung>
|
||||
Nach einer kleinen Kletterpartie stehst du stehst auf dem Kopf der Statue.
|
||||
Nach einer kleinen Kletterpartie stehst du auf dem Kopf der Statue.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='39' name='Mauer'>
|
||||
<ausgang dir='Ost' nachRaum= '37' />
|
||||
<beschreibung>
|
||||
Du stehst vor einer Mauer.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='40' name='Grabkammer'>
|
||||
<ausgang dir='Nord' nachRaum= '38' />
|
||||
<ausgang dir='Nord' nachRaum= '39' />
|
||||
<beschreibung>
|
||||
Das Grab des Azteken. Du bist am Ziel.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='41' name='Palme'>
|
||||
<ausgang dir='Runter' nachRaum= '30' />
|
||||
<beschreibung>
|
||||
Du stehst in der Krone der Palme. Du hast einen weiten, aber völlig uninformativen Ausblick.
|
||||
Aber, du fühlst dich wie der König der Welt.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
|
||||
</ebene>
|
||||
|
||||
<commandset>
|
||||
@@ -301,6 +313,7 @@
|
||||
<command name='gib' id='39' key='29' />
|
||||
<command name='entzünde' id='40' key='30' />
|
||||
<command name='lösche' id='41' key='31' />
|
||||
<command name='spring' id='42' key='32' />
|
||||
|
||||
|
||||
</commandset>
|
||||
@@ -361,7 +374,10 @@
|
||||
<item name='Diamant' id='38' display='' raum='38' imobil='false' adjektiv='0' msgid='3' visible='false' />
|
||||
<item name='Sockel' id='39' display='' raum='39' imobil='false' adjektiv='0' msgid='3' visible='false' />
|
||||
<item name='Palme' id='40' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
|
||||
<item name='Loch' id='41' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
|
||||
<item name='Sockel' id='41' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='false' />
|
||||
<item name='Mauer' id='43' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='true' />
|
||||
<item name='Kopf' id='42' display='' raum='38' imobil='true' adjektiv='0' msgid='12' visible='true' />
|
||||
<item name='Loch' id='44' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
|
||||
|
||||
</items>
|
||||
<personen>
|
||||
@@ -392,6 +408,9 @@
|
||||
<text id='2'>
|
||||
In einer Schreibtischschublade findest du einen Schlüssel.
|
||||
</text>
|
||||
<text id='item-4'>
|
||||
Audrey II
|
||||
</text>
|
||||
<text id='item-13'>
|
||||
Der Schlüssel schimmert etwas bläulich.
|
||||
</text>
|
||||
@@ -442,6 +461,13 @@
|
||||
| Club |
|
||||
----------
|
||||
</text>
|
||||
<text id='item-41'>
|
||||
Die Mauer wurde scheinbar vor ewigen Zeiten aus getrockneten Lehmziegel errichtet und die Fugen
|
||||
anschlißend mit Lehm verputzt.
|
||||
</text>
|
||||
<text id='item-42'>
|
||||
Der Kopf repräsentiert einen dir unbekannten Mann, der würdevoll über seine linke Schulter schaut.
|
||||
</text>
|
||||
<text id='raum-21'>
|
||||
Im Tunnel ist es zu dunkel, um etwas zu sehen. Aber du spürst einen leichten Wind, der von Osten durch den Tunnel weht.
|
||||
</text>
|
||||
@@ -483,5 +509,9 @@
|
||||
<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>
|
||||
<text id='graböffnung'>
|
||||
Also du den Diamant in den Sockel setzt, schiebt sich ein Teil der Mauer knirschend nach hinten und gibt einen Durchgang frei. Staubige Luft
|
||||
quillt dir entgegen.
|
||||
</text>
|
||||
</texte>
|
||||
</welt>
|
||||
|
Reference in New Issue
Block a user