import WorldParser import ParsedCommand import ActionModul import curses from curses import wrapper import logging from os import system, name class World: def clearScreen(self): self.stdscr.clear() def printText(self,textid): self.clearScreen() self.stdscr.addstr(1,0,self.texte[textid].name) self.waitForCR() self.printRaum() def waitForCR(self): self.stdscr.addstr(0,0,'Taste für Weiter',curses.color_pair(1)) self.stdscr.getch() def printRaum(self): raum = self.aktuellerRaum 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(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2)) self.stdscr.addstr(8,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2)) aus = raum.ausgaenge self.stdscr.addstr(9,0,'mögliche Richtungen: ') r = [] if aus[self.NORD] != '-1': r.append('Norden') if aus[self.OST] != '-1': r.append('Osten') if aus[self.WEST] != '-1': r.append('Westen') if aus[self.SUED] != '-1': r.append('Süden') if aus[self.RAUF] != '-1': r.append('Rauf') if aus[self.RUNTER] != '-1': r.append('Runter') richtungen ='' ixri = 0 win = curses.newwin(7,35,7,85) win.box() win.addstr('Ausgänge:') for ri in r: richtungen = richtungen + ri win.addstr(ixri+1,1,ri) if ixri +1 < len(r): richtungen = richtungen + ', ' ixri = ixri +1 self.stdscr.addstr(9,22,richtungen) self.stdscr.refresh() win.refresh() def sucheRaum(self,id): for raumid in self.raumliste: raum = self.raumliste[raumid] if raum.id == id: return raum return None def sucheRaumName(self,name): for raumid in self.raumliste: raum = self.raumliste[raumid] if raum.name.lower() == name.lower(): return raum return None def findItemImInventarOderAktuellerRaum(self,itemname): item = self.findItemImInventar(itemname) if item == None: item = self.findIteminAktuellerRaum(itemname) return item def findIteminAktuellerRaum(self,itemname): raum = self.aktuellerRaum for itemid in raum.items: item = raum.items[itemid] logging.debug('raum.id=' + raum.id) logging.debug('item.raumid=' + item.raumid) logging.debug('findItemInAktuellerRaum() ' + itemname + '-' + item.name) if item.raumid == raum.id and item.name.lower() == itemname.lower(): return item return None def findRaumItemById(self,id): raum = self.aktuellerRaum for itemid in raum.items: item = raum.items[itemid] logging.debug('findRaumItemById() ' + id + '-' + item.id) if item.raumid == raum.id and item.id == id: return item return None def findItemImInventar(self,itemname): for itemid in self.inventar: if self.inventar[itemid].name.lower() == itemname.lower(): return self.inventar[itemid] return None def findItemImInventarById(self,id): for itemid in self.inventar: if self.inventar[itemid].id == id: return self.inventar[itemid] return None def ermittleBefehlId(self,befehl): for id in self.befehle: name = self.befehle[id].name if name == befehl: return id return None def findAdjektiv(self,adjektiv): skip def removeSortouts(self,words,parsedCommand): w = [] for word in words: if word in self.adjektive: if word == adj.name: parsedCommand.adjektiv = adj if word not in self.sortouts: w.append(word) return w def parseInput(self,input): words = input.split(' ') parsedCommand = ParsedCommand.ParsedCommand() words = self.removeSortouts(words,parsedCommand) befehlid = self.ermittleBefehlId(words[0]) if befehlid != None: befehl = self.befehle[befehlid] parsedCommand.commandid = befehl.id parsedCommand.key = befehl.key if len(words) > 1: parsedCommand.gegenstand = words[1] if len(words) > 2: parsedCommand.gegenstand2 = words[2] return parsedCommand def __init__(self): self.raumliste = {} self.msg = {} self.personen = {} self.bewegungen = {} self.gegenstaende = {} self.adjektive = {} self.befehle = {} self.inventar = {} self.objekte = {} self.sortouts = [] self.texte = {} self.aktuellerRaum = None self.parsedCommand = None self.NOEXIT = '-1' self.NORD = '0' self.OST = '1' self.SUED = '2' self.WEST = '3' self.RAUF = '4' self.RUNTER = '5' self.VERSION = '0.5' self.ITEM_TISCH = '1' self.ITEM_LEITER = '2' self.ITEM_TRUHE = '3' self.ITEM_PFLANZE = '4' self.ITEM_HAUSTUER = '5' self.ITEM_GLAS = '6' self.ITEM_BETT = '7' 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' # Räume self.RAUM_ESSZIMMER = '1' self.RAUM_DACHBODEN = '2' self.RAUM_FLUR = '3' self.RAUM_SCHLAFZIMMER = '4' self.RAUM_KELLER = '5' self.RAUM_GARTEN = '6' self.RAUM_DACH = '7' self.fehler = '' parser = WorldParser.WorldParser(self) parser.parseWorld('world.xml')