From 9cfbf2e0aacd3dc41a66030a787dfe47509f19fc Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Sun, 29 May 2022 14:01:34 +0200 Subject: [PATCH] Die Karte ist da. --- ActionModul.py | 33 ++++++++++++++----- World.py | 47 +++++++++++++++++++++++++++ ascii/dach.txt | 9 +++++ ascii/karte.txt | 13 ++++++++ data/Raum.py | 2 +- data/__pycache__/Raum.cpython-38.pyc | Bin 3804 -> 3814 bytes printKarte.py | 36 ++++++++++++++++++++ tomb.py | 6 ++++ world.xml | 13 ++++++-- 9 files changed, 147 insertions(+), 12 deletions(-) create mode 100644 ascii/dach.txt create mode 100644 ascii/karte.txt create mode 100644 printKarte.py 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 e8b487ddf6db94f5d767ed9d84d021e80367c140..bef0cda2bee63ea762ec52a60cf729f7145a421c 100644 GIT binary patch delta 179 zcmca3`%IQMl$V!_0SGqBPELBUk@p=(JwpvcJZlPwWJ_TNlI$rgK#~K@<^;33Qdof^ z++YzNum~@h%~!*a#SWC=PhkjV&}8!qaVug38vPPXFacSb0!5-gs)!Rv++r(AEX~bK vDN+Ss2_$Z@6(yGD dW~M~3SCtl*B<7_Qse(l(7jk-UKF=x63IMiQCFlSE 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.