Compare commits
34 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b1b4a99dff | ||
![]() |
183fe11075 | ||
![]() |
4a0bfb901d | ||
![]() |
1b96299edc | ||
![]() |
740833541b | ||
![]() |
e1bf16aa96 | ||
![]() |
6876dab8df | ||
![]() |
a986d14fbc | ||
![]() |
2cb7358eca | ||
![]() |
0240e5f441 | ||
![]() |
8bd0897af1 | ||
![]() |
ebdf22f6a6 | ||
![]() |
7bd3ecaba0 | ||
![]() |
0ff17aac13 | ||
![]() |
3b848ffb80 | ||
![]() |
53579c466b | ||
![]() |
6fb8fc6ecd | ||
![]() |
f10378162d | ||
![]() |
6905936fc3 | ||
![]() |
5efd052927 | ||
![]() |
278cb17675 | ||
![]() |
9fce43d330 | ||
![]() |
8870050345 | ||
![]() |
b29774ec31 | ||
![]() |
25cc73ccf9 | ||
![]() |
9cfbf2e0aa | ||
![]() |
e004bfc17e | ||
![]() |
c634711b57 | ||
![]() |
33ee761f32 | ||
![]() |
1249bb74ec | ||
![]() |
6ae6f3efd8 | ||
![]() |
227271ad09 | ||
![]() |
fef412580a | ||
![]() |
c2aca6cf07 |
134
ActionBasics.py
Normal file
134
ActionBasics.py
Normal file
@@ -0,0 +1,134 @@
|
||||
import logging
|
||||
import inspect
|
||||
|
||||
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}')
|
||||
|
||||
def ausDemInventar(self,item):
|
||||
del self.world.inventar[item.id]
|
||||
self.world.aktuellerRaum.items[item.id] = item
|
||||
item.raumid = self.world.aktuellerRaum.id
|
||||
|
||||
def insInventar(self, item):
|
||||
logging.debug(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 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
|
||||
|
||||
def liegtItemInRaum(self,itemid, raum):
|
||||
return itemid in raum.items
|
||||
|
||||
def macheItemSichtbar(self, item):
|
||||
logging.debug(f'mache sichtbar {item.name} in Raum {item.raumid}')
|
||||
item.sichtbar = True
|
||||
|
||||
def moveItemVonRaumNachInventar(self,item):
|
||||
logging.debug(f'entferne aus aktuellen Raum {item.name}')
|
||||
if item.id in self.world.aktuellerRaum.items:
|
||||
del self.world.aktuellerRaum.items[item.id]
|
||||
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}')
|
||||
raum = self.world.findRaumById(nachRaumId)
|
||||
logging.debug(f' Item {item.name} liegt jetzt in Raum {raum.name}')
|
||||
logging.debug(f'{item.name} liegt im {raum.name}: {self.liegtItemInRaum(item.id, raum)}')
|
||||
logging.debug(f'{item.name} liegt im {self.world.aktuellerRaum.name}: {self.liegtItemInRaum(item.id, self.world.aktuellerRaum)}')
|
||||
raum.items[item.id] = item
|
||||
item.raumid = nachRaumId
|
||||
|
||||
def isItemAndAktRaum(self,item, itemid, raumid):
|
||||
isItem = self.isItem(item,itemid)
|
||||
isRaum = self.isAktuellerRaum(raumid)
|
||||
|
||||
logging.debug(f'isItem={isItem}, isRaum={isRaum}')
|
||||
return isItem and isRaum
|
||||
|
||||
def isItem(self, item, itemid):
|
||||
return item.id == itemid
|
||||
|
||||
def macheWegFrei(self, richtung, raumid):
|
||||
logging.debug(f'Richtung {richtung} führt jetzt zu RaumId {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]
|
||||
logging.debug(f'{itemid} -{item.id}')
|
||||
if item.id == itemid:
|
||||
return item
|
||||
return None
|
||||
|
||||
def personVonRaumNachRaum(self, person, vonRaumId, nachRaumId):
|
||||
logging.debug(f'person Von Raum {vonRaumId} nach {nachRaumId}')
|
||||
vonRaum = self.world.findRaumById(vonRaumId)
|
||||
nachRaum = self.world.findRaumById(nachRaumId)
|
||||
|
||||
if person.id in vonRaum.personen:
|
||||
del vonRaum.personen[person.id]
|
||||
|
||||
nachRaum.personen[person.id] = person
|
||||
person.raumid = nachRaumId
|
||||
|
||||
|
||||
|
421
ActionModul.py
421
ActionModul.py
@@ -1,6 +1,10 @@
|
||||
import logging
|
||||
# Actionmdul - hier werden die Kommandos ausgeführt und die Spielwelt entsprend aktualisiert.
|
||||
|
||||
class ActionModul:
|
||||
import logging
|
||||
from ActionBasics import ActionBasics
|
||||
import HilfeModul
|
||||
|
||||
class ActionModul(ActionBasics):
|
||||
|
||||
def isBlank(self,str):
|
||||
logging.debug(f'isBlank(): str=*{str}*')
|
||||
@@ -10,7 +14,9 @@ class ActionModul:
|
||||
|
||||
def __init__(self, world):
|
||||
|
||||
self.world = world
|
||||
super().__init__(world)
|
||||
self.hilfemodul = HilfeModul.HilfeModul(world)
|
||||
|
||||
|
||||
def warte(self):
|
||||
print('Du wartest')
|
||||
@@ -31,9 +37,21 @@ class ActionModul:
|
||||
if item != None:
|
||||
if item.id == self.world.ITEM_RANKGITTER:
|
||||
self.rauf()
|
||||
elif item.id == self.world.ITEM_BOHNENRANKE:
|
||||
if item.zustand == item.GROSS:
|
||||
self.rauf()
|
||||
else:
|
||||
self.setFehler('zum Klettern ist die Bohnenranke zu klein.')
|
||||
else:
|
||||
self.setFehler('Das sehe ich hier nicht.')
|
||||
|
||||
def vanishItem(self, item):
|
||||
|
||||
if item == None:
|
||||
return
|
||||
|
||||
item.sichtbar = False
|
||||
self.ausDemInventar(item)
|
||||
|
||||
def oeffne(self,parsedCommand):
|
||||
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand);
|
||||
@@ -46,10 +64,10 @@ class ActionModul:
|
||||
logging.debug('öffne Truhe')
|
||||
schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL)
|
||||
|
||||
self.vanishItem(schluessel)
|
||||
|
||||
if schluessel != None and item.zustand != item.OFFEN:
|
||||
item.zustand = item.OFFEN
|
||||
schluessel.sichtbar = False
|
||||
self.ausDemInventar(schluessel)
|
||||
seil = self.world.findItemById(self.world.ITEM_SEIL)
|
||||
seil.raumid = self.world.aktuellerRaum.id
|
||||
seil.sichtbar = True
|
||||
@@ -63,18 +81,41 @@ class ActionModul:
|
||||
self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.')
|
||||
|
||||
elif item.id == self.world.ITEM_HAUSTUER:
|
||||
if self.world.aktuellerRaum.id == self.world.RAUM_FLUR:
|
||||
if self.isAktuellerRaum(self.world.RAUM_FLUR):
|
||||
schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL)
|
||||
|
||||
logging.debug(f'öffne Haustür Schlüssel ist {schluessel}')
|
||||
if schluessel != None:
|
||||
item.zustand = item.OFFEN
|
||||
schluessel.sichtbar = False
|
||||
self.vanishItem(schluessel)
|
||||
self.setFehler('Die Haustür ist geöffnet,der Haustürschlüssel löst sich auf.')
|
||||
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN
|
||||
self.ausDemInventar(schluessel)
|
||||
else:
|
||||
self.setFehler('Die Tür ist verschlossen.')
|
||||
elif item.id == self.world.ITEM_GATTER:
|
||||
logging.debug('Gatter öffnen')
|
||||
if self.isAktuellerRaum(self.world.RAUM_WIESE):
|
||||
stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
|
||||
|
||||
logging.debug(f'Stier ist {stier}')
|
||||
|
||||
if stier == None:
|
||||
item.zustand = item.OFFEN
|
||||
self.macheWegFrei(self.world.SUED,self.world.RAUM_BRACHLAND)
|
||||
self.setFehler('Das Gatter steht offen.')
|
||||
else:
|
||||
self.setFehler(f'Der Stier steht dir im Weg.')
|
||||
elif item.id == self.world.ITEM_SCHACHTEL:
|
||||
karte = self.world.findItemById(self.world.ITEM_KARTE)
|
||||
logging.debug('Schachtel öffnen')
|
||||
item.zustand = item.OFFEN
|
||||
self.macheItemSichtbar(karte)
|
||||
self.vanishItem(item)
|
||||
elif item.id == self.world.ITEM_KUEHLSCHRANK:
|
||||
logging.debug('öffne Kühlschrank')
|
||||
self.world.printText('zuul')
|
||||
|
||||
|
||||
|
||||
def isAktuellerRaum(self, raumid):
|
||||
return self.world.aktuellerRaum.id == raumid
|
||||
@@ -82,29 +123,48 @@ class ActionModul:
|
||||
def benutze(self, parsedCommand):
|
||||
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand);
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das sehe ich hier nicht.')
|
||||
return
|
||||
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):
|
||||
geist = self.world.findPersonById(self.world.PERSON_GEIST)
|
||||
self.world.printText('graböffnung')
|
||||
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GRAB
|
||||
self.personVonRaumNachRaum(geist, geist.raum.id, self.world.RAUM_GRAB)
|
||||
self.world.printText('victory')
|
||||
# self.world.aktuellerRaum.personen[self.world.PERSON_GEIST] = geist
|
||||
self.ausDemInventar(item)
|
||||
elif self.isItem(item,self.world.ITEM_BOXSACK):
|
||||
self.schlage(parsedCommand)
|
||||
else:
|
||||
self.setFehler('Nichts passiert.')
|
||||
|
||||
def about(self):
|
||||
self.world.printAbout()
|
||||
|
||||
|
||||
|
||||
def baueBruecke(self):
|
||||
bach = self.world.sucheRaum(self.world.RAUM_BACH)
|
||||
bach.ausgaenge[self.world.OST] = self.world.RAUM_TEICH
|
||||
|
||||
def ausDemInventar(self,item):
|
||||
del self.world.inventar[item.id]
|
||||
self.world.aktuellerRaum.items[item.id] = item
|
||||
item.raumid = self.world.aktuellerRaum.id
|
||||
|
||||
def verliere(self,parsedCommand):
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand);
|
||||
@@ -122,11 +182,6 @@ class ActionModul:
|
||||
else:
|
||||
self.setFehler("Diesen Gegenstand besitzt du nicht.")
|
||||
|
||||
def setFehler(self,text):
|
||||
self.world.fehler =text
|
||||
|
||||
def clearFehler(self):
|
||||
self.world.fehler = ''
|
||||
|
||||
|
||||
def stelle(self,parsedCommand):
|
||||
@@ -148,7 +203,19 @@ class ActionModul:
|
||||
logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}')
|
||||
if self.isAktuellerRaum(raum.id):
|
||||
logging.debug(f'untersuche aktuellen Raum {raum.name}')
|
||||
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):
|
||||
|
||||
if person.id == self.world.PERSON_ZWERG:
|
||||
self.world.printText(f'npc-{person.id}-beschr')
|
||||
|
||||
def findeTruhenschluessel(self):
|
||||
schluessel = self.world.findItemById(self.world.ITEM_KLEINER_SCHLUESSEL)
|
||||
@@ -163,29 +230,80 @@ class ActionModul:
|
||||
def schlage(self, parsedCommand):
|
||||
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das sehe ich hier nicht.')
|
||||
return
|
||||
|
||||
if item.id == self.world.ITEM_BOXSACK:
|
||||
self.setFehler('Der Boxsack sagt: Hmm, hmm?')
|
||||
|
||||
def leere(self, parsedCommand):
|
||||
skip
|
||||
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}')
|
||||
|
||||
if fisch != None:
|
||||
logging.debug('Krug leeren löst den Fisch auf.')
|
||||
self.vanishItem(fisch)
|
||||
self.setFehler('Der Fisch löst sich auf.')
|
||||
|
||||
if ranke.zustand < ranke.GROSS:
|
||||
ranke.zustand = ranke.zustand +1
|
||||
meldung = 'Die Bohnenranke wächst.'
|
||||
|
||||
if fisch != None:
|
||||
meldung = meldung + ' Der Fisch löst sich auf.'
|
||||
|
||||
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.Der Krug löst sich auf')
|
||||
self.vanishItem(krug)
|
||||
else:
|
||||
self.setFehler('Der Krug ist leer')
|
||||
else:
|
||||
item.zustand = item.LEER
|
||||
|
||||
def fuelle(self, parsedCommand):
|
||||
skip
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
if item.id == self.world.ITEM_KRUG:
|
||||
if self.isAktuellerRaum(self.world.RAUM_TEICH):
|
||||
item.zustand = item.VOLL
|
||||
self.setFehler('Der Krug ist jetzt voll')
|
||||
|
||||
def zeigeItemBeschreibung(self,item):
|
||||
self.world.printText(f'item-{item.id}')
|
||||
textid = f'item-{item.id}'
|
||||
if item.id == self.world.ITEM_BOHNENRANKE:
|
||||
textid = f'item-{item.id}-{item.zustand}'
|
||||
else:
|
||||
textid = f'item-{item.id}'
|
||||
self.world.printText(textid)
|
||||
|
||||
def untersuche(self,parsedCommand):
|
||||
logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}')
|
||||
if parsedCommand.gegenstand == None:
|
||||
self.untersucheAktuellenRaum()
|
||||
|
||||
self.untersucheAktuellenRaum(parsedCommand)
|
||||
return
|
||||
|
||||
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
|
||||
if item == None:
|
||||
self.setFehler('Das sehe ich hier nicht')
|
||||
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')
|
||||
@@ -203,6 +321,7 @@ def fuelle(self, parsedCommand):
|
||||
elif item.id == self.world.ITEM_TEICH:
|
||||
fisch = self.world.findItemById(self.world.ITEM_FISCH)
|
||||
|
||||
|
||||
if fisch.raumid == self.world.RAUM_TEICH:
|
||||
fisch.sichtbar = True
|
||||
self.setFehler('Im Teich schwimmt ein kleiner Fisch')
|
||||
@@ -214,14 +333,24 @@ def fuelle(self, parsedCommand):
|
||||
self.zeigeItemBeschreibung(item)
|
||||
item.sichtbar = False
|
||||
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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
else:
|
||||
person = self.world.findPersonImAktuellenRaum(self.world.PERSON_ZWERG)
|
||||
|
||||
logging.debug('Kein Item gefunden, suche nach Raum')
|
||||
self.untersucheAktuellenRaum(parsedCommand)
|
||||
|
||||
@@ -229,35 +358,106 @@ def fuelle(self, parsedCommand):
|
||||
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
|
||||
if item != None:
|
||||
#alter Code!
|
||||
if item.id == 8:
|
||||
self.world.stdscr.addstr('Du ziehst den Hebel und es passiert.... nichts!')
|
||||
pass
|
||||
else:
|
||||
self.setFehler('Das sehe ich hier nicht.')
|
||||
|
||||
def fange(self, parsedCommand):
|
||||
skip
|
||||
|
||||
def klettere(self, parsedCommand):
|
||||
leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
def wirf(self,parsedCommand):
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
logging.debug(f'klettere(): Leiter is {leiter}')
|
||||
if leiter != None:
|
||||
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.macheWegFrei(self.world.RAUF,self.world.RAUM_BAUMHAUS)
|
||||
self.ausDemInventar(item)
|
||||
item.zustand = item.HAENGEND
|
||||
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')
|
||||
elif self.isItemAndAktRaum(item, self.world.ITEM_JACKE, self.world.RAUM_WIESE):
|
||||
logging.debug('Jackenwurf')
|
||||
stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
|
||||
jacke = self.world.findItemImInventarById(self.world.ITEM_JACKE)
|
||||
|
||||
logging.debug(f'Stier {stier},Jacke {jacke}')
|
||||
if stier != None:
|
||||
if jacke != None:
|
||||
self.world.printText('jackewurf')
|
||||
logging.debug(f'1:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
|
||||
self.personVonRaumNachRaum(stier,self.world.aktuellerRaum.id, self.world.RAUM_FELD)
|
||||
logging.debug(f'2:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
|
||||
self.moveItemVonInventarNachRaum(jacke, self.world.RAUM_FELD)
|
||||
logging.debug(f'3:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
|
||||
else:
|
||||
self.setFehler('Die trägst du nicht bei dir.')
|
||||
else:
|
||||
logging.debug(f'verliere Jacke (kein Stier)')
|
||||
self.verliere(parsedCommand)
|
||||
else:
|
||||
logging.debug(f'verliere Jacke (falscher Raum, nicht Jacke)')
|
||||
self.verliere(parsedCommand)
|
||||
|
||||
|
||||
|
||||
|
||||
def klettere(self, parsedCommand):
|
||||
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
geklettert = False
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das sehe ich hier nicht')
|
||||
return
|
||||
if item.id == self.world.ITEM_LEITER:
|
||||
if self.isAktuellerRaum(self.world.RAUM_ESSZIMMER):
|
||||
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
|
||||
self.rauf()
|
||||
else:
|
||||
self.setFehler('Eine Leiter sehe ich hier nicht.')
|
||||
geklettert = True
|
||||
elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
|
||||
ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE)
|
||||
|
||||
if ranke.zustand == Gegenstand.GROSS:
|
||||
self.ac.rauf()
|
||||
geklettert = True
|
||||
else:
|
||||
self.setFehler('Die Bohnenranke ist zu klein, um daran hoch zu klettern.')
|
||||
elif item.id == self.world.ITEM_SEIL:
|
||||
logging.debug(f'klettere am Seil: {item.zustand}')
|
||||
if item.zustand == item.HAENGEND:
|
||||
self.rauf()
|
||||
geklettert = True
|
||||
else:
|
||||
self.setFehler('So kannst nicht daran klettern.')
|
||||
|
||||
if not geklettert:
|
||||
self.setFehler('Klettern ist nicht möglich.')
|
||||
|
||||
|
||||
|
||||
def insInventar(self, item):
|
||||
logging.debug(f'neu ins Inventar: {item.name}')
|
||||
self.world.inventar[item.id] = item
|
||||
|
||||
|
||||
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]
|
||||
@@ -268,9 +468,6 @@ def fuelle(self, parsedCommand):
|
||||
text = self.world.msg[item.pickupmsg]
|
||||
self.setFehler(text)
|
||||
else:
|
||||
logging.debug(f'Item {item.name} aus aktuellem Raum entfernen')
|
||||
del self.world.aktuellerRaum.items[item.id]
|
||||
logging.debug(f'Item {item.name} ins Inventar')
|
||||
|
||||
aufnehmen = True
|
||||
|
||||
@@ -285,32 +482,74 @@ def fuelle(self, parsedCommand):
|
||||
krug = self.world.findItemImInventarById(self.world.ITEM_KRUG)
|
||||
|
||||
if krug != None:
|
||||
krug.zustand = krug.VOLL
|
||||
self.setFehler('Du schöpfst mit dem Krug und der Fisch ist drin.')
|
||||
else:
|
||||
self.setFehler('Der Fisch ist zu glitschig, um ihn mit der Hand zu fangen.')
|
||||
aufnehmen = False
|
||||
|
||||
if aufnehmen:
|
||||
self.insInventar(item)
|
||||
self.moveItemVonRaumNachInventar(item)
|
||||
|
||||
|
||||
|
||||
else:
|
||||
self.setFehler("diesen Gegenstand sehe ich hier nicht.")
|
||||
|
||||
|
||||
def sprich(self,parsedCommand):
|
||||
geist = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
|
||||
|
||||
if geist != None:
|
||||
self.world.printText('geist')
|
||||
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.')
|
||||
else:
|
||||
self.setFehler('Hieh-Hüpf')
|
||||
|
||||
|
||||
def sprich(self,parsedCommand):
|
||||
person = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
|
||||
|
||||
if person != None:
|
||||
self.world.printText(f'npc-{person.id}')
|
||||
else:
|
||||
self.setFehler(f'{parsedCommand.gegenstand} ist nicht im Raum.')
|
||||
|
||||
def hilfe(self,parsedCommand):
|
||||
if parsedCommand.gegenstand == 'befehle':
|
||||
self.world.printBefehle()
|
||||
self.hilfemodul.hilfe(parsedCommand.gegenstand)
|
||||
|
||||
def geheNachItem(self,parsedCommand):
|
||||
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
|
||||
|
||||
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.world.printText('hilfe')
|
||||
self.setFehler('Das gibt\'s hier nicht.')
|
||||
|
||||
def gehe(self,parsedCommand):
|
||||
richtung = parsedCommand.gegenstand.lower()
|
||||
@@ -320,16 +559,79 @@ def fuelle(self, parsedCommand):
|
||||
self.geheNach(richtung)
|
||||
elif richtung == 'süd':
|
||||
self.geheNach(richtung)
|
||||
if richtung == 'west':
|
||||
elif richtung == 'west':
|
||||
self.geheNach(richtung)
|
||||
if richtung == 'ost':
|
||||
elif richtung == 'ost':
|
||||
self.geheNach(richtung)
|
||||
if richtung == 'rauf':
|
||||
elif richtung == 'rauf':
|
||||
self.rauf()
|
||||
self.geheNach(richtung)
|
||||
elif richtung == 'runter':
|
||||
self.runter()
|
||||
else:
|
||||
self.geheNachItem(parsedCommand)
|
||||
|
||||
def gib(self, parsedCommand):
|
||||
item = self.world.findItemImInventar(parsedCommand.gegenstand)
|
||||
|
||||
if item == None:
|
||||
self.setFehler('Das besitzt du nicht')
|
||||
return
|
||||
|
||||
if item.id == self.world.ITEM_JACKE:
|
||||
zwerg = self.world.findPersonImAktuellenRaumById(self.world.PERSON_ZWERG)
|
||||
|
||||
logging.debug(f'gib() Zwerg {zwerg}')
|
||||
|
||||
if zwerg != None:
|
||||
schachtel = self.world.findItemById(self.world.ITEM_SCHACHTEL)
|
||||
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):
|
||||
logging.debug(f'geheNach() Richtung {richtung}')
|
||||
logging.debug(f'Richtung {richtung}')
|
||||
raum = self.world.aktuellerRaum
|
||||
|
||||
if raum.ausgaenge[richtung]:
|
||||
@@ -337,12 +639,13 @@ def fuelle(self, parsedCommand):
|
||||
logging.debug(f'gefundener Ausgang: {ausgang}')
|
||||
if ausgang != None:
|
||||
raum = self.world.sucheRaum(ausgang)
|
||||
|
||||
else:
|
||||
logging.warn('Keine AusgandId gefunde')
|
||||
self.setFehler("In diese Richtung gibt's keine Ausgang!")
|
||||
|
||||
if raum != None:
|
||||
self.world.aktuellerRaum = raum
|
||||
self.wechsleRaum(raum)
|
||||
else:
|
||||
logging.debug('Kein Raum zur AusgangId')
|
||||
self.setFehler("In diese Richtung gibt's keine Ausgang!")
|
||||
@@ -367,10 +670,6 @@ def fuelle(self, parsedCommand):
|
||||
def runter(self):
|
||||
self.geheNach(self.world.RUNTER)
|
||||
|
||||
def about(self):
|
||||
print("Tomb Version " + self.world.VERSION)
|
||||
self.world.waitForCR
|
||||
|
||||
def raumaction(self):
|
||||
raumid = self.world.aktuellerRaum.id
|
||||
|
||||
|
13
BewegungsModul.py
Normal file
13
BewegungsModul.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# Bewegungsmodul - Steuert die Bewegungen aller NPC.
|
||||
import logging
|
||||
|
||||
class BewegungsModul:
|
||||
|
||||
|
||||
def __init__(self, world):
|
||||
|
||||
self.world = world
|
||||
|
||||
|
||||
def bewegeNPCS(self):
|
||||
skip
|
9
ConfigError.py
Normal file
9
ConfigError.py
Normal file
@@ -0,0 +1,9 @@
|
||||
class ConfigError(Exception):
|
||||
def __init_(self,message):
|
||||
self.message = message
|
||||
super().__init(message)
|
||||
|
||||
def __str__(self):
|
||||
return self.message
|
||||
|
||||
|
29
FileReader.py
Normal file
29
FileReader.py
Normal file
@@ -0,0 +1,29 @@
|
||||
class FileReader() :
|
||||
|
||||
__zeilen__ = []
|
||||
__dateiname__ = ""
|
||||
def __init__(self,dateiname):
|
||||
self.__zeilen__ = []
|
||||
self.__dateiname__ = dateiname
|
||||
|
||||
|
||||
def lines(self):
|
||||
with open(self.__dateiname__,"r" ) as file:
|
||||
for zeile in file:
|
||||
self.__zeilen__.append(zeile.strip())
|
||||
return self.__zeilen__
|
||||
def __str__(self):
|
||||
return str(self.__zeilen__)
|
||||
|
||||
class CsvReader(FileReader):
|
||||
def __init__(self,dateiname):
|
||||
super().__init__(dateiname)
|
||||
|
||||
def lines(self):
|
||||
zeilen = super().lines()
|
||||
liste = []
|
||||
|
||||
return [zeile.split() for zeile in zeilen]
|
||||
# for zeile in zeilen:
|
||||
# liste.append(zeile.split(","))
|
||||
# return liste
|
77
HilfeModul.py
Normal file
77
HilfeModul.py
Normal file
@@ -0,0 +1,77 @@
|
||||
import logging
|
||||
import FileReader
|
||||
from os.path import exists
|
||||
|
||||
class HilfeModul():
|
||||
|
||||
def isBlank(self,str):
|
||||
if str != None and len(str.strip()) == 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
def __init__(self, world):
|
||||
|
||||
self.world = world
|
||||
|
||||
self.check()
|
||||
|
||||
def readTxt(self, datei):
|
||||
logging.debug(f'öffne Hilfedatei {datei}')
|
||||
reader = FileReader.FileReader(datei)
|
||||
|
||||
lines = reader.lines()
|
||||
reader = None
|
||||
# reader.close()
|
||||
|
||||
return lines
|
||||
|
||||
def check(self):
|
||||
|
||||
for id in self.world.befehle:
|
||||
befehl = self.world.befehle[id]
|
||||
|
||||
helptxt = self.baueHilfedatei(befehl.key)
|
||||
|
||||
logging.debug(f'suche Hilfedatei {helptxt}')
|
||||
if not exists(helptxt):
|
||||
logging.warn(f'Hilfedatei {helptxt} existiert nicht')
|
||||
|
||||
|
||||
def hilfe(self, command):
|
||||
generalHelp = True
|
||||
if not self.isBlank(command):
|
||||
helptxt = self.findHilfetext(command)
|
||||
|
||||
logging.debug(f'Hilfetext: {helptxt}')
|
||||
|
||||
if helptxt != None:
|
||||
lines = self.readTxt(helptxt)
|
||||
logging.debug(f'lines: {lines}')
|
||||
self.world.printHilfe(lines)
|
||||
generalHelp = False
|
||||
|
||||
if generalHelp:
|
||||
if command == 'befehle':
|
||||
self.world.printBefehle()
|
||||
else:
|
||||
self.world.printText('hilfe')
|
||||
|
||||
def baueHilfedatei(self, key):
|
||||
return f'ascii/hilfe/cmd-{key}.txt'
|
||||
def findHilfetext(self, command):
|
||||
|
||||
logging.debug(f'suche Hilfetext zu {command}')
|
||||
|
||||
for cmdid in range(0,len(self.world.befehle)):
|
||||
if str(cmdid) in self.world.befehle:
|
||||
befehl = self.world.befehle[str(cmdid)]
|
||||
|
||||
logging.debug(f'cmdid= {cmdid}')
|
||||
|
||||
logging.debug(f'vergleiche {befehl.name.lower()} mit {command.lower()}')
|
||||
|
||||
if befehl.name.lower() == command.lower():
|
||||
logging.debug(f'gefundener Befehl: {befehl.name}')
|
||||
return self.baueHilfedatei(befehl.key)
|
||||
|
||||
return None
|
380
TestModule.py
380
TestModule.py
@@ -1,3 +1,4 @@
|
||||
# Testdurchläufe
|
||||
import logging
|
||||
import ActionModul
|
||||
|
||||
@@ -17,125 +18,438 @@ class TestModule:
|
||||
return self.world.parseInput(command)
|
||||
|
||||
def testOeffneTruhe(self):
|
||||
pcmd = self.parseInput('nimm Truhe')
|
||||
logging.debug('===== Beginn Testmodul Truhe =====')
|
||||
|
||||
#Auf den Dachboden
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Truhe')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Zurück ins Wohnzimmer
|
||||
self.ac.runter()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
#In den Flur
|
||||
self.ac.sued()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
# Ins Schlafzimmer
|
||||
self.ac.west()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
self.debug(f'aktueller Raum: {self.world.aktuellerRaum.name}')
|
||||
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
|
||||
pcmd = self.parseInput('untersuche Bett')
|
||||
|
||||
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
|
||||
# In den Keller
|
||||
self.ac.runter()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Jacke')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('benutze Jacke')
|
||||
|
||||
self.ac.benutze(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('öffne Truhe')
|
||||
|
||||
self.ac.oeffne(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testTeich(self):
|
||||
self.testOeffneTruhe()
|
||||
pcmd = self.parseInput('nimm Seil')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
pcmd = self.parseInput('nimm Schwert')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Seil')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
self.world.schrittzaehler = self.schrittzaehler
|
||||
|
||||
|
||||
def testTeich(self):
|
||||
self.testOeffneTruhe()
|
||||
logging.debug('===== Beginn Testmodul Teich =====')
|
||||
|
||||
#Rauf ins Schlafzimmer
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('untersuche Nachtschrank')
|
||||
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Haustürschlüssel')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#In den Flur
|
||||
self.ac.ost()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('untersuche Pflanze')
|
||||
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Krug')
|
||||
|
||||
logging.debug(f'Inventar nach nimm Krug {self.world.inventar}')
|
||||
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('öffne Haustür')
|
||||
|
||||
self.ac.oeffne(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# nach draussen
|
||||
self.ac.sued()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# aufs Dach
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Planke')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Wieder runter
|
||||
self.ac.runter()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Zum Bach
|
||||
self.ac.sued()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('verliere Planke')
|
||||
self.ac.verliere(pcmd)
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Zum Teich
|
||||
self.ac.ost()
|
||||
self.schrittzaehler = self.schrittzaehler +1
|
||||
pcmd = self.parseInput('nimm Fisch')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
self.world.schrittzaehler = self.schrittzaehler
|
||||
|
||||
def testStier(self):
|
||||
self.testTeich()
|
||||
logging.debug('===== Beginn Testmodul Stier =====')
|
||||
|
||||
|
||||
# zum Bach
|
||||
self.ac.west()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
#Aufs Feld
|
||||
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
|
||||
|
||||
pcmd = self.parseInput('wirf Jacke')
|
||||
self.ac.wirf(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Feld
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('nimm Jacke')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Auf die Wiese
|
||||
self.ac.west()
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('öffne Gatter')
|
||||
self.ac.oeffne(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
def testRanke(self):
|
||||
self.testStier()
|
||||
|
||||
logging.debug('===== Beginn Testmodul Ranke =====')
|
||||
|
||||
# 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()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
# Aufs Brachland
|
||||
self.ac.sued()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('leere Krug')
|
||||
self.ac.leere(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
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
|
||||
|
||||
# Tal
|
||||
self.ac.sued()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testBaumhaus(self):
|
||||
self.testTal()
|
||||
|
||||
# Baum
|
||||
self.ac.sued()
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('wirf Seil')
|
||||
self.ac.wirf(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
# Baumhaus
|
||||
self.ac.rauf()
|
||||
self.schrittzaehler += 1
|
||||
|
||||
def testHafen(self):
|
||||
self.testBaumhaus()
|
||||
|
||||
pcmd = self.parseInput('gib Jacke an Zwerg')
|
||||
self.ac.gib(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Schachtel')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('öffne Schachtel')
|
||||
self.ac.oeffne(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
pcmd = self.parseInput('nimm Karte')
|
||||
self.ac.nimm(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
|
||||
#Baum
|
||||
self.ac.runter()
|
||||
|
||||
#Tal
|
||||
self.ac.nord()
|
||||
|
||||
#Tunnel
|
||||
|
||||
self.ac.ost()
|
||||
self.schrittzaehler += 1
|
||||
pcmd = self.parseInput('untersuche')
|
||||
self.ac.untersuche(pcmd)
|
||||
self.schrittzaehler += 1
|
||||
|
||||
#Hafen
|
||||
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
|
||||
|
||||
# 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()
|
||||
|
||||
|
217
World.py
217
World.py
@@ -1,3 +1,6 @@
|
||||
# Hier wird die Spielwelt verwaltet.
|
||||
# Auch die Terminalausgabe passiert hier.
|
||||
|
||||
import WorldParser
|
||||
import ParsedCommand
|
||||
import ActionModul
|
||||
@@ -12,12 +15,80 @@ class World:
|
||||
def clearScreen(self):
|
||||
self.stdscr.clear()
|
||||
|
||||
def printAbout(self):
|
||||
s = self.stdscr
|
||||
|
||||
self.clearScreen()
|
||||
s.addstr(1,0,'Das Grab des Azteken', curses.color_pair(2))
|
||||
s.addstr(2,0,f'Version {self.VERSION}')
|
||||
self.waitForCR()
|
||||
def printText(self,textid):
|
||||
self.clearScreen()
|
||||
self.stdscr.addstr(1,0,self.texte[textid].name)
|
||||
self.waitForCR()
|
||||
self.printRaum()
|
||||
|
||||
def printHilfe(self,lines):
|
||||
|
||||
self.clearScreen()
|
||||
s = self.stdscr
|
||||
s.addstr(1,0, lines[0])
|
||||
s.addstr(3,0, lines[2], curses.color_pair(2)) # Befehl
|
||||
s.addstr(4,0, lines[3]) #Parameter
|
||||
s.addstr(5,0, lines[4]) # siehe auch
|
||||
s.addstr(8,0, lines[7]) #Text 1
|
||||
s.addstr(9,0, lines[8]) #Text 2
|
||||
if len(lines) == 10 :
|
||||
s.addstr(10,0, lines[9]) #Text 3
|
||||
self.waitForCR()
|
||||
|
||||
def printKarte(self):
|
||||
self.clearScreen()
|
||||
s = self.stdscr
|
||||
LAND=curses.color_pair( 5)
|
||||
WASSER=curses.color_pair(4)
|
||||
|
||||
s.addstr(1,0,' ',LAND)
|
||||
s.addstr(1,17,'H', WASSER)
|
||||
s.addstr(1,18,' ', WASSER)
|
||||
s.addstr(1,51,'N ', LAND)
|
||||
s.addstr(2,0,' ',LAND)
|
||||
s.addstr(2,14,' ', WASSER)
|
||||
s.addstr(2,48,' W+O ', LAND)
|
||||
s.addstr(3,0,'X(Baum) ', LAND)
|
||||
s.addstr(3,10,' ',WASSER)
|
||||
s.addstr(3,46,' S ', LAND)
|
||||
s.addstr(4,0,' ', LAND)
|
||||
s.addstr(4,10,' ',WASSER)
|
||||
s.addstr(4,45,' ',LAND)
|
||||
s.addstr(5,0,' ', LAND)
|
||||
s.addstr(5,7,' ',WASSER)
|
||||
s.addstr(5,45,' ',LAND)
|
||||
s.addstr(6,0,' ', LAND)
|
||||
s.addstr(6,6,' ',WASSER)
|
||||
s.addstr(6,45,' ',LAND)
|
||||
s.addstr(7,0,' ', LAND)
|
||||
s.addstr(7,6,' ',WASSER)
|
||||
s.addstr(7,44,' ',LAND)
|
||||
s.addstr(8,0,' ', LAND)
|
||||
s.addstr(8,6,' ',WASSER)
|
||||
s.addstr(8,44,' ',LAND)
|
||||
s.addstr(9,0,' ', LAND)
|
||||
s.addstr(9,6,' großer ',WASSER)
|
||||
s.addstr(9,44,' ',LAND)
|
||||
s.addstr(10,0,' ', LAND)
|
||||
s.addstr(10,6,' See ',WASSER)
|
||||
s.addstr(10,44,' ',LAND)
|
||||
s.addstr(11,0,' ',WASSER)
|
||||
s.addstr(11,43,' ',LAND)
|
||||
s.addstr(12,0,' ',WASSER)
|
||||
s.addstr(12,17,' ', LAND)
|
||||
s.addstr(12,18,' ',WASSER)
|
||||
s.addstr(12,41,' o ',LAND)
|
||||
s.addstr(13,0,' ',WASSER)
|
||||
s.addstr(13,39,' (Grab) ',LAND)
|
||||
self.waitForCR()
|
||||
|
||||
def printBefehle(self):
|
||||
self.clearScreen()
|
||||
befehlar = []
|
||||
@@ -43,19 +114,36 @@ class World:
|
||||
|
||||
for itemid in self.inventar:
|
||||
item = self.inventar[itemid]
|
||||
if item.sichtbar:
|
||||
labels.append(item.name)
|
||||
|
||||
return labels
|
||||
|
||||
def fortschritt(self):
|
||||
anz_raeume, anz_entdeckt = self.zaehleRaeume()
|
||||
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
|
||||
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))
|
||||
@@ -79,7 +167,9 @@ class World:
|
||||
|
||||
richtungen =''
|
||||
ixri = 0
|
||||
self.stdscr.addstr(6,85,f'Schritte: {self.schrittzaehler}')
|
||||
anz_raeume, anz_entdeckt = self.zaehleRaeume()
|
||||
progress = (anz_entdeckt/anz_raeume) *100
|
||||
self.stdscr.addstr(6,85,f'Schritte: {self.schrittzaehler}, Räume:{anz_entdeckt}/{anz_raeume}, Fortschritt: {self.fortschritt()}%')
|
||||
win = curses.newwin(7,35,7,85)
|
||||
win.box()
|
||||
win.addstr('Ausgänge:')
|
||||
@@ -96,11 +186,17 @@ class World:
|
||||
def sucheRaum(self,id):
|
||||
for raumid in self.raumliste:
|
||||
raum = self.raumliste[raumid]
|
||||
|
||||
# logging.debug(f'{raumid} - {raum.id}')
|
||||
if raum.id == id:
|
||||
return raum
|
||||
return None
|
||||
|
||||
|
||||
def sucheRaumName(self,name):
|
||||
if name == None:
|
||||
return self.aktuellerRaum
|
||||
|
||||
for raumid in self.raumliste:
|
||||
raum = self.raumliste[raumid]
|
||||
if raum.name.lower() == name.lower():
|
||||
@@ -126,6 +222,13 @@ class World:
|
||||
|
||||
return None
|
||||
|
||||
def findRaumById(self,raumid):
|
||||
|
||||
for rid in self.raumliste:
|
||||
if rid == raumid:
|
||||
return self.raumliste[rid]
|
||||
return None
|
||||
|
||||
def findItemInAktuellerRaum(self,itemname):
|
||||
raum = self.aktuellerRaum
|
||||
|
||||
@@ -135,6 +238,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')
|
||||
@@ -161,9 +265,32 @@ class World:
|
||||
return person
|
||||
return None
|
||||
|
||||
def findPersonById(self,persid):
|
||||
|
||||
for id in self.personen:
|
||||
person = self.personen[id]
|
||||
|
||||
if person.id == persid:
|
||||
return person
|
||||
|
||||
return None
|
||||
|
||||
def findPersonImAktuellenRaumById(self, personid):
|
||||
raum = self.aktuellerRaum
|
||||
|
||||
for persid in raum.personen:
|
||||
person = raum.personen[persid]
|
||||
|
||||
logging.debug(f'{person.id} - {personid}')
|
||||
|
||||
if person.id == personid:
|
||||
return person
|
||||
return None
|
||||
|
||||
|
||||
def findItemImInventar(self,itemname):
|
||||
|
||||
|
||||
for itemid in self.inventar:
|
||||
if self.inventar[itemid].name.lower() == itemname.lower():
|
||||
return self.inventar[itemid]
|
||||
@@ -179,7 +306,7 @@ class World:
|
||||
def ermittleBefehlId(self,befehl):
|
||||
for id in self.befehle:
|
||||
name = self.befehle[id].name
|
||||
logging.debug(f'ermittleBefehlId(): {befehl} - {name}')
|
||||
#logging.debug(f'{befehl} - {name}')
|
||||
if name == befehl:
|
||||
return id
|
||||
return None
|
||||
@@ -220,6 +347,29 @@ class World:
|
||||
|
||||
return parsedCommand
|
||||
|
||||
def zaehleEntdeckteRaeume(self):
|
||||
count = 0
|
||||
for raumid in self.raumliste:
|
||||
raum = self.raumliste[raumid]
|
||||
if raum .entdeckt:
|
||||
count += 1
|
||||
|
||||
return count
|
||||
|
||||
def zaehleRaeume(self):
|
||||
count = 0
|
||||
entdeckt = 0
|
||||
for raumid in self.raumliste:
|
||||
raum = self.raumliste[raumid]
|
||||
if raum .entdeckt:
|
||||
entdeckt += 1
|
||||
count += 1
|
||||
|
||||
return count, entdeckt
|
||||
|
||||
def findPrevRaumId(self):
|
||||
return self.weg[-1]
|
||||
|
||||
def debug_Items(self):
|
||||
logging.debug('liste Items')
|
||||
logging.debug(self.gegenstaende)
|
||||
@@ -246,6 +396,8 @@ class World:
|
||||
self.objekte = {}
|
||||
self.sortouts = []
|
||||
self.texte = {}
|
||||
self.weg = []
|
||||
self.vorraum = '-1'
|
||||
self.aktuellerRaum = None
|
||||
self.parsedCommand = None
|
||||
self.NOEXIT = '-1'
|
||||
@@ -255,7 +407,9 @@ class World:
|
||||
self.WEST = '3'
|
||||
self.RAUF = '4'
|
||||
self.RUNTER = '5'
|
||||
self.VERSION = '0.5'
|
||||
|
||||
self.VERSION = '0.91'
|
||||
|
||||
self.ITEM_TISCH = '1'
|
||||
self.ITEM_LEITER = '2'
|
||||
self.ITEM_TRUHE = '3'
|
||||
@@ -266,15 +420,33 @@ class World:
|
||||
self.ITEM_NACHTSCHRANK = '8'
|
||||
self.ITEM_KLEINER_SCHLUESSEL = '9'
|
||||
self.ITEM_JACKE = '10'
|
||||
self.ITEM_SCHWERT = '11'
|
||||
self.ITEM_SEIL = '12'
|
||||
self.ITEM_HAUSTUERSCHLUESSEL = '13'
|
||||
self.ITEM_RANKGITTER = '14'
|
||||
self.ITEM_PLANKE = '15'
|
||||
self.ITEM_TEICH = '16'
|
||||
self.ITEM_FISCH = '17'
|
||||
self.ITEM_SCHWERT = '18'
|
||||
self.ITEM_BOXSACK = '19'
|
||||
self.ITEM_MAUS = '20'
|
||||
self.ITEM_BOHNENRANKE = '21'
|
||||
self.ITEM_ELEFANT = '22'
|
||||
self.ITEM_GATTER = '25'
|
||||
self.ITEM_SCHACHTEL = '26'
|
||||
self.ITEM_KARTE = '27'
|
||||
self.ITEM_BOOT = '28'
|
||||
self.ITEM_FACKEL = '29'
|
||||
self.ITEM_SCHWIMMWESTE = '30'
|
||||
self.ITEM_KABINE = '31'
|
||||
self.ITEM_BEIBOOT = '32'
|
||||
self.ITEM_DIAMANT = '38'
|
||||
self.ITEM_PALME = '40'
|
||||
self.ITEM_SOCKEL = '41'
|
||||
self.ITEM_KOPF = '42'
|
||||
self.ITEM_MAUER = '43'
|
||||
self.ITEM_LOCH = '44'
|
||||
self.ITEM_PLAKETTE = '45'
|
||||
self.ITEM_KUEHLSCHRANK = '46'
|
||||
|
||||
# Räume
|
||||
|
||||
@@ -293,10 +465,43 @@ class World:
|
||||
self.RAUM_KLEINES_FELD = '12'
|
||||
self.RAUM_WIESE = '13'
|
||||
self.RAUM_BRACHLAND = '14'
|
||||
self.RAUM_BOHNENRANKE = '15'
|
||||
self.RAUM_PFAD = '16'
|
||||
self.RAUM_PFAD_SUED = '17'
|
||||
self.RAUM_PFAD_OST = '18'
|
||||
self.RAUM_TAL = '19'
|
||||
self.RAUM_BAUM = '20'
|
||||
self.RAUM_TUNNEL = '21'
|
||||
self.RAUM_STRAND = '22'
|
||||
self.RAUM_HAFEN = '23'
|
||||
self.RAUM_BAUMHAUS = '24'
|
||||
self.RAUM_BOOT = '25'
|
||||
self.RAUM_KABINE = '26'
|
||||
self.RAUM_BOOT2 = '27'
|
||||
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 = '39'
|
||||
self.RAUM_GRAB = '40'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Personen
|
||||
|
||||
self.PERSON_GEIST = '4'
|
||||
self.PERSON_FISCH = '2'
|
||||
self.PERSON_STIER = '5'
|
||||
self.PERSON_ZWERG = '6'
|
||||
|
||||
|
||||
self.fehler = ''
|
||||
|
@@ -2,6 +2,7 @@ import xml.etree.ElementTree as ET
|
||||
from data.Raum import Raum, Befehl, Adjektiv,Gegenstand,Person,TextNode
|
||||
import io
|
||||
import logging
|
||||
from ConfigError import ConfigError
|
||||
|
||||
class WorldParser():
|
||||
|
||||
@@ -17,6 +18,30 @@ class WorldParser():
|
||||
self.world = world
|
||||
self.textCount = 0
|
||||
|
||||
def check(self):
|
||||
|
||||
for itemid in self.world.gegenstaende:
|
||||
item = self.world.gegenstaende[itemid]
|
||||
textid = 'item-'+ itemid
|
||||
|
||||
if textid in self.world.texte:
|
||||
pass
|
||||
else:
|
||||
logging.error(f'keine Beschreibung für Item {itemid} - {item.name}')
|
||||
raise ValueError('Text ' +textid + ' fehlt')
|
||||
|
||||
for raumid in self.world.raumliste:
|
||||
raum = self.world.raumliste[raumid]
|
||||
textid = 'raum-' +raumid
|
||||
|
||||
if textid in self.world.raumliste:
|
||||
pass
|
||||
else:
|
||||
logging.warn(f' keine Beschreibung für Raum {raumid} - {raum.name}')
|
||||
|
||||
|
||||
|
||||
|
||||
def parseWorld(self,filename):
|
||||
|
||||
tree = ET.parse(filename)
|
||||
@@ -26,6 +51,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 +82,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.')
|
||||
@@ -69,6 +94,9 @@ class WorldParser():
|
||||
key = befehl.attrib['key']
|
||||
command = Befehl(name,id,key)
|
||||
|
||||
if id in self.world.befehle:
|
||||
raise ValueError(f'doppelte Befehl-Id {id}')
|
||||
|
||||
self.world.befehle[id] = command
|
||||
# Adjektive
|
||||
for adj in root.findall('adjektive/adjektiv'):
|
||||
@@ -123,6 +151,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
|
||||
@@ -135,7 +166,7 @@ class WorldParser():
|
||||
person = Person(name,id,raum)
|
||||
self.world.personen[id] = person
|
||||
raum = self.world.sucheRaum(raumid)
|
||||
raum.personen[raumid] = person
|
||||
raum.personen[id] = person
|
||||
|
||||
# Texte
|
||||
for item in root.findall('texte/text'):
|
||||
@@ -144,6 +175,8 @@ class WorldParser():
|
||||
textnode = TextNode(id,item.text)
|
||||
self.world.texte[id] = textnode
|
||||
|
||||
self.check()
|
||||
|
||||
|
||||
|
||||
|
||||
|
9
ascii/dach.txt
Normal file
9
ascii/dach.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
[40;31m
|
||||
/\
|
||||
/ \
|
||||
/ \
|
||||
/ \
|
||||
/ \
|
||||
/ \
|
||||
^[[40;33m
|
||||
------------
|
11
ascii/hilfe/cmd-0.txt
Normal file
11
ascii/hilfe/cmd-0.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: ende, quit
|
||||
Parameter: -keine
|
||||
siehe auch:
|
||||
|
||||
|
||||
Beendet das Programm.
|
||||
|
||||
|
||||
|
14
ascii/hilfe/cmd-1.txt
Normal file
14
ascii/hilfe/cmd-1.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: geh, gehe
|
||||
Parameter: Richtung, Objekt
|
||||
siehe auch: süd, nord, west, ost
|
||||
|
||||
|
||||
geht in die angegebene Richtung oder das Objekt. Ist der Ausgang in die Richtung frei, landest du
|
||||
im nächsten Raum.
|
||||
|
||||
mögliche Richtungen sind: Nord, Ost, Süd, West, Rauf und Runter
|
||||
|
||||
|
||||
|
9
ascii/hilfe/cmd-10.txt
Normal file
9
ascii/hilfe/cmd-10.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: runter
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe,klettere
|
||||
|
||||
|
||||
Geht runter, sofern dort ein Ausgang ist.
|
||||
|
9
ascii/hilfe/cmd-12.txt
Normal file
9
ascii/hilfe/cmd-12.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: inventar
|
||||
Parameter: -keiner-
|
||||
siehe auch:
|
||||
|
||||
|
||||
Listet die Gegenstände im Inventar auf.
|
||||
|
9
ascii/hilfe/cmd-13.txt
Normal file
9
ascii/hilfe/cmd-13.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: about
|
||||
Parameter: -keiner-
|
||||
siehe auch:
|
||||
|
||||
|
||||
Git Informationen zum Programm.
|
||||
|
9
ascii/hilfe/cmd-14.txt
Normal file
9
ascii/hilfe/cmd-14.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: verliere
|
||||
Parameter: Objekt
|
||||
siehe auch: nimm
|
||||
|
||||
|
||||
entfernt einen Gegenstand aus dem Inventar und legt ihn im aktuellen Raum ab.
|
||||
|
9
ascii/hilfe/cmd-15.txt
Normal file
9
ascii/hilfe/cmd-15.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: warte
|
||||
Parameter: -keiner
|
||||
siehe auch:
|
||||
|
||||
|
||||
Tut nix.
|
||||
|
9
ascii/hilfe/cmd-16.txt
Normal file
9
ascii/hilfe/cmd-16.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: drücke
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Drückt auf einen Gegenstand imInventar oder aktuellen Raum.
|
||||
|
9
ascii/hilfe/cmd-17.txt
Normal file
9
ascii/hilfe/cmd-17.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: ziehe
|
||||
Parameter: Objekt
|
||||
siehe auch: drücke
|
||||
|
||||
|
||||
Zieht an einem Objekt im Inventar oder aktuellen Raum.
|
||||
|
9
ascii/hilfe/cmd-19.txt
Normal file
9
ascii/hilfe/cmd-19.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: stelle, stell
|
||||
Parameter: Objekt
|
||||
siehe auch:
|
||||
|
||||
|
||||
Stellt ein Objekt im Inventar ab.
|
||||
|
12
ascii/hilfe/cmd-2.txt
Normal file
12
ascii/hilfe/cmd-2.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: nimm
|
||||
Parameter: Objekt
|
||||
siehe auch:
|
||||
|
||||
|
||||
Nimmt einen Gegenstand im aktuellen Raum auf und verstaut ihn in deinem Inventar.
|
||||
Hinweis: Einge Gegenstände können nicht mitgenommen werden.
|
||||
|
||||
|
||||
|
10
ascii/hilfe/cmd-20.txt
Normal file
10
ascii/hilfe/cmd-20.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: öffne
|
||||
Parameter: Objekt
|
||||
siehe auch: nimm
|
||||
|
||||
|
||||
Öffnet einen Behälter oder eine Tür.
|
||||
Der Gegenstand muss sich im Inventar oder aktuellen Raum befinden.
|
||||
|
11
ascii/hilfe/cmd-21.txt
Normal file
11
ascii/hilfe/cmd-21.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: klettere
|
||||
Parameter: Objekt
|
||||
siehe auch: rauf, runter
|
||||
|
||||
|
||||
Klettert an einem Gegenstand rauf oder runter.
|
||||
Der Gegenstand muss sich im aktuellen Raum befinden.
|
||||
Hinweis: Manchmal muss der Gegenstand erst kletterbar gemacht werden.
|
||||
|
10
ascii/hilfe/cmd-22.txt
Normal file
10
ascii/hilfe/cmd-22.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: fange
|
||||
Parameter: Person
|
||||
siehe auch:
|
||||
|
||||
|
||||
Fängt die angebene Person. Möglicherweise benötigst du einen weiteren
|
||||
Gegenstand zum Fangen.
|
||||
|
9
ascii/hilfe/cmd-23.txt
Normal file
9
ascii/hilfe/cmd-23.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: hilfe
|
||||
Parameter: Befehl
|
||||
siehe auch:
|
||||
|
||||
|
||||
Zeigt Hilfe zu einem Befehl an.
|
||||
|
10
ascii/hilfe/cmd-24.txt
Normal file
10
ascii/hilfe/cmd-24.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: schlage, boxe
|
||||
Parameter: Genstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Schlägt auf einen Gegenstand im aktuellen Raum.
|
||||
Achte darauf, wen oder was du schlägst!
|
||||
|
10
ascii/hilfe/cmd-25.txt
Normal file
10
ascii/hilfe/cmd-25.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: sprich
|
||||
Parameter: Person
|
||||
siehe auch:
|
||||
|
||||
|
||||
Spricht eine Person im aktuellen Raum an. Dadurch könntest du an spielentscheidende
|
||||
Informationen kommen.
|
||||
|
9
ascii/hilfe/cmd-26.txt
Normal file
9
ascii/hilfe/cmd-26.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: leere
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Leert einen Gegenstand im Inventar bzw. schüttet seinen Inhalt aus.
|
||||
|
9
ascii/hilfe/cmd-27.txt
Normal file
9
ascii/hilfe/cmd-27.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: fülle, fuelle
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Füllt einen Gegenstand im Inventar. Das einzufüllende Material muss im aktuellen Raum vorhanden sein.
|
||||
|
9
ascii/hilfe/cmd-28.txt
Normal file
9
ascii/hilfe/cmd-28.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: wirf
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Wirft einen Gegenstand im Inventar.
|
||||
|
9
ascii/hilfe/cmd-29.txt
Normal file
9
ascii/hilfe/cmd-29.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: gib
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Gibt einen Gegenstand aus dem Inventar an eine Person im aktuellen Raum.
|
||||
|
13
ascii/hilfe/cmd-3.txt
Normal file
13
ascii/hilfe/cmd-3.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: untersuche,schaue
|
||||
Parameter: Objekt
|
||||
siehe auch:
|
||||
|
||||
|
||||
Gibt dir eine genauere Beschreibung eines Gegenstands. Der Gegenstand muss sich in deinem Inventar
|
||||
oder im aktuellen Raum befinden.
|
||||
Hinweis: Lässt du das Objekt weg, gibt es eine Beschreibung des aktuellen Raums.
|
||||
|
||||
|
||||
|
9
ascii/hilfe/cmd-30.txt
Normal file
9
ascii/hilfe/cmd-30.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: entzünde
|
||||
Parameter: Gegenstand
|
||||
siehe auch:
|
||||
|
||||
|
||||
Entzündet einenbrennbaren Gegestand aus dem Inventar. Feuer bedeutet Licht.
|
||||
|
9
ascii/hilfe/cmd-31.txt
Normal file
9
ascii/hilfe/cmd-31.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: lösche
|
||||
Parameter: Gegenstand
|
||||
siehe auch: entzünde
|
||||
|
||||
|
||||
Löscht einen brennden Gegenstand im Inventar.
|
||||
|
9
ascii/hilfe/cmd-32.txt
Normal file
9
ascii/hilfe/cmd-32.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: spring
|
||||
Parameter: -keiner-
|
||||
siehe auch:
|
||||
|
||||
|
||||
Springt in die Höhe oder über etwas rüber oder in etwas hinein.
|
||||
|
9
ascii/hilfe/cmd-4.txt
Normal file
9
ascii/hilfe/cmd-4.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: benutze
|
||||
Parameter: Objekt
|
||||
siehe auch:
|
||||
|
||||
|
||||
Benutzt einen Gegenstand aus dem Inventar. Unter Umständen kann ein spezieller Gegenstand nur
|
||||
in bestimmten Räumen benutzt werden.
|
9
ascii/hilfe/cmd-5.txt
Normal file
9
ascii/hilfe/cmd-5.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: nord
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe
|
||||
|
||||
|
||||
Geht nach Norden, sofern dort ein Ausgang ist.
|
||||
|
9
ascii/hilfe/cmd-6.txt
Normal file
9
ascii/hilfe/cmd-6.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: süd, süden
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe
|
||||
|
||||
|
||||
Geht nach Süden, sofern dort ein Ausgang ist.
|
||||
|
7
ascii/hilfe/cmd-7.txt
Normal file
7
ascii/hilfe/cmd-7.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: nord
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe
|
||||
|
||||
Geht nach Norden, sofern dort ein Ausgang ist.
|
9
ascii/hilfe/cmd-8.txt
Normal file
9
ascii/hilfe/cmd-8.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: west, westen
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe
|
||||
|
||||
|
||||
Geht nach Westen, sofern dort ein Ausgang ist.
|
||||
|
9
ascii/hilfe/cmd-9.txt
Normal file
9
ascii/hilfe/cmd-9.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Hilfeseite
|
||||
|
||||
Befehl: rauf
|
||||
Parameter: -keiner-
|
||||
siehe auch: gehe, klettere
|
||||
|
||||
|
||||
Geht rauf, sofern dort ein Ausgang ist.
|
||||
|
13
ascii/karte.txt
Normal file
13
ascii/karte.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
H N
|
||||
------- W+O
|
||||
X(Baum) | |S
|
||||
| --
|
||||
------ |
|
||||
| |
|
||||
--- |
|
||||
| --
|
||||
| großer | o(Grab)
|
||||
--- See --
|
||||
|
|
||||
* --
|
||||
|
|
15
data/Raum.py
15
data/Raum.py
@@ -15,6 +15,8 @@ class Raum(SuperNode):
|
||||
self.personen = {}
|
||||
self.beschreibung=beschreibung
|
||||
self.pickupmsg = ''
|
||||
self.entdeckt = False
|
||||
self.vorraum = '-1'
|
||||
self.ausgaenge = {
|
||||
'0': '-1', # Nord
|
||||
'1': '-1', # West
|
||||
@@ -41,7 +43,7 @@ class Raum(SuperNode):
|
||||
|
||||
for itemid in self.items:
|
||||
item = self.items[itemid]
|
||||
logging.debug('labelsGegenstaende(): Item ' + self.items[itemid].name + ' ist ' + str(item.sichtbar))
|
||||
#logging.debug('labelsGegenstaende(): Item ' + self.items[itemid].name + ' ist ' + str(item.sichtbar))
|
||||
if item.sichtbar:
|
||||
if item.display != None:
|
||||
labels.append(item.display)
|
||||
@@ -67,13 +69,22 @@ class Gegenstand(SuperNode):
|
||||
def __init__(self,name,id,raumid):
|
||||
super().__init__(name,id)
|
||||
self.raumid = raumid
|
||||
self.zustand = 0
|
||||
self.sichtbar = True
|
||||
self.imobil = False
|
||||
self.adjektiv = None
|
||||
self.display = None
|
||||
self.GESCHLOSSEN = 0
|
||||
self.OFFEN = 1
|
||||
self.KLEIN = 0
|
||||
self.MITTEL = 1
|
||||
self.GROSS = 2
|
||||
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.
BIN
img/map.png
Normal file
BIN
img/map.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 128 KiB |
50
map.txt
50
map.txt
@@ -3,7 +3,7 @@
|
||||
^
|
||||
|
|
||||
V
|
||||
Schlafzimmer<-->Flur
|
||||
Schlafzimmer<-->Flur<--> Küche
|
||||
^
|
||||
|
|
||||
V
|
||||
@@ -11,20 +11,52 @@
|
||||
^
|
||||
|
|
||||
V
|
||||
Bach<-->Teich
|
||||
^
|
||||
|
|
||||
V
|
||||
Stall Bach<-->Teich
|
||||
^ ^
|
||||
| |
|
||||
V V
|
||||
Wiese<------->Feld
|
||||
^ ^
|
||||
| |
|
||||
| |
|
||||
V V
|
||||
Brachland kleines Feld
|
||||
^(1)
|
||||
|
||||
(0)Brachland kleines Feld
|
||||
(1)
|
||||
Himmelspfad
|
||||
|
||||
(0)
|
||||
(1)Spitze der Bohnenranke
|
||||
^
|
||||
|
|
||||
|
|
||||
V
|
||||
Pfad
|
||||
^
|
||||
|
|
||||
|
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
36
printKarte.py
Normal file
36
printKarte.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import curses
|
||||
from curses import wrapper
|
||||
|
||||
def printKarte(stdscr):
|
||||
s = stdscr
|
||||
|
||||
s.addstr(1,0,' H N')
|
||||
s.addstr(2,0,' ------- W+O')
|
||||
s.addstr(3,0,'X(Baum) | |S')
|
||||
s.addstr(4,0,' | --')
|
||||
s.addstr(5,0,' ------ |')
|
||||
s.addstr(6,0,' | |')
|
||||
s.addstr(7,0,'--- |')
|
||||
s.addstr(8,0,'| --')
|
||||
s.addstr(9,0,'| großer | o(Grab)')
|
||||
s.addstr(10,0,'--- See -- ')
|
||||
s.addstr(11,0,' |')
|
||||
s.addstr(12,0,' * --')
|
||||
s.addstr(13,0,' |')
|
||||
|
||||
|
||||
def inputLoop(stdscr):
|
||||
|
||||
|
||||
curses.echo()
|
||||
curses.init_pair(1,curses.COLOR_RED, curses.COLOR_WHITE)
|
||||
curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK)
|
||||
curses.init_pair(3,curses.COLOR_YELLOW, curses.COLOR_BLACK)
|
||||
printKarte(stdscr)
|
||||
|
||||
def main():
|
||||
wrapper(inputLoop)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
93
tomb.py
93
tomb.py
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/python3
|
||||
# Hauptprogramm - Eingabeschleife und Dispatching
|
||||
|
||||
import World
|
||||
import ActionModul
|
||||
import TestModule
|
||||
@@ -60,6 +62,20 @@ def verarbeiteBefehl(parsedCommand):
|
||||
actionmodul.schlage(parsedCommand)
|
||||
elif id == '25':
|
||||
actionmodul.sprich(parsedCommand)
|
||||
elif id == '26':
|
||||
actionmodul.leere(parsedCommand)
|
||||
elif id == '27':
|
||||
actionmodul.fuelle(parsedCommand)
|
||||
elif id == '28':
|
||||
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:
|
||||
@@ -69,8 +85,11 @@ def handle_SIGINT(sig,frame):
|
||||
logging.debug("CTRL-C abgefangen")
|
||||
sys.exit(0)
|
||||
|
||||
logging.basicConfig(
|
||||
format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s',
|
||||
filename='tomb.log',
|
||||
level=logging.DEBUG)
|
||||
|
||||
logging.basicConfig(filename='tomb.log', level=logging.DEBUG)
|
||||
signal.signal(signal.SIGINT,handle_SIGINT)
|
||||
world = World.World()
|
||||
logging.debug('World initialisiert')
|
||||
@@ -83,6 +102,8 @@ def inputLoop(stdscr):
|
||||
curses.init_pair(1,curses.COLOR_RED, curses.COLOR_WHITE)
|
||||
curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK)
|
||||
curses.init_pair(3,curses.COLOR_YELLOW, curses.COLOR_BLACK)
|
||||
curses.init_pair(4,curses.COLOR_WHITE, curses.COLOR_BLUE)
|
||||
curses.init_pair(5,curses.COLOR_WHITE, curses.COLOR_GREEN)
|
||||
commandid = ''
|
||||
while commandid != '0':
|
||||
world.printRaum()
|
||||
@@ -98,6 +119,18 @@ def inputLoop(stdscr):
|
||||
|
||||
if debugcommand[1] == 'items':
|
||||
debug_Items()
|
||||
elif debugcommand[1] == 'inventar':
|
||||
debug_Inventar()
|
||||
elif debugcommand[1] == 'personen':
|
||||
debug_Personen()
|
||||
elif debugcommand[1] == 'karte':
|
||||
world.printKarte()
|
||||
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()
|
||||
if command.startswith('auto:'):
|
||||
@@ -110,19 +143,71 @@ def inputLoop(stdscr):
|
||||
testmodul.testOeffneTruhe()
|
||||
elif debugcommand[1] == 'teich':
|
||||
testmodul.testTeich()
|
||||
elif debugcommand[1] == 'ranke':
|
||||
testmodul.testRanke()
|
||||
elif debugcommand[1] == 'tal':
|
||||
testmodul.testTal()
|
||||
elif debugcommand[1] =='baumhaus':
|
||||
testmodul.testBaumhaus()
|
||||
elif debugcommand[1] == 'stier':
|
||||
testmodul.testStier()
|
||||
|
||||
elif debugcommand[1] == 'hafen':
|
||||
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 = ''
|
||||
|
||||
|
||||
else:
|
||||
actionmodul.clearFehler()
|
||||
parsedCommand = world.parseInput(command)
|
||||
commandid = parsedCommand.commandid
|
||||
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')
|
||||
|
||||
for pid in world.aktuellerRaum.personen:
|
||||
person = world.personen[pid]
|
||||
|
||||
logging.debug(f'Id: {person.id} - Name: {person.name}')
|
||||
|
||||
def debug_Items():
|
||||
logging.debug('liste Items')
|
||||
logging.debug(world.gegenstaende)
|
||||
logging.debug('liste Items im aktuellen Raum')
|
||||
logging.debug(world.aktuellerRaum.items)
|
||||
count = 0
|
||||
for item in world.gegenstaende:
|
||||
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} - sichtbar= {item.sichtbar}')
|
||||
count = count +1
|
||||
|
||||
def debug_Inventar():
|
||||
logging.debug('liste Items')
|
||||
logging.debug(world.inventar)
|
||||
count = 0
|
||||
for itemid in world.inventar:
|
||||
item = world.inventar[itemid]
|
||||
logging.debug(f'count= {count}')
|
||||
logging.debug(f'Itemtyp: {type(item)}')
|
||||
# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')
|
||||
|
410
world.xml
410
world.xml
@@ -16,6 +16,7 @@
|
||||
<raum id='3' name='Flur'>
|
||||
<ausgang dir='Nord' nachRaum='1' />
|
||||
<ausgang dir='West' nachRaum='4' />
|
||||
<ausgang dir='Ost' nachRaum='43' />
|
||||
<beschreibung>
|
||||
Du stehst in Flur vor der Eingangstür, die nach Süden ins Freie führt.
|
||||
Rechts von der Tür hängt ein abstraktes Bild, links steht eine Pflanze in einer Nische.
|
||||
@@ -67,8 +68,9 @@
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='11' name='Feld'>
|
||||
<ausgang dir='West' nachRaum= '6' />
|
||||
<ausgang dir='Nord' nachRaum= '8' />
|
||||
<ausgang dir='Sued' nachRaum= '12' />
|
||||
<ausgang dir='West' nachRaum= '13' />
|
||||
|
||||
<beschreibung>
|
||||
Ein Feld.
|
||||
@@ -83,32 +85,210 @@
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='13' name='Wiese'>
|
||||
<ausgang dir='Ost' nachRaum= '12' />
|
||||
<ausgang dir='Sued' nachRaum= '14' />
|
||||
<ausgang dir='Nord' nachRaum= '42' />
|
||||
<ausgang dir='Ost' nachRaum= '11' />
|
||||
|
||||
<beschreibung>
|
||||
Du stehst auf einer Wiese, die nach
|
||||
Du stehst auf einer umzäunten Wiese, Ein Gatter versperrt den Weg nach Süden.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='14' name='Brachland'>
|
||||
<ausgang dir='Nord' nachRaum= '13' />
|
||||
|
||||
<beschreibung>
|
||||
Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='15' name='Himmelspfad'>
|
||||
<raum id='15' name='Spitze der Bohnenranke'>
|
||||
<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'>
|
||||
<ausgang dir='Nord' nachRaum= '15' />
|
||||
<ausgang dir='Sued' nachRaum= '17' />
|
||||
|
||||
<beschreibung>
|
||||
Der Pfad führt weiter nach Süden.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='17' name='südlicher Pfad'>
|
||||
<ausgang dir='Nord' nachRaum= '16' />
|
||||
<ausgang dir='Ost' nachRaum= '18' />
|
||||
|
||||
|
||||
<beschreibung>
|
||||
Der Pfad macht eine Biegung in östlicher Richtung.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='18' name='östlicher Pfad'>
|
||||
<ausgang dir='West' nachRaum= '17' />
|
||||
<ausgang dir='Sued' nachRaum= '19' />
|
||||
|
||||
|
||||
<beschreibung>
|
||||
Der Pfad macht eine Biegung in östlicher Richtung.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='19' name='Tal'>
|
||||
<ausgang dir='West' nachRaum= '17' />
|
||||
<ausgang dir='Ost' nachRaum= '21' />
|
||||
<ausgang dir='Sued' nachRaum= '20' />
|
||||
|
||||
|
||||
<beschreibung>
|
||||
Du stehst in einem Tal, nach Westen führt ein Pfad, in südlicher Richtung entdeckst du in der Ferne einen Baum.
|
||||
Nach Osten führt ein dunkler Tunnel
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='20' name='Baum'>
|
||||
<ausgang dir='Nord' nachRaum= '19' />
|
||||
<beschreibung>
|
||||
Du stehst unter einem Baum mit einer dichten Baumkrone
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='21' name='Tunnel'>
|
||||
<ausgang dir='West' nachRaum= '18' />
|
||||
<beschreibung>
|
||||
Im Tunnel ist es dunkel.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='23' name='Hafen'>
|
||||
<ausgang dir='Ost' nachRaum= '21' />
|
||||
<beschreibung>
|
||||
Du stehst auf einem Steg, an dem ein Segelboot angeleint liegt.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='24' name='Baumhaus'>
|
||||
<ausgang dir='Runter' nachRaum= '20' />
|
||||
<beschreibung>
|
||||
Das Baumhaus
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='25' name='Boot'>
|
||||
<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='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='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'>
|
||||
<ausgang dir='Ost' nachRaum= '37' />
|
||||
<beschreibung>
|
||||
Du stehst vor einer Mauer.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='40' name='Grabkammer'>
|
||||
<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>
|
||||
|
||||
<raum id='42' name='Stall'>
|
||||
<ausgang dir='Sued' nachRaum= '13' />
|
||||
<beschreibung>
|
||||
Du stehst in einem leeren Pferdestall. Der Boden besteht aus festgestampfter Erde.
|
||||
Am Tor ist eine Namenplakette angebracht.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
<raum id='43' name='Küche'>
|
||||
<ausgang dir='West' nachRaum= '3' />
|
||||
<beschreibung>
|
||||
Du stehst in der Küche. In der Ecke steht ein Kühlschrank.
|
||||
</beschreibung>
|
||||
</raum>
|
||||
|
||||
</ebene>
|
||||
|
||||
<commandset>
|
||||
<command name='quit' id='0' key='0' />
|
||||
<command name='ende' id='0' key='0' />
|
||||
<command name='ende' id='43' key='0' />
|
||||
<command name='geh' id='1' key='1' />
|
||||
<command name='gehe' id='27' key='1' />
|
||||
<command name='nimm' id='2' key='2' />
|
||||
@@ -126,10 +306,8 @@
|
||||
<command name='verliere' id='15' key='14' />
|
||||
<command name='warte' id='16' key='15' />
|
||||
<command name='drücke' id='17' key='16' />
|
||||
<command name='ende' id='18' key='0' />
|
||||
<command name='schaue' id='18' key='3' />
|
||||
<command name='ziehe' id='19' key='17' />
|
||||
<command name='benutze' id='20' key='18' />
|
||||
<command name='stelle' id='21' key='19' />
|
||||
<command name='stell' id='22' key='19' />
|
||||
<command name='öffne' id='23' key='20' />
|
||||
@@ -139,11 +317,17 @@
|
||||
<command name='schlage' id='29' key='24' />
|
||||
<command name='boxe' id='30' key='24' />
|
||||
<command name='norden' id='31' key='5' />
|
||||
<command name='süd' id='32' key='7' />
|
||||
<command name='süden' id='32' key='7' />
|
||||
<command name='westen' id='33' key='8' />
|
||||
<command name='sprich' id='34' key='25' />
|
||||
<command name='leere' id='35' key='26' />
|
||||
<command name='fuelle' id='36' key='27' />
|
||||
<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>
|
||||
@@ -186,16 +370,36 @@
|
||||
<item name='Planke' display='' id='15' raum='7' imobil='false' adjektiv = '0' msgid='3' visible='true' />
|
||||
<item name='Teich' display='' id='16' raum='10' imobil='true' adjektiv = '0' msgid='2' visible='true' />
|
||||
<item name='Fisch' display='' id='17' raum='10' imobil='false' adjektiv = '0' msgid='0' visible='false' />
|
||||
<item name='Schwert' display='' id='18' raum='-1' imobil='false' adjektiv = '0' msgid='1' visible='false' />
|
||||
<item name='Boxsack' display='' id='19' raum='1' imobil='true' adjektiv = '0' msgid='1' visible='true' />
|
||||
<item name='Maus' display='tote Maus' id='20' raum='12' imobil='false' adjektiv = '0' msgid='1' visible='true' />
|
||||
<item name='Bohnenranke' id='21' display='' raum='14' imobil='true' adjektiv = '0' msgid='8' visible='true' />
|
||||
<item name='Elefant' id='22' display='' raum='15' imobil='true' adjektiv = '0' msgid='9' visible='true' />
|
||||
<item name='Gatter' id='25' display='' raum='13' imobil='true' adjektiv = '0' msgid='11' visible='true' />
|
||||
<item name='Schachtel' id='26' display='' raum='24' imobil='false' adjektiv = '0' msgid='11' visible='false' />
|
||||
<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='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='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' />
|
||||
<item name='Plakette' id='45' display='' raum='42' imobil='true' adjektiv='0' msgid='2' visible='true' />
|
||||
<item name='Kühlschrank' id='46' display='' raum='43' imobil='true' adjektiv='0' msgid='2' visible='true' />
|
||||
<item name='Uhr' id='47' display='' raum='43' imobil='true' adjektiv='0' msgid='2' visible='true' />
|
||||
<item name='Schriftzug' id='48' display='' raum='39' imobil='true' adjektiv='0' msgid='2' visible='false' />
|
||||
|
||||
</items>
|
||||
<personen>
|
||||
<person name='Fisch' id='2' raum='10' bewegung='0' />
|
||||
<person name='Geist' id='4' raum='2' bewegung='1' />
|
||||
<person name='Stier' id='5' raum='13' bewegung='0' />
|
||||
<person name='Zwerg' id='6' raum='24' bewegung='0' />
|
||||
</personen>
|
||||
<messages>
|
||||
<pickup text='Das ist zu schwer' id='1' />
|
||||
@@ -207,19 +411,54 @@
|
||||
<pickup text='Kunstdiebstahl? Nö!' id='7' />
|
||||
<pickup text='Die ist fest verwurzelt' id='8' />
|
||||
<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='' />
|
||||
<bewegung id='1' value='2,5,4,3,1,2' />
|
||||
</bewegungen>
|
||||
<texte>
|
||||
<text id='1'>
|
||||
Als du die Fackel in den Fackelhalter stellst, kippt der Halter zur Seite. Hinter der Wand hörst du Seilzüge und Zahnräder
|
||||
anlaufen. Über den verborgenen Mechanismus wird das Gittertor in die Höhe gezogen und der Weg nach Norden ist frei.
|
||||
</text>
|
||||
<text id='2'>
|
||||
In einer Schreibtischschublade findest du einen Schlüssel.
|
||||
</text>
|
||||
<text id='item-1'>
|
||||
Der Wohnzimmertisch ist leer.
|
||||
</text>
|
||||
<text id='item-2'>
|
||||
Sie führt nach oben.
|
||||
</text>
|
||||
<text id='item-3'>
|
||||
Eine massive Truhe aus Holz. Sie ist mit Eisenbändern verstärkt und besitzt ein kleines Schloss.
|
||||
</text>
|
||||
<text id='item-4'>
|
||||
Audrey II
|
||||
</text>
|
||||
<text id='item-5'>
|
||||
Eine einfache Tür.
|
||||
</text>
|
||||
<text id='item-6'>
|
||||
Der Krug ist aus gebrannten und glasiertem Ton mit einem Henkel an der Seite.
|
||||
</text>
|
||||
<text id='item-7'>
|
||||
Das Bett ist frisch bezogen.
|
||||
</text>
|
||||
<text id='item-8'>
|
||||
Ein Schränkchen mit einer Schublade.
|
||||
</text>
|
||||
<text id='item-9'>
|
||||
Ein ganz normaler Schlüssel. Er schimmert etwas bläulich.
|
||||
</text>
|
||||
<text id='item-10'>
|
||||
Die Jacke ist aus rotem Leinenstoff genäht.
|
||||
</text>
|
||||
<text id='item-11'>
|
||||
Für ein Schwert ist es relativ klein (könnte auch ein Brieföffner sein). Auf der Klinge ist das Wort "Stich" eingraviert.
|
||||
</text>
|
||||
<text id='item-12'>
|
||||
Das Seil ist etwa 5m lang und könnte aus Garnfasern geflochten sein. Es ist stark genug, dein Gewicht zu tragen.
|
||||
</text>
|
||||
<text id='item-13'>
|
||||
Der Schlüssel schimmert etwas bläulich.
|
||||
</text>
|
||||
@@ -233,7 +472,7 @@
|
||||
Der Teich wird vom Bach gespeist.Einige Wassertiere leben darin.
|
||||
</text>
|
||||
<text id='item-17'>
|
||||
Der magische Fisch sagt: Pflanzen brauchen Wasser und verschwindet.
|
||||
Der magische Fisch sagt: "Pflanzen brauchen Wasser" und verschwindet.
|
||||
</text>
|
||||
<text id='item-19'>
|
||||
Der Boxsack trägt die Aufschrift: Eigentum von Maddes. Außerdem hat jemand ein großes V draufgemalt.
|
||||
@@ -242,22 +481,151 @@
|
||||
Die ist mausetot.
|
||||
</text>
|
||||
<text id='item-21'>
|
||||
Ein Bohnengewächs der märchenhaften Gattung vigna hansus magicus.
|
||||
Ein Bohnengewächs der märchenhaften Gattung vigna hans in beatitudinem.
|
||||
Sie ist etwas mickrig und braucht Pflege.
|
||||
</text>
|
||||
<text id='item-21-0'>
|
||||
Ein Bohnengewächs der märchenhaften Gattung vigna hans in beatitudinem.
|
||||
Sie ist etwas mickrig und braucht Pflege.
|
||||
</text>
|
||||
<text id='item-21-1'>
|
||||
Ein Bohnengewächs der märchenhaften Gattung vigna hans in beatitudinem.
|
||||
Sie reicht dir bis an die Schultern.
|
||||
</text>
|
||||
<text id='item-21-2'>
|
||||
Ein Bohnengewächs der märchenhaften Gattung vigna hans in beatitudinem.
|
||||
Sie wächst bis in die Wolken hinein.
|
||||
</text>
|
||||
<text id='item-22'>
|
||||
Der Elefantbulle ist mindestens fünf Meter größer als du und hat zwei beeindruckende Stoßzähne. Er versperrt den Ausgang.
|
||||
</text>
|
||||
<text id='item-25'>
|
||||
Das Gatter ist im südlichen Teil der Wiesenumzäunung angebracht.
|
||||
</text>
|
||||
<text id='item-26'>
|
||||
Eine einfache Schachtel aus Pappe. Jemand hat "Eigentum von Henry" auf die Oberseite geschrieben.
|
||||
</text>
|
||||
<text id='item-27'>
|
||||
Dies ist die Karte von der Henry die erzählt hat.
|
||||
</text>
|
||||
<text id='item-28'>
|
||||
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-29'>
|
||||
Die Fackel hättest du schon eher brauchen können.
|
||||
</text>
|
||||
<text id='item-30'>
|
||||
Eine orangefarbene Rettungsweste, die dir im Wasser genügend Auftrieb verleiht. Solltest du auf einen Eisberg treffen, bist
|
||||
du in Sicherheit.
|
||||
</text>
|
||||
<text id='item-31'>
|
||||
Die Luft ist abgestanden und durch das ungeputzte Bullauge dringt kaum Licht.
|
||||
</text>
|
||||
<text id='item-32'>
|
||||
Mit dem Beiboot kann man durch flacheres Wasser fahren. Und, falls ein Eisberg...
|
||||
</text>
|
||||
<text id='item-33'>
|
||||
---------
|
||||
| No |
|
||||
| Homers |
|
||||
| Club |
|
||||
----------
|
||||
</text>
|
||||
<text id='item-38'>
|
||||
Der Diamant ist oktaederförmig geschliffen und funkelt im Sonnenlicht.
|
||||
</text>
|
||||
<text id='item-41'>
|
||||
Der Sockel dient seiner Form nach zur Aufnahme eines achtseitigen Gegenstands.
|
||||
</text>
|
||||
<text id='item-40'>
|
||||
Eine einzelne Palme. Irgendwer hat die Kokosnuss geklaut.
|
||||
</text>
|
||||
<text id='item-42'>
|
||||
Der Kopf repräsentiert einen dir unbekannten Mann, der würdevoll über seine linke Schulter schaut.
|
||||
</text>
|
||||
<text id='item-43'>
|
||||
Die Mauer wurde scheinbar vor ewigen Zeiten aus getrockneten Lehmziegel errichtet und die Fugen
|
||||
anschlißend mit Lehm verputzt.
|
||||
</text>
|
||||
<text id='item-44'>
|
||||
Ein in den Sand gegrabenes Loch.
|
||||
</text>
|
||||
<text id='item-45'>
|
||||
Horst.
|
||||
Der Pferd heisst Horst.
|
||||
</text>
|
||||
<text id='item-46'>
|
||||
Wie überraschend, er ist weiß.
|
||||
</text>
|
||||
<text id='item-47'>
|
||||
Die Uhr ist bei 22:04 Uhr stehen geblieben.
|
||||
</text>
|
||||
<text id='item-48'>
|
||||
Über die ganze Wand hat jemand "Romanum ite domum" gepinselt.
|
||||
</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='raum-43'>
|
||||
Eine praktisch eingerichtete Küche. An der Wand hängt eine Uhr, ein Kühlschrank steht gegenüber der Tür.
|
||||
</text>
|
||||
<text id='npc-5'>
|
||||
Muuuh.
|
||||
</text>
|
||||
<text id='npc-6'>
|
||||
Der Zwerg klappert vor Kälte mit den Zähnen und kann nicht sprechen.
|
||||
</text>
|
||||
<text id='npc-6-beschr'>
|
||||
Der Zwerg ist etwa hüfthoch. Auf dem Kopf trägt er eine blaue Zipfelmütze (natürlich).Er ist nur mit einer violetten Hose bekleidet,
|
||||
der Oberkörper ist frei.
|
||||
Er scheint offensichtlich zu frieren.
|
||||
</text>
|
||||
<text id='zuul'>
|
||||
*** * * * * *
|
||||
* * * * * *
|
||||
* * * * * *
|
||||
**** ***** ***** *****
|
||||
</text>
|
||||
<text id='hilfe'>
|
||||
Das Grab des Azteken ist ein klassisches Textadventure.
|
||||
Es ist eine Adaption des gleichnamigen Adventures vom C64.
|
||||
Es ist eine Adaption des gleichnamigen Adventures auf dem C64.
|
||||
Du bedienst es durch Befehle wie "nimm Schwert" oder "gehe Süd". Die Eingabe ist so flexibel wie möglich gestaltet, so dass
|
||||
auch ganze Sätze wie "nimm das Schwert" verstanden werden.
|
||||
Die Liste der möglichen Befehle erhälst du mit "hilfe befehle".
|
||||
Die Aufgabe gibt dir jemand im Spiel.
|
||||
</text>
|
||||
<text id='geist'>
|
||||
<text id='npc-4'>
|
||||
Ich bin der Geist deines Großonkels Henry. Mein ganzes Leben habe ich damit verbracht, das Himmelsgrab der Azteken zu finden, wie zuvor
|
||||
mein Vater.
|
||||
Leider erfolglos.
|
||||
Leider erfolglos. Die Karte, die ich mir mühsam aus Hinweisen erstellt hatte, wurde mir von einem hinterlistigen Zwerg entwendet.
|
||||
Jetzt musst du dich auf die Suche machen, so dass ich endlich meinen Frieden finden kann.
|
||||
Suche das Grab im Wolkenreich.Öffne es und ich bin erlöst.
|
||||
</text>
|
||||
<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>
|
||||
<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>
|
||||
<text id='victory'>
|
||||
Henry erscheint und sagt:
|
||||
"Es war sehr beeindruckend, deine Suche zu verfolgen. Du hast meine Aufgabe erfolgreich zu Ende geführt."
|
||||
"Endlich kann ich meine Frieden finden."
|
||||
</text>
|
||||
|
||||
</texte>
|
||||
</welt>
|
||||
|
Reference in New Issue
Block a user