You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.0 KiB

11 years ago
#!/usr/bin/python
from __future__ import print_function
import argparse
import yaml
11 years ago
import sys
from PySide import QtGui, QtCore
11 years ago
from music import MusicBox
from question import Questions, QuestionException
11 years ago
from gamestate import GameState
from game import SeopardyGame
from config import check_config
11 years ago
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")
11 years ago
parser.add_argument("questions", action="store", help="Path to questionfile")
return parser
if __name__ == '__main__':
parser = _parser()
args = parser.parse_args()
questions = None
try:
questions = Questions(args.questions)
except QuestionException as e:
print(str(e), file=sys.stderr)
sys.exit(1)
11 years ago
# 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
11 years ago
board = SeopardyGame(questions, gamestate)
board.show()
app.exec_()
sys.exit()