From 324423371f0716765b1214d5691677be19621985 Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Thu, 28 Nov 2013 20:13:30 +0100 Subject: [PATCH] Double-Jeopardy works in questions --- game.py | 18 +++++++++++++----- gamestate.py | 9 ++++++++- windows.py | 8 +++++++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/game.py b/game.py index fd39ca0..040cbc5 100644 --- a/game.py +++ b/game.py @@ -151,13 +151,13 @@ class SeopardyGame(QtGui.QWidget): wasAnswered = (answers is not None and answers.is_answered()) question = self.questions.get_question(section, number) + dj = None if not wasAnswered and question["Double-Jeopardy"]: - print("maunz") - dwin = DoubleJeopardyWindow(self.players, number*100, self.currentPlayer, parent=self) dwin.exec_() + dj = (dwin.get_player(), dwin.get_chosen_points()) - qwin = QuestionWindow(self.players, section, number, question, answers, self) + qwin = QuestionWindow(self.players, section, number, question, answers, dj, self) qwin.showFullScreen() qwin.exec_() @@ -177,13 +177,21 @@ class SeopardyGame(QtGui.QWidget): self._restyle_button(section, number, answers) def _set_player_points(self, answers, rollback=False): - for player, correct in answers.get_tries(): + for i, (player, correct) in enumerate(answers.get_tries()): prefix = 1 if rollback: prefix *= -1 if not correct: prefix *= -1 - player.add_points(answers.points()*prefix) + + points = 0 + print(i, answers.get_dj_points()) + if i == 0 and answers.get_dj_points() is not None: + points = answers.get_dj_points() + else: + points = answers.points() + + player.add_points(prefix*points) def _restyle_button(self, sec, qno, answers): diff --git a/gamestate.py b/gamestate.py index 7ae51a9..eba2a49 100644 --- a/gamestate.py +++ b/gamestate.py @@ -38,13 +38,17 @@ class GameState(object): pass class QuestionAnswers(object): - def __init__(self, section, qnumber): + def __init__(self, section, qnumber, dj_points=None): self.section = section self.qnumber = qnumber self.nobody_answered = False + self.dj_points = dj_points self.tries = [] + def set_dj_points(self, points): + self.dj_points = points + def add_try(self, player, correct): self.tries.append((player, correct)) @@ -57,6 +61,9 @@ class QuestionAnswers(object): def points(self): return self.qnumber*100 + def get_dj_points(self): + return self.dj_points + def nobody_knew(self): self.nobody_answered = True diff --git a/windows.py b/windows.py index af8bd6e..0011e4d 100644 --- a/windows.py +++ b/windows.py @@ -6,7 +6,7 @@ from gamestate import QuestionAnswers from player import Player, ButtonEvent, nobodyColor class QuestionWindow(QtGui.QDialog): - def __init__(self, players, section, qnumber, question, answers=None, parent=None): + def __init__(self, players, section, qnumber, question, answers=None, dj=None, parent=None): super(QuestionWindow, self).__init__(parent) self.players = players @@ -18,6 +18,12 @@ class QuestionWindow(QtGui.QDialog): else: self.answers = QuestionAnswers(self.section, self.qnumber) + self.dj = dj + if self.dj and not self.answers.is_answered(): + self.answers.set_dj_points(self.dj[1]) + playerNo = self.players.index(self.dj[0])+1 + QtCore.QCoreApplication.postEvent(self, ButtonEvent(playerNo)) + self._setupGui() self.setWindowTitle("Seopardy - %s - %d" % (section, qnumber*100)) self._inWindow = False