#!/usr/bin/python from __future__ import print_function import argparse import yaml import sys from PySide import QtGui, QtCore from music import MusicBox from question import Questions from gamestate import GameState from game import SeopardyGame from config import check_config def _parser(): parser = argparse.ArgumentParser(description="Sebas jeopardy/beopardy clone") parser.add_argument("--gamestate", action="store", default=None, help="Gamestate to load to recover a crashed game") parser.add_argument("--conf", action="store", default="seopardy.conf", help="Path to config file") parser.add_argument("questions", action="store", help="Path to questionfile") return parser if __name__ == '__main__': parser = _parser() args = parser.parse_args() questions = Questions(args.questions) # start gui app = QtGui.QApplication([sys.argv[0]]) QtCore.QCoreApplication.setApplicationName("Seopardy") # check and load config file config = None try: config = yaml.safe_load(open(args.conf)) except IOError as e: print("Error: Could not load config: %s" % (str(e),), file=sys.stderr) sys.exit(1) except yaml.scanner.ScannerError as e: print("Error: Could not parse config file: %s" % (str(e),), file=sys.stderr) sys.exit(1) check_config(config) # create or load gamestate gamestate = None if args.gamestate: sstream = None try: sstream = open(args.gamestate, "r") except IOError as e: print("Error: Could not load gamestate: %s" % (str(e),), file=sys.stderr) sys.exit(1) gamestate = GameState.load(sstream, config["savedir"]) else: gamestate = GameState(config["savedir"]) # init music box MusicBox.init() for name, path in config["music"].iteritems(): if path: if not MusicBox.add_music(name, path): print("Error: Could not load music %s (file %s)" % (name, path), file=sys.stderr) sys.exit(1) # create board board = SeopardyGame(questions, gamestate) board.show() app.exec_() sys.exit()