Double-Jeopardy works in questions

This commit is contained in:
Sebastian Lohff 2013-11-28 20:13:30 +01:00
parent 15e18fb270
commit 324423371f
3 changed files with 28 additions and 7 deletions

18
game.py
View File

@ -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):

View File

@ -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

View File

@ -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