# Murder in the Park - A Robotic Mystery # Copyright (C) 2008 Jeffrey Armstrong (a.k.a. PrintStar) # http://jeff.rainbow-100.com/ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # A full version of the license terms is available in LICENSE. import sys import curses import textwrap from gamecmd import * class FakeStdIO(object): def __init__(self,stdscr): self.stdscr = stdscr def write(self, str): height,width = self.stdscr.getmaxyx() if len(str) >= width: for line in textwrap.wrap(str,width-2): self.stdscr.addstr(line) self.stdscr.addstr("\n") else: self.stdscr.addstr(str) self.stdscr.refresh() def readline(self): temp = self.stdscr.getstr() if len(temp)==0: temp = ' ' return temp def launch(cmdparser): stdscr = curses.initscr() curses.cbreak() #curses.noecho() curses.echo() stdscr.keypad(1) stdscr.scrollok(True) stdscr.clear() stdscr.refresh() try: # Run your code here io = FakeStdIO(stdscr) sys.stdin = io sys.stdout = io cmdparser.stdout = io cmdparser.stdin = io cmdparser.cmdloop() finally: curses.nocbreak() stdscr.keypad(0) curses.echo() curses.endwin()