Files
pytomb/tomb.py

156 lines
4.1 KiB
Python
Executable File

#!/usr/bin/python3
# Hauptprogramm - Eingabeschleife und Dispatching
import World
import ActionModul
import TestModule
import signal
import sys
import logging
import curses
from curses import wrapper
def verarbeiteBefehl(parsedCommand):
id = parsedCommand.key
logging.debug(' Befehlkey: ' + id)
if id == '0':
sys.exit()
elif id == '1':
actionmodul.gehe(parsedCommand)
elif id == '2':
actionmodul.nimm(parsedCommand)
elif id == '3':
actionmodul.untersuche(parsedCommand)
elif id == '4':
actionmodul.benutze(parsedCommand)
elif id == '5':
actionmodul.nord()
elif id == '6':
actionmodul.ost()
elif id == '7':
actionmodul.sued()
elif id == '8':
actionmodul.west()
elif id == '9':
actionmodul.rauf()
elif id == '10':
actionmodul.runter()
elif id == '12':
actionmodul.inventar()
world.waitForCR()
elif id == '13':
actionmodul.about()
elif id == '14':
print('verliere: ' + parsedCommand.gegenstand)
actionmodul.verliere(parsedCommand)
elif id == '15':
actionmodul.warte()
elif id == '17':
actionmodul.ziehe(parsedCommand)
elif id == '19':
actionmodul.stelle(parsedCommand)
elif id == '20':
actionmodul.oeffne(parsedCommand)
elif id == '21':
actionmodul.klettere(parsedCommand)
elif id == '22':
actionmodul.fange(parsedCommand)
elif id == '23':
actionmodul.hilfe(parsedCommand)
elif id == '24':
actionmodul.schlage(parsedCommand)
elif id == '25':
actionmodul.sprich(parsedCommand)
elif id == '26':
actionmodul.leere(parsedCommand)
elif id == '27':
actionmodul.fuelle(parsedCommand)
elif id == '-1':
world.fehler = 'Ich verstehe diesen Befehl nicht'
else:
world.fehler = 'nicht implementierter Befehl'
def handle_SIGINT(sig,frame):
logging.debug("CTRL-C abgefangen")
sys.exit(0)
logging.basicConfig(filename='tomb.log', level=logging.DEBUG)
signal.signal(signal.SIGINT,handle_SIGINT)
world = World.World()
logging.debug('World initialisiert')
actionmodul = ActionModul.ActionModul(world)
def inputLoop(stdscr):
world.stdscr = 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)
commandid = ''
while commandid != '0':
world.printRaum()
actionmodul.clearFehler()
stdscr.addstr(11,0,'Was nun? ')
command = stdscr.getstr(11,10,40).decode(encoding="utf-8")
world.schrittzaehler = world.schrittzaehler +1
command = command.rstrip()
if command.startswith('debug:'):
debugcommand = command.split(':',1)
logging.debug(f'debugcommand: {debugcommand}')
if debugcommand[1] == 'items':
debug_Items()
elif debugcommand[1] == 'inventar':
debug_Inventar()
elif command.startswith('auto:'):
command = command.rstrip()
if command.startswith('auto:'):
debugcommand = command.split(':',1)
logging.debug(f'debugcommand: {debugcommand}')
testmodul = TestModule.TestModule(world)
if(debugcommand[1] == 'truhe'):
testmodul.testOeffneTruhe()
elif debugcommand[1] == 'teich':
testmodul.testTeich()
elif debugcommand[1] == 'ranke':
testmodul.testRanke()
else:
parsedCommand = world.parseInput(command)
commandid = parsedCommand.commandid
verarbeiteBefehl(parsedCommand)
actionmodul.raumaction()
def debug_Items():
logging.debug('liste Items')
logging.debug(world.gegenstaende)
count = 0
for item in world.gegenstaende:
logging.debug(f'count= {count}')
logging.debug(f'Itemtyp: {type(item)}')
# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')
count = count +1
def debug_Inventar():
logging.debug('liste Items')
logging.debug(world.inventar)
count = 0
for item in world.inventar:
logging.debug(f'count= {count}')
logging.debug(f'Itemtyp: {type(item)}')
# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')
count = count +1
def main():
wrapper(inputLoop)
if __name__ == '__main__':
main()