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 = self.world.sucheRaum(self.world.RAUM_BACH)
bach.ausgaenge[self.world.OST] = self.world.RAUM_TEICH 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): def verliere(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand); item = self.world.findItemImInventar(parsedCommand.gegenstand);
@@ -170,6 +166,10 @@ class ActionModul(ActionBasics):
if self.isAktuellerRaum(raum.id): if self.isAktuellerRaum(raum.id):
logging.debug(f'untersuche aktuellen Raum {raum.name}') 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): def findeTruhenschluessel(self):
schluessel = self.world.findItemById(self.world.ITEM_KLEINER_SCHLUESSEL) schluessel = self.world.findItemById(self.world.ITEM_KLEINER_SCHLUESSEL)
@@ -307,6 +307,7 @@ class ActionModul(ActionBasics):
self.world.printText('seilwurf') self.world.printText('seilwurf')
self.macheWegFrei(self.world.RAUF,self.world.RAUM_BAUMHAUS) self.macheWegFrei(self.world.RAUF,self.world.RAUM_BAUMHAUS)
self.ausDemInventar(item) self.ausDemInventar(item)
item.zustand = item.HAENGEND
elif self.isAktuellerRaum(self.world.RAUM_BOHNENRANKE): elif self.isAktuellerRaum(self.world.RAUM_BOHNENRANKE):
if self.isItem(item, self.world.ITEM_MAUS): if self.isItem(item, self.world.ITEM_MAUS):
@@ -349,22 +350,36 @@ class ActionModul(ActionBasics):
def klettere(self, parsedCommand): 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 item == None:
if leiter != None: self.setFehler('Das sehe ich hier nicht')
return
if item.id == self.world.ITEM_LEITER:
if self.isAktuellerRaum(self.world.RAUM_ESSZIMMER): if self.isAktuellerRaum(self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}') logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf() self.rauf()
geklettert = True
elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND): elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE) ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE)
if ranke.zustand == Gegenstand.GROSS: if ranke.zustand == Gegenstand.GROSS:
self.ac.rauf() self.ac.rauf()
geklettert = True
else: else:
self.setFehler('Die Bohnenranke ist zu klein, um daran hoch zu klettern.') 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: else:
self.setFehler('Eine Leiter sehe ich hier nicht.') 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.waitForCR()
self.printRaum() 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): def printBefehle(self):
self.clearScreen() self.clearScreen()
befehlar = [] 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): def __init__(self,name,id,raumid):
super().__init__(name,id) super().__init__(name,id)
self.raumid = raumid self.raumid = raumid
self.zustand = 0
self.sichtbar = True self.sichtbar = True
self.imobil = False self.imobil = False
self.adjektiv = None self.adjektiv = None
@@ -80,6 +79,7 @@ class Gegenstand(SuperNode):
self.GROSS = 2 self.GROSS = 2
self.LEER = 0 self.LEER = 0
self.VOLL = 1 self.VOLL = 1
self.HAENGEND = 0
self.zustand = self.GESCHLOSSEN self.zustand = self.GESCHLOSSEN
class Adjektiv(SuperNode): 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(1,curses.COLOR_RED, curses.COLOR_WHITE)
curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(3,curses.COLOR_YELLOW, 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 = '' commandid = ''
while commandid != '0': while commandid != '0':
world.printRaum() world.printRaum()
@@ -113,6 +115,10 @@ def inputLoop(stdscr):
debug_Inventar() debug_Inventar()
elif debugcommand[1] == 'personen': elif debugcommand[1] == 'personen':
debug_Personen() debug_Personen()
elif debugcommand[1] == 'karte':
world.printKarte()
commandid = '0'
elif command.startswith('auto:'): elif command.startswith('auto:'):
command = command.rstrip() command = command.rstrip()
if command.startswith('auto:'): if command.startswith('auto:'):

View File

@@ -154,7 +154,7 @@
</raum> </raum>
<raum id='22' name='Strand'> <raum id='22' name='Strand'>
<ausgang dir='West' nachRaum= '20' /> <ausgang dir='West' nachRaum= '20' />
<ausgang dir='Sued' nachRaum= '22' /> <ausgang dir='Nord' nachRaum= '23' />
<beschreibung> <beschreibung>
Du stehst am Strand eines großen Sees. In südlicher Richtung scheint ein Hafen zu sein. Du stehst am Strand eines großen Sees. In südlicher Richtung scheint ein Hafen zu sein.
</beschreibung> </beschreibung>
@@ -214,6 +214,7 @@
<command name='fuelle' id='36' key='27' /> <command name='fuelle' id='36' key='27' />
<command name='fülle' id='37' key='27' /> <command name='fülle' id='37' key='27' />
<command name='wirf' id='38' key='28' /> <command name='wirf' id='38' key='28' />
<command name='gib' id='39' key='29' />
</commandset> </commandset>
@@ -332,6 +333,14 @@
<text id='item-22'> <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. Der Elefantbulle ist mindestens fünf Meter größer als du und hat zwei beeindruckende Stoßzähne. Er versperrt den Ausgang.
</text> </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'> <text id='hilfe'>
Das Grab des Azteken ist ein klassisches Textadventure. Das Grab des Azteken ist ein klassisches Textadventure.
Es ist eine Adaption des gleichnamigen Adventures vom C64. Es ist eine Adaption des gleichnamigen Adventures vom C64.
@@ -343,7 +352,7 @@
<text id='geist'> <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 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. 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. 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. Suche das Grab im Wolkenreich.Öffne es und ich bin erlöst.
</text> </text>