Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ebdf22f6a6 | ||
![]() |
7bd3ecaba0 | ||
![]() |
0ff17aac13 | ||
![]() |
3b848ffb80 | ||
![]() |
53579c466b | ||
![]() |
6fb8fc6ecd | ||
![]() |
f10378162d | ||
![]() |
6905936fc3 | ||
![]() |
5efd052927 | ||
![]() |
278cb17675 | ||
![]() |
9fce43d330 |
@@ -5,6 +5,7 @@ class ActionBasics:
|
||||
|
||||
def __init__(self,world):
|
||||
self.world = world
|
||||
self.alleBootRaeume = [world.RAUM_BOOT, world.RAUM_BOOT2, world.RAUM_BOOT3]
|
||||
|
||||
def debug(self, method, text):
|
||||
logging.debug(f'ActionBasics: {text}')
|
||||
@@ -24,7 +25,40 @@ class ActionBasics:
|
||||
def clearFehler(self):
|
||||
self.world.fehler = ''
|
||||
|
||||
def wechsleBoot(self,raum):
|
||||
kabine = self.world.findItemById(self.world.ITEM_KABINE)
|
||||
raumkabine = self.world.findRaumById(self.world.RAUM_KABINE)
|
||||
beiboot = self.world.findItemById(self.world.ITEM_BEIBOOT)
|
||||
|
||||
if raum.id in self.alleBootRaeume:
|
||||
raumkabine.ausgaenge[self.world.RAUF] = raum.id
|
||||
self.moveItemVonRaumNachRaum(kabine,raum)
|
||||
self.moveItemVonRaumNachRaum(beiboot,raum)
|
||||
|
||||
def wechsleRaum(self,raum):
|
||||
logging.debug(f'wechsle in RaumId: {raum.id}')
|
||||
if raum.id in self.alleBootRaeume:
|
||||
logging.debug('wechsle nach anderen Bootraum')
|
||||
self.wechsleBoot(raum)
|
||||
elif raum.id == self.world.RAUM_BEIBOOT:
|
||||
beiboot = self.world.findRaumById(self.world.RAUM_BEIBOOT)
|
||||
logging.debug(f'Pfad: {self.world.weg}')
|
||||
bootraum = self.world.findRaumById(self.world.weg[-1])
|
||||
logging.debug(f'wechsle ins Beiboot bootraum.id= {bootraum.id}')
|
||||
if(bootraum.id in self.alleBootRaeume):
|
||||
beiboot.ausgaenge[self.world.RAUF] = bootraum.id
|
||||
else:
|
||||
if bootraum.id == self.world.RAUM_INSEL:
|
||||
beiboot.ausgaenge[self.world.RAUF] = self.world.RAUM_BOOT3
|
||||
else:
|
||||
beiboot.ausgaenge[self.world.RAUF] = '-1'
|
||||
logging.debug(f'Ausgang RAUF im Beiboot ist {beiboot.ausgaenge[self.world.RAUF]}')
|
||||
beiboot.ausgaenge[self.world.OST] = '-1'
|
||||
if self.world.weg[-1] == self.world.RAUM_BOOT2:
|
||||
beiboot.ausgaenge[self.world.OST] = self.world.RAUM_INSEL
|
||||
|
||||
|
||||
self.world.weg.append(raum.id)
|
||||
self.world.aktuellerRaum = raum
|
||||
raum.entdeckt = True
|
||||
|
||||
@@ -42,6 +76,15 @@ class ActionBasics:
|
||||
logging.debug(f'ins Inventar {item.name}')
|
||||
self.insInventar(item)
|
||||
|
||||
def moveItemVonRaumNachRaum(self,item, raum):
|
||||
if item.id in self.world.aktuellerRaum.items:
|
||||
logging.debug(f'entferne {item.name} aus Raum {self.world.aktuellerRaum.id}')
|
||||
del self.world.aktuellerRaum.items[item.id]
|
||||
logging.debug(f'bewege {item.name} nach {raum.id}')
|
||||
item.raumid = raum.id
|
||||
raum.items[item.id] = item
|
||||
|
||||
|
||||
def moveItemVonInventarNachRaum(self,item, nachRaumId):
|
||||
del self.world.inventar[item.id]
|
||||
logging.debug(f' Item {item.name} nach RaumId {nachRaumId}')
|
||||
|
100
ActionModul.py
100
ActionModul.py
@@ -42,7 +42,6 @@ class ActionModul(ActionBasics):
|
||||
else:
|
||||
self.setFehler('Das sehe ich hier nicht.')
|
||||
|
||||
|
||||
def vanishItem(self, item):
|
||||
|
||||
if item == None:
|
||||
@@ -108,6 +107,7 @@ class ActionModul(ActionBasics):
|
||||
logging.debug('Schachtel öffnen')
|
||||
item.zustand = item.OFFEN
|
||||
self.macheItemSichtbar(karte)
|
||||
self.vanishItem(item)
|
||||
|
||||
|
||||
|
||||
@@ -133,6 +133,10 @@ class ActionModul(ActionBasics):
|
||||
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.')
|
||||
|
||||
|
||||
|
||||
def baueBruecke(self):
|
||||
@@ -180,6 +184,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):
|
||||
|
||||
@@ -205,11 +214,16 @@ class ActionModul(ActionBasics):
|
||||
def leere(self, parsedCommand):
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das trägst du nicht bei dir.')
|
||||
return
|
||||
|
||||
if item.id == self.world.ITEM_KRUG:
|
||||
if self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
|
||||
if item.zustand == item.VOLL:
|
||||
ranke = self.world.findItemById(self.world.ITEM_BOHNENRANKE)
|
||||
fisch = self.world.findItemImInventarById(self.world.ITEM_FISCH)
|
||||
krug = self.world.findItemImInventarById(self.world.ITEM_KRUG)
|
||||
|
||||
logging.debug(f'Fisch ist {fisch}')
|
||||
|
||||
@@ -228,7 +242,8 @@ class ActionModul(ActionBasics):
|
||||
self.setFehler(meldung)
|
||||
if ranke.zustand == ranke.GROSS:
|
||||
self.world.aktuellerRaum.ausgaenge[self.world.RAUF] = self.world.RAUM_BOHNENRANKE
|
||||
self.setFehler('Die Bohnenranke reicht jetzt bis in die Wolken hinein.')
|
||||
self.setFehler('Die Bohnenranke reicht jetzt bis in die Wolken hinein.Der Krug löst sich auf')
|
||||
self.vanishItem(krug)
|
||||
else:
|
||||
self.setFehler('Der Krug ist leer')
|
||||
else:
|
||||
@@ -254,7 +269,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)
|
||||
@@ -263,6 +277,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')
|
||||
@@ -294,6 +309,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)
|
||||
|
||||
@@ -405,9 +430,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]
|
||||
@@ -448,6 +474,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)
|
||||
|
||||
@@ -468,11 +507,24 @@ class ActionModul(ActionBasics):
|
||||
if item == None:
|
||||
self.setFehler('Das gibts hier nicht.')
|
||||
return
|
||||
logging.debug(f'ItemId: {item.id}')
|
||||
if self.isItemAndAktRaum(item, self.world.ITEM_LEITER, self.world.RAUM_ESSZIMMER):
|
||||
self.rauf()
|
||||
elif self.isItemAndAktRaum(item, self.world.ITEM_BOOT, self.world.RAUM_HAFEN):
|
||||
boot = self.world.sucheRaum(self.world.RAUM_BOOT)
|
||||
self.wechsleRaum(boot)
|
||||
elif self.isItemAndAktRaum(item, self.world.ITEM_LOCH, self.world.RAUM_INSEL):
|
||||
self.runter()
|
||||
elif self.isItem(item,self.world.ITEM_KABINE):
|
||||
logging.debug(f'gehe in Kabine')
|
||||
raumid = self.world.aktuellerRaum.id
|
||||
kabine = self.world.sucheRaum(self.world.RAUM_KABINE)
|
||||
kabine.ausgaenge[self.world.RAUF] = raumid
|
||||
self.wechsleRaum(kabine)
|
||||
elif self.isItem(item, self.world.ITEM_BEIBOOT):
|
||||
beiboot = self.world.findRaumById(self.world.RAUM_BEIBOOT)
|
||||
self.wechsleRaum(beiboot)
|
||||
|
||||
else:
|
||||
self.setFehler('Das gibt\'s hier nicht.')
|
||||
|
||||
@@ -510,6 +562,46 @@ class ActionModul(ActionBasics):
|
||||
self.setFehler('Der Zwerg zieht sich die Jacke an, lächelt dankbar und verschwindet.')
|
||||
del self.world.aktuellerRaum.personen[zwerg.id]
|
||||
self.macheItemSichtbar(schachtel)
|
||||
self.vanishItem(item)
|
||||
|
||||
def toggleFackel(self,item):
|
||||
weste = self.world.findItemById(self.world.ITEM_SCHWIMMWESTE)
|
||||
|
||||
if item.zustand == item.GELOESCHT:
|
||||
|
||||
item.zustand = item.ENTZUENDED
|
||||
weste.sichtbar = True
|
||||
self.setFehler('Die Fackel brennt jetzt.')
|
||||
|
||||
else:
|
||||
item.zustand = item.GELOESCHT
|
||||
if self.world.findItemImInventarById(self.world.ITEM_SCHWIMMWESTE) != None:
|
||||
weste.sichtbar = False
|
||||
self.setFehler('Du löscht die Fackel.')
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
def loesche(self,parsedCommand):
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das besitzt du nicht.')
|
||||
|
||||
if self.isItem(item, self.world.ITEM_FACKEL):
|
||||
self.toggleFackel(item)
|
||||
|
||||
|
||||
|
||||
def geheNach(self,richtung):
|
||||
|
127
TestModule.py
127
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
|
||||
@@ -101,6 +100,8 @@ class TestModule:
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Krug')
|
||||
|
||||
logging.debug(f'Inventar nach nimm Krug {self.world.inventar}')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('öffne Haustür')
|
||||
@@ -145,8 +146,6 @@ class TestModule:
|
||||
self.testTeich()
|
||||
logging.debug('===== Beginn Testmodul Stier =====')
|
||||
|
||||
pcmd = self.parseInput('nimm Fisch')
|
||||
self.ac.nimm(pcmd)
|
||||
|
||||
# zum Bach
|
||||
self.ac.west()
|
||||
@@ -322,20 +321,116 @@ class TestModule:
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testInsel(self):
|
||||
self.testHafen()
|
||||
|
||||
#Boot
|
||||
pcmd = self.parseInput('gehe Boot')
|
||||
self.ac.gehe(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Kabine
|
||||
pcmd = self.parseInput('gehe Kabine')
|
||||
self.ac.gehe(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Fackel')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Boot
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# vor Insel
|
||||
self.ac.sued()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Beiboot
|
||||
pcmd = self.parseInput('gehe Beiboot')
|
||||
self.ac.gehe(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Insel
|
||||
|
||||
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
|
||||
# return
|
||||
|
||||
#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()
|
||||
|
||||
|
42
World.py
42
World.py
@@ -103,13 +103,24 @@ class World:
|
||||
|
||||
def printRaum(self):
|
||||
raum = self.aktuellerRaum
|
||||
beschreibung = self.aktuellerRaum.beschreibung
|
||||
|
||||
if self.aktuellerRaum.id == self.RAUM_LOCH:
|
||||
fackel = self.findItemImInventarById(self.ITEM_FACKEL)
|
||||
logging.debug(f'fackel={fackel}')
|
||||
if fackel != None:
|
||||
textid=f'raum-{self.RAUM_LOCH}-{fackel.zustand}'
|
||||
beschreibung = self.texte[textid].name
|
||||
|
||||
self.clearScreen()
|
||||
|
||||
if self.fehler != None and self.fehler != '':
|
||||
self.stdscr.addstr(self.fehler,curses.color_pair(1))
|
||||
|
||||
|
||||
|
||||
self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3))
|
||||
self.stdscr.addstr(4,0,raum.beschreibung)
|
||||
self.stdscr.addstr(4,0,beschreibung)
|
||||
self.stdscr.addstr(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2))
|
||||
self.stdscr.addstr(8,0,'Inventar: '+ str(self.labelsInventar()), curses.color_pair(2))
|
||||
self.stdscr.addstr(9,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2))
|
||||
@@ -158,6 +169,7 @@ class World:
|
||||
return raum
|
||||
return None
|
||||
|
||||
|
||||
def sucheRaumName(self,name):
|
||||
if name == None:
|
||||
return self.aktuellerRaum
|
||||
@@ -203,6 +215,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')
|
||||
@@ -321,6 +334,8 @@ class World:
|
||||
|
||||
return count, entdeckt
|
||||
|
||||
def findPrevRaumId(self):
|
||||
return self.weg[-1]
|
||||
|
||||
def debug_Items(self):
|
||||
logging.debug('liste Items')
|
||||
@@ -348,6 +363,8 @@ class World:
|
||||
self.objekte = {}
|
||||
self.sortouts = []
|
||||
self.texte = {}
|
||||
self.weg = []
|
||||
self.vorraum = '-1'
|
||||
self.aktuellerRaum = None
|
||||
self.parsedCommand = None
|
||||
self.NOEXIT = '-1'
|
||||
@@ -388,6 +405,13 @@ class World:
|
||||
self.ITEM_SCHWIMMWESTE = '30'
|
||||
self.ITEM_KABINE = '31'
|
||||
self.ITEM_BEIBOOT = '32'
|
||||
self.ITEM_DIAMANT = '38'
|
||||
self.ITEM_SOCKEL = '34'
|
||||
self.ITEM_PALME = '40'
|
||||
self.ITEM_SOCKEL = '41'
|
||||
self.ITEM_KOPF = '42'
|
||||
self.ITEM_MAUER = '43'
|
||||
self.ITEM_LOCH = '44'
|
||||
|
||||
# Räume
|
||||
|
||||
@@ -419,7 +443,21 @@ class World:
|
||||
self.RAUM_BOOT = '25'
|
||||
self.RAUM_KABINE = '26'
|
||||
self.RAUM_BOOT2 = '27'
|
||||
self.RAUM_INSEL = '28'
|
||||
self.RAUM_BEIBOOT = '28'
|
||||
self.RAUM_INSEL = '30'
|
||||
self.RAUM_LOCH = '31'
|
||||
self.RAUM_BOOT3 = '32'
|
||||
self.RAUM_KLIPPE = '33'
|
||||
self.RAUM_WASSER = '34'
|
||||
self.RAUM_STRAND = '35'
|
||||
self.RAUM_WALD = '36'
|
||||
self.RAUM_STATUE = '37'
|
||||
self.RAUM_KOPF = '38'
|
||||
self.RAUM_MAUER = '41'
|
||||
self.RAUM_GRAB = '40'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -26,6 +26,8 @@ class WorldParser():
|
||||
id = item.attrib['id']
|
||||
name = item.attrib['name']
|
||||
beschreibung = ''
|
||||
if id in self.world.raumliste:
|
||||
raise ValueError(f'doppelte RaumId {id}')
|
||||
# Beschreibung
|
||||
for text in item.iter():
|
||||
if text != None and text.text != None:
|
||||
@@ -55,8 +57,6 @@ class WorldParser():
|
||||
|
||||
self.world.raumliste[id] = raum
|
||||
startr = root.find('startraum')
|
||||
print(startr)
|
||||
print(startr.attrib['id'])
|
||||
startraum = self.world.sucheRaum(startr.attrib['id'])
|
||||
self.world.aktuellerRaum = startraum
|
||||
print('Startraum gefunden.')
|
||||
@@ -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
|
||||
|
@@ -16,6 +16,7 @@ class Raum(SuperNode):
|
||||
self.beschreibung=beschreibung
|
||||
self.pickupmsg = ''
|
||||
self.entdeckt = False
|
||||
self.vorraum = '-1'
|
||||
self.ausgaenge = {
|
||||
'0': '-1', # Nord
|
||||
'1': '-1', # West
|
||||
@@ -80,6 +81,10 @@ class Gegenstand(SuperNode):
|
||||
self.LEER = 0
|
||||
self.VOLL = 1
|
||||
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.
35
map.txt
35
map.txt
@@ -34,22 +34,27 @@
|
||||
|
|
||||
|
|
||||
V
|
||||
Pfad<--> Pfad
|
||||
^
|
||||
|
|
||||
|
|
||||
V
|
||||
Tal<---> Tunnel <--->Hafen<-->Boot
|
||||
^ ^ \
|
||||
| | Kabine
|
||||
| | /
|
||||
V V /
|
||||
Baum <--> Baumhaus Boot
|
||||
^
|
||||
|
|
||||
V
|
||||
Pfad<--> Pfad Kopf
|
||||
^ ^
|
||||
| |
|
||||
| |
|
||||
V V
|
||||
Tal<---> Tunnel <--->Hafen<-->Boot Statue<-------------->Mauer
|
||||
^ ^ \ ^ ^
|
||||
| | Kabine | |
|
||||
Boot2 | | |
|
||||
| | / \ | |
|
||||
V V / \ V V
|
||||
Baum <--> Baumhaus Klippe<-->Strand<--> Wald Grabkammer
|
||||
| |
|
||||
| Boot3
|
||||
V /
|
||||
Beiboot<--> Insel
|
||||
|
||||
^
|
||||
|
|
||||
|
|
||||
V
|
||||
Loch
|
||||
|
||||
|
||||
|
||||
|
19
tomb.py
19
tomb.py
@@ -70,6 +70,12 @@ def verarbeiteBefehl(parsedCommand):
|
||||
actionmodul.wirf(parsedCommand)
|
||||
elif id == '29':
|
||||
actionmodul.gib(parsedCommand)
|
||||
elif id == '30':
|
||||
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:
|
||||
@@ -120,6 +126,8 @@ def inputLoop(stdscr):
|
||||
elif debugcommand[1] == 'karte':
|
||||
world.printKarte()
|
||||
commandid = '0'
|
||||
elif debugcommand[1] == 'weg':
|
||||
logging.debug(f'gelaufener Weg: {world.weg}')
|
||||
|
||||
elif command.startswith('auto:'):
|
||||
command = command.rstrip()
|
||||
@@ -144,6 +152,13 @@ def inputLoop(stdscr):
|
||||
|
||||
elif debugcommand[1] == 'hafen':
|
||||
testmodul.testHafen()
|
||||
elif debugcommand[1] == 'insel':
|
||||
testmodul.testInsel()
|
||||
elif debugcommand[1] == 'klippe':
|
||||
testmodul.testKlippe()
|
||||
elif debugcommand[1] == 'statue':
|
||||
testmodul.testStatue()
|
||||
|
||||
|
||||
world.fehler = ''
|
||||
|
||||
@@ -164,14 +179,14 @@ def debug_Personen():
|
||||
logging.debug(f'Id: {person.id} - Name: {person.name}')
|
||||
|
||||
def debug_Items():
|
||||
logging.debug('liste Items')
|
||||
logging.debug('liste Items im aktuellen Raum')
|
||||
logging.debug(world.aktuellerRaum.items)
|
||||
count = 0
|
||||
for itemid in world.aktuellerRaum.items:
|
||||
item = world.aktuellerRaum.items[itemid]
|
||||
logging.debug(f'count= {count}')
|
||||
# logging.debug(f'Itemtyp: {type(item)}')
|
||||
logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')
|
||||
logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name} - sichtbar= {item.sichtbar}')
|
||||
count = count +1
|
||||
|
||||
def debug_Inventar():
|
||||
|
132
world.xml
132
world.xml
@@ -165,23 +165,108 @@
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='25' name='Boot'>
|
||||
<ausgang dir='Süd' nachRaum= '26' />
|
||||
<ausgang dir='Sued' nachRaum= '27' />
|
||||
<ausgang dir='runter' nachRaum='26' />
|
||||
<beschreibung>
|
||||
Du stehst an Deck des Segelboots
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='26' name='Kabine'>
|
||||
<ausgang dir='Süd' nachRaum= '26' />
|
||||
<ausgang dir='Rauf' nachRaum= '25' />
|
||||
<beschreibung>
|
||||
In der Kabine ist die Luft etwas abgestanden. Zum Glück steht die Luke offen, um frische Luft hineinzulassen.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='27' name='Boot'>
|
||||
<ausgang dir='Süd' nachRaum= '26' />
|
||||
<ausgang dir='Nord' nachRaum= '33' />
|
||||
<beschreibung>
|
||||
Du stehst an Deck des Segelboots. Vor dem Bug liegt eine kleine Insel.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='28' name='Beiboot'>
|
||||
<beschreibung>
|
||||
Das Beiboot ist geeignet, in seichterem Wasser weiterzufahren. Links und rechts ist jeweils ein Ruder angebracht.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<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.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='31' name='Loch'>
|
||||
<ausgang dir='Rauf' nachRaum= '30' />
|
||||
<beschreibung>
|
||||
Im Loch.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='32' name='Boot'>
|
||||
<ausgang dir='Nord' nachRaum= '33' />
|
||||
<beschreibung>
|
||||
Du stehst an Deck des Segelboots. Vor dem Bug liegt eine kleine Insel.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='33' name='Klippe'>
|
||||
<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='Sued' nachRaum= '35' />
|
||||
<beschreibung>
|
||||
Du treibst im Wasser. Glücklicherweise hast du deine Rettungsweste an.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='35' name='Strand'>
|
||||
<ausgang dir='Ost' nachRaum= '36' />
|
||||
<beschreibung>
|
||||
Das Strand ist mit unzähligen Kieselsteinen übersäht. Im Osten sind Baumwipfel eines Waldes zu erkennen.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='36' name='Wald'>
|
||||
<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= '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='Runter' nachRaum= '37' />
|
||||
<beschreibung>
|
||||
Nach einer kleinen Kletterpartie stehst du auf dem Kopf der Statue.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='39' name='Mauer'>
|
||||
<beschreibung>
|
||||
Du stehst vor einer Mauer.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='40' name='Grabkammer'>
|
||||
<ausgang dir='Nord' nachRaum= '38' />
|
||||
<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>
|
||||
@@ -225,6 +310,9 @@
|
||||
<command name='fülle' id='37' key='27' />
|
||||
<command name='wirf' id='38' key='28' />
|
||||
<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>
|
||||
@@ -278,9 +366,17 @@
|
||||
<item name='Karte' id='27' display='' raum='24' imobil='false' adjektiv = '0' msgid='11' visible='false' />
|
||||
<item name='Boot' id='28' display='' raum='23' imobil='true' adjektiv = '0' msgid='12' visible='true' />
|
||||
<item name='Fackel' id='29' display='' raum='26' imobil='false' adjektiv = '0' msgid='11' visible='true' />
|
||||
<item name='Schwimmweste' id='30' display='' raum='26' imobil='false' adjektiv = '0' msgid='11' visible='true' />
|
||||
<item name='Kabine' id='31' display='' raum='25' imobil='false' adjektiv = '0' msgid='11' visible='false' />
|
||||
<item name='Beiboot' id='32' display='' raum='25' imobil='false' adjektiv = '0' msgid='12' visible='false' />
|
||||
<item name='Schwimmweste' id='30' display='' raum='31' imobil='false' adjektiv = '0' msgid='13' visible='false' />
|
||||
<item name='Kabine' id='31' display='' raum='25' imobil='true' adjektiv = '0' msgid='11' visible='true' />
|
||||
<item name='Beiboot' id='32' display='' raum='25' imobil='false' adjektiv = '0' msgid='12' visible='true' />
|
||||
<item name='Plakat' id='33' display='' raum='24' imobil='false' adjektiv='0' msgid='3' visible='true' />
|
||||
<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='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>
|
||||
@@ -301,6 +397,7 @@
|
||||
<pickup text='Der scheint wütend zu werden, wenn man ihm am Rüssel zieht.' id='9' />
|
||||
<pickup text='Das kannst du nicht tragen.' id='10' />
|
||||
<pickup text='Boote gehören ins Wasser.' id='12' />
|
||||
<pickup text='Die Kabine zu demontieren würde das Boot zerstören.' id='13' />
|
||||
</messages>
|
||||
<bewegungen>
|
||||
<bewegung id='0' value='' />
|
||||
@@ -310,6 +407,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>
|
||||
@@ -353,9 +453,29 @@
|
||||
Das Segelboot besitzt einen weißen Rumpf und ein schwarzes Dreieckssegel. Am Heck steht keine Name geschrieben, dafür ist eine schwarze Perle
|
||||
aufgemalt.
|
||||
</text>
|
||||
<text id='item-33'>
|
||||
---------
|
||||
| No |
|
||||
| Homers |
|
||||
| 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>
|
||||
<text id='raum-31-0'>
|
||||
In das Loch dringt kein Sonnenlicht, du siehst gar nichts.
|
||||
</text>
|
||||
<text id='raum-31-1'>
|
||||
Im Licht der Fackel erkennst du, dass das Loch sorgfältig gegraben und mit Schiffsplanken abgestützt wurde.
|
||||
</text>
|
||||
<text id='npc-6'>
|
||||
Der Zwerg klappert vor Kälte mit den Zähnen und kann nicht sprechen.
|
||||
</text>
|
||||
|
Reference in New Issue
Block a user