Mercurial > libervia-backend
annotate frontends/src/wix/quiz_game.py @ 853:c2f6ada7858f
core (sqlite): automatic database update:
- new Updater class check database consistency (by calculating a hash on the .schema), and updates base if necessary
- database now has a version (1 for current, 0 will be for 0.3's database), for each change this version will be increased
- creation statements and update statements are in the form of dict of dict with tuples. There is a help text at the top of the module to explain how it works
- if we are on a development version, the updater try to update the database automaticaly (without deleting table or columns). The Updater.generateUpdateData method can be used to ease the creation of update data (i.e. the dictionary at the top, see the one for the key 1 for an example).
- if there is an inconsistency, an exception is raised, and a message indicate the SQL statements that should fix the situation.
- well... this is rather complicated, a KISS method would maybe have been better. The future will say if we need to simplify it :-/
- new DatabaseError exception
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 23 Feb 2014 23:30:32 +0100 |
parents | 1fe00f0c9a91 |
children | 5a6354ff468c |
rev | line source |
---|---|
361 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
4 # wix: a SAT frontend |
811 | 5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson (goffi@goffi.org) |
361 | 6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
10 # (at your option) any later version. |
361 | 11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
15 # GNU Affero General Public License for more details. |
361 | 16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
588
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
361 | 19 |
20 | |
21 | |
771 | 22 from sat.core.i18n import _ |
361 | 23 import wx |
24 import os.path, glob | |
25 import pdb | |
26 from logging import debug, info, error | |
27 from sat.tools.jid import JID | |
28 from time import time | |
29 from math import sin, cos, pi | |
30 | |
31 CARD_WIDTH = 74 | |
32 CARD_HEIGHT = 136 | |
33 WIDTH = 800 | |
34 HEIGHT = 600 | |
35 | |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
36 class GraphicElement(object): |
361 | 37 """This class is used to represent a card, graphically and logically""" |
38 | |
39 def __init__(self, file, x=0, y=0, zindex=10, transparent=True): | |
40 """ Image used to build the game visual | |
41 @param file: path of the PNG file | |
42 @param zindex: layer of the element (0=background; the bigger, the more in the foreground)""" | |
43 self.bitmap = wx.Image(file).ConvertToBitmap() | |
44 self.x = x | |
45 self.y = y | |
46 self.zindex = zindex | |
47 self.transparent = transparent | |
48 | |
49 def __cmp__(self, other): | |
50 return self.zindex.__cmp__(other.zindex) | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
51 |
361 | 52 def draw(self, dc, x=None, y=None): |
53 """Draw the card on the device context | |
54 @param dc: device context | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
55 @param x: abscissa |
361 | 56 @param y: ordinate""" |
57 dc.DrawBitmap(self.bitmap, x or self.x, y or self.y, self.transparent) | |
58 | |
59 class BaseWindow(wx.Window): | |
60 """This is the panel where the game is drawed, under the other widgets""" | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
61 |
361 | 62 def __init__(self, parent): |
63 wx.Window.__init__(self, parent, pos=(0,0), size=(WIDTH, HEIGHT)) | |
64 self.parent = parent | |
65 self.SetMinSize(wx.Size(WIDTH, HEIGHT)) | |
66 self.Bind(wx.EVT_PAINT, self.onPaint) | |
67 self.graphic_elts = {} | |
368 | 68 self.loadImages(os.path.join(parent.parent.host.media_dir, 'games/quiz/')) |
361 | 69 |
70 def loadImages(self, dir): | |
71 """Load all the images needed for the game | |
72 @param dir: directory where the PNG files are""" | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
73 x_player = 24 |
368 | 74 for name, sub_dir, filename, x, y, zindex, transparent in [("background", "background", "blue_background.png", 0, 0, 0, False), |
75 ("joueur0", "characters", "zombie.png", x_player+0*184, 170, 5, True), | |
76 ("joueur1", "characters", "nerd.png", x_player+1*184, 170, 5, True), | |
77 ("joueur2", "characters", "zombie.png", x_player+2*184, 170, 5, True), | |
78 ("joueur3", "characters", "zombie.png", x_player+3*184, 170, 5, True), | |
361 | 79 ("foreground", "foreground", "foreground.png", 0, 0, 10, True)]: |
80 self.graphic_elts[name] = GraphicElement(os.path.join(dir, sub_dir, filename), x = x, y = y, zindex=zindex, transparent=transparent) | |
81 | |
368 | 82 self.right_image = wx.Image(os.path.join(dir, "foreground", "right.png")).ConvertToBitmap() |
83 self.wrong_image = wx.Image(os.path.join(dir, "foreground", "wrong.png")).ConvertToBitmap() | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
84 |
361 | 85 def fullPaint(self, device_context): |
86 """Paint all the game on the given dc | |
87 @param device_context: wx.DC""" | |
88 elements = self.graphic_elts.values() | |
89 elements.sort() | |
90 for elem in elements: | |
91 elem.draw(device_context) | |
92 | |
93 _font = wx.Font(65, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) | |
94 device_context.SetFont(_font) | |
95 device_context.SetTextForeground(wx.BLACK) | |
96 | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
97 for i in range(4): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
98 answer = self.parent.players_data[i]["answer"] |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
99 score = self.parent.players_data[i]["score"] |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
100 if answer == None: |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
101 device_context.DrawText("%d" % score, 100 + i*184, 355) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
102 else: |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
103 device_context.DrawBitmap(self.right_image if answer else self.wrong_image, 39+i*184, 348, True) |
361 | 104 |
105 | |
106 if self.parent.time_origin: | |
107 device_context.SetPen(wx.BLACK_PEN) | |
108 radius = 20 | |
109 center_x = 760 | |
110 center_y = 147 | |
111 origin = self.parent.time_origin | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
112 current = self.parent.time_pause or time() |
361 | 113 limit = self.parent.time_limit |
114 total = limit - origin | |
115 left = self.parent.time_left = max(0,limit - current) | |
116 device_context.SetBrush(wx.RED_BRUSH if left/total < 1/4.0 else wx.WHITE_BRUSH) | |
117 if left: | |
118 #we now draw the timer | |
119 angle = ((-2*pi)*((total-left)/total) + (pi/2)) | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
120 x = center_x + radius * cos(angle) |
361 | 121 y = center_y - radius * sin(angle) |
122 device_context.DrawArc(center_x, center_y-radius, x, y, center_x, center_y) | |
123 | |
124 def onPaint(self, event): | |
125 dc = wx.PaintDC(self) | |
126 self.fullPaint(dc) | |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
127 |
361 | 128 |
129 | |
130 class QuizPanel(wx.Panel): | |
131 """This class is used to display the quiz game""" | |
132 | |
133 def __init__(self, parent, referee, players, player_nick): | |
134 wx.Panel.__init__(self, parent) | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
135 self.referee = referee |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
136 self.player_nick = player_nick |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
137 self.players = players |
361 | 138 self.time_origin = None #set to unix time when the timer start |
139 self.time_limit = None | |
140 self.time_left = None | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
141 self.time_pause = None |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
142 self.last_answer = None |
361 | 143 self.parent = parent |
144 self.SetMinSize(wx.Size(WIDTH, HEIGHT)) | |
145 self.SetSize(wx.Size(WIDTH, HEIGHT)) | |
146 self.base = BaseWindow(self) | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
147 self.question = wx.TextCtrl(self, -1, pos=(168,17), size=(613, 94), style=wx.TE_MULTILINE | wx.TE_READONLY) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
148 self.answer = wx.TextCtrl(self, -1, pos=(410,569), size=(342, 21), style=wx.TE_PROCESS_ENTER) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
149 self.players_data = [{}, {}, {}, {}] |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
150 for i in range(4): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
151 self.players_data[i]['bubble'] = wx.TextCtrl(self, -1, pos=(39+i*184, 120), size=(180, 56), style=wx.TE_MULTILINE | wx.TE_READONLY) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
152 self.players_data[i]['bubble'].Hide() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
153 self.players_data[i]['answer'] = None #True if the player gave a good answer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
154 self.players_data[i]['score'] = 0 |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
155 self.answer.Bind(wx.EVT_TEXT_ENTER, self.answered) |
680
8281587eb528
primitivus, wix: fixed bridge methods calls for plugins radiocol and card game
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
156 self.parent.host.bridge.quizGameReady(player_nick, referee, self.parent.host.profile) |
361 | 157 self.state = None |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
158 |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
159 def answered(self, event): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
160 """Called when the player gave an answer in the box""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
161 self.last_answer = self.answer.GetValue() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
162 self.answer.Clear() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
163 if self.last_answer: |
680
8281587eb528
primitivus, wix: fixed bridge methods calls for plugins radiocol and card game
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
164 self.parent.host.bridge.quizGameAnswer(self.player_nick, self.referee, self.last_answer, self.parent.host.profile) |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
165 |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
166 def quizGameTimerExpired(self): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
167 """Called when nobody answered the question in time""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
168 self.question.SetValue(_(u"Quel dommage, personne n'a trouvé la réponse\n\nAttention, la prochaine question arrive...")) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
169 |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
170 def quizGameTimerRestarted(self, time_left): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
171 """Called when nobody answered the question in time""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
172 timer_orig = self.time_limit - self.time_origin |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
173 self.time_left = time_left |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
174 self.time_limit = time() + time_left |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
175 self.time_origin = self.time_limit - timer_orig |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
176 self.time_pause = None |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
177 self.__timer_refresh() |
361 | 178 |
179 def startTimer(self, timer=60): | |
180 """Start the timer to answer the question""" | |
181 self.time_left = timer | |
182 self.time_origin = time() | |
183 self.time_limit = self.time_origin + timer | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
184 self.time_pause = None |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
185 self.__timer_refresh() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
186 |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
187 def __timer_refresh(self): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
188 self.Refresh() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
189 if self.time_left: |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
190 wx.CallLater(1000, self.__timer_refresh) |
361 | 191 |
192 def quizGameNew(self, data): | |
193 """Start a new game, with given hand""" | |
194 if data.has_key('instructions'): | |
195 self.question.ChangeValue(data['instructions']) | |
196 self.Refresh() | |
197 | |
198 def quizGameQuestion(self, question_id, question, timer): | |
199 """Called when a new question is available | |
200 @param question: question to ask""" | |
201 self.question.ChangeValue(question) | |
202 self.startTimer(timer) | |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
203 self.last_answer = None |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
204 self.answer.Clear() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
205 |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
206 def quizGamePlayerBuzzed(self, player, pause): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
207 """Called when the player pushed the buzzer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
208 @param player: player who pushed the buzzer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
209 @param pause: should we stop the timer ?""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
210 if pause: |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
211 self.time_pause = time() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
212 |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
213 def quizGamePlayerSays(self, player, text, delay): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
214 """Called when the player says something |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
215 @param player: who is talking |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
216 @param text: what the player says""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
217 if player != self.player_nick and self.last_answer: |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
218 #if we are not the player talking, and we have an answer, that mean that our answer has not been validated |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
219 #we can put it again in the answering box |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
220 self.answer.SetValue(self.last_answer) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
221 idx = self.players.index(player) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
222 bubble = self.players_data[idx]['bubble'] |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
223 bubble.SetValue(text) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
224 bubble.Show() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
225 self.Refresh() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
226 wx.CallLater(delay * 1000, bubble.Hide) |
361 | 227 |
362
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
228 def quizGameAnswerResult(self, player, good_answer, score): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
229 """Result of the just given answer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
230 @param player: who gave the answer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
231 @good_answer: True if the answer is right |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
232 @score: dict of score""" |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
233 player_idx = self.players.index(player) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
234 self.players_data[player_idx]['answer'] = good_answer |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
235 for _player in score: |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
236 _idx = self.players.index(_player) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
237 self.players_data[_idx]['score'] = score[_player] |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
238 def removeAnswer(): |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
239 self.players_data[player_idx]['answer'] = None |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
240 self.Refresh() |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
241 wx.CallLater(2000, removeAnswer) |
208107419b17
Quiz game: buzzer, timer, answer management
Goffi <goffi@goffi.org>
parents:
361
diff
changeset
|
242 self.Refresh() |