Die Karte ist da.

This commit is contained in:
Olli Graf
2022-05-29 14:01:34 +02:00
parent e004bfc17e
commit 9cfbf2e0aa
9 changed files with 147 additions and 12 deletions

View File

@@ -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.')

View File

@@ -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 = []

9
ascii/dach.txt Normal file
View File

@@ -0,0 +1,9 @@

/\
/ \
/ \
/ \
/ \
/ \
^[[40;33m
------------

13
ascii/karte.txt Normal file
View File

@@ -0,0 +1,13 @@
H N
------- W+O
X(Baum) | |S
| --
------ |
| |
--- |
| --
| großer | o(Grab)
--- See --
|
* --
|

View File

@@ -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):

Binary file not shown.

36
printKarte.py Normal file
View 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()

View File

@@ -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:'):

View File

@@ -154,7 +154,7 @@
</raum>
<raum id='22' name='Strand'>
<ausgang dir='West' nachRaum= '20' />
<ausgang dir='Sued' nachRaum= '22' />
<ausgang dir='Nord' nachRaum= '23' />
<beschreibung>
Du stehst am Strand eines großen Sees. In südlicher Richtung scheint ein Hafen zu sein.
</beschreibung>
@@ -214,6 +214,7 @@
<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' />
</commandset>
@@ -332,6 +333,14 @@
<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='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 blauen Hose bekleidet,
der Oberkörper ist frei.
Er scheint offensichtlich zu frieren.
</text>
<text id='hilfe'>
Das Grab des Azteken ist ein klassisches Textadventure.
Es ist eine Adaption des gleichnamigen Adventures vom C64.
@@ -343,7 +352,7 @@
<text id='geist'>
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>