diff --git a/ActionModul.py b/ActionModul.py index 3798a9d..707c614 100644 --- a/ActionModul.py +++ b/ActionModul.py @@ -127,10 +127,6 @@ class ActionModul(ActionBasics): 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); @@ -170,6 +166,10 @@ class ActionModul(ActionBasics): if self.isAktuellerRaum(raum.id): logging.debug(f'untersuche aktuellen Raum {raum.name}') + 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) @@ -307,6 +307,7 @@ class ActionModul(ActionBasics): 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): @@ -349,22 +350,36 @@ class ActionModul(ActionBasics): def klettere(self, parsedCommand): - leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) + item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand) + geklettert = False - logging.debug(f'klettere(): Leiter is {leiter}') - if leiter != None: + 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() + 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.') - else: - self.setFehler('Eine Leiter sehe ich hier nicht.') + 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.') + diff --git a/World.py b/World.py index 91d3863..bc29b77 100644 --- a/World.py +++ b/World.py @@ -21,6 +21,53 @@ class World: self.waitForCR() self.printRaum() + 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 = [] diff --git a/ascii/dach.txt b/ascii/dach.txt new file mode 100644 index 0000000..906deac --- /dev/null +++ b/ascii/dach.txt @@ -0,0 +1,9 @@ + + /\ + / \ + / \ + / \ + / \ +/ \ +^[[40;33m +------------ diff --git a/ascii/karte.txt b/ascii/karte.txt new file mode 100644 index 0000000..0c40459 --- /dev/null +++ b/ascii/karte.txt @@ -0,0 +1,13 @@ + H N + ------- W+O +X(Baum) | |S + | -- + ------ | + | | + --- | + | -- + | großer | o(Grab) +--- See -- + | + * -- + | diff --git a/data/Raum.py b/data/Raum.py index 830e8d3..d79779a 100644 --- a/data/Raum.py +++ b/data/Raum.py @@ -68,7 +68,6 @@ 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 @@ -80,6 +79,7 @@ class Gegenstand(SuperNode): self.GROSS = 2 self.LEER = 0 self.VOLL = 1 + self.HAENGEND = 0 self.zustand = self.GESCHLOSSEN class Adjektiv(SuperNode): diff --git a/data/__pycache__/Raum.cpython-38.pyc b/data/__pycache__/Raum.cpython-38.pyc index e8b487d..bef0cda 100644 Binary files a/data/__pycache__/Raum.cpython-38.pyc and b/data/__pycache__/Raum.cpython-38.pyc differ diff --git a/printKarte.py b/printKarte.py new file mode 100644 index 0000000..efffde5 --- /dev/null +++ b/printKarte.py @@ -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() + diff --git a/tomb.py b/tomb.py index 7799faf..8f3c826 100755 --- a/tomb.py +++ b/tomb.py @@ -94,6 +94,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() @@ -113,6 +115,10 @@ def inputLoop(stdscr): debug_Inventar() elif debugcommand[1] == 'personen': debug_Personen() + elif debugcommand[1] == 'karte': + world.printKarte() + commandid = '0' + elif command.startswith('auto:'): command = command.rstrip() if command.startswith('auto:'): diff --git a/world.xml b/world.xml index 6b35513..b54f789 100644 --- a/world.xml +++ b/world.xml @@ -154,7 +154,7 @@ - + Du stehst am Strand eines großen Sees. In südlicher Richtung scheint ein Hafen zu sein. @@ -214,6 +214,7 @@ + @@ -332,6 +333,14 @@ Der Elefantbulle ist mindestens fünf Meter größer als du und hat zwei beeindruckende Stoßzähne. Er versperrt den Ausgang. + + Der Zwerg klappert vor Kälte mit den Zähnen und kann nicht sprechen. + + + Der Zwerg ist etwa hüfthoch. Auf dem Kopf trägt er eine blaue Zipfelmütze (natürlich).Er ist nur mit einer blauen Hose bekleidet, + der Oberkörper ist frei. + Er scheint offensichtlich zu frieren. + Das Grab des Azteken ist ein klassisches Textadventure. Es ist eine Adaption des gleichnamigen Adventures vom C64. @@ -343,7 +352,7 @@ 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.