Example #1
0
    def incorrect_answer(self):
        """
        Incorrect answer given by player.
        """
        if self.state != self.AWAIT_ANSWER:
            logging.error("Cannot answer, not in AWAIT_ANSWER")
            return

        if self.selected_clue.is_daily_double():
            self.players[self.buzzed_player].adjust_score(-self.wager)
            if self.players[self.buzzed_player].score < 0:
                self.players[self.buzzed_player].set_score(0)
        else:
            self.players[self.buzzed_player].adjust_score(-self.selected_clue.value)
        self.dump_scores()

        # Disable all lit players.
        game_buttons.reset_player_lights()
        # Disable all game buttons
        game_buttons.reset_buttons()

        logging.debug("Incorrect answer, Going to AWAIT_BUZZ state")
        self.state = self.AWAIT_BUZZ
        # Resetting timeout to number of seconds players get to buzz in.
        self.timeout_start = time.time()
        self.buzzer_lockouts = {}
        self.flash_player_score = True
Example #2
0
 def on_tick(self):
     """
     Game tick.
     """
     if self.state == self.AWAIT_BUZZ and not self.selected_clue.is_daily_double():
         # Check the buzz timeout if there is one set.
         if self.timeout_start != None:
             if time.time() - self.timeout_start > config.await_buzz_timeout:
                 self.timeout_beep = True
                 # Disable all lit players.
                 game_buttons.reset_player_lights()
                 self.state = self.DISPLAY_QUESTION
     elif self.state == self.AWAIT_ANSWER and not self.selected_clue.is_daily_double():
         # Check the answer timeout if there is one set.
         if self.timeout_start != None:
             if time.time() - self.timeout_start > config.await_answer_timeout:
                 # Just beep and let host select correct / incorrect
                 self.timeout_beep = True
                 self.timeout_start = None
     # Update the player lights
     game_buttons.send_players()
Example #3
0
    def correct_answer(self):
        """
        Correct answer given by player.
        """
        if self.state != self.AWAIT_ANSWER:
            logging.error("Cannot answer, not in AWAIT_ANSWER")
            return

        if self.selected_clue.is_daily_double():
            self.players[self.buzzed_player].adjust_score(self.wager)
        else:
            self.players[self.buzzed_player].adjust_score(self.selected_clue.value)
        self.dump_scores()

        # Disable all lit players.
        game_buttons.reset_player_lights()
        # Disable all game buttons
        game_buttons.reset_buttons()

        logging.debug("Correct answer, Going to DISPLAY_QUESTION state")
        self.state = self.DISPLAY_QUESTION
        self.flash_player_score = True
Example #4
0
 def on_press(self, actor, event):
     """
     """
     if event.keyval == clutter.keysyms.Escape:
         clutter.main_quit()
     elif event.keyval == clutter.keysyms.a:
         # player A rings in.
         game_buttons.player_set(0, True)
         game.buzz(0)
         self.update()
     elif event.keyval == clutter.keysyms.b:
         # player B rings in.
         game_buttons.player_set(1, True)
         game.buzz(1)
         self.update()
     elif event.keyval == clutter.keysyms.c:
         # player C rings in.
         game_buttons.player_set(2, True)
         game.buzz(2)
         self.update()
     elif event.keyval == clutter.keysyms.space:
         if not self.final_round_overlay.is_playing():
             # We do not allow for incoming space button presses when final
             # round overlay music is playing.
             # multi-purpose bar press
             game.bar()
             self.update()
     elif event.keyval == clutter.keysyms.x:
         # cancel
         game.cancel()
         self.update()
     elif event.keyval == clutter.keysyms.y:
         # correct answer
         game.correct_answer()
         self.update()
     elif event.keyval == clutter.keysyms.n:
         # incorrect answer
         game.incorrect_answer()
         self.update()
     elif event.keyval == clutter.keysyms.z:
         logging.debug('resetting player lights')
         game_buttons.reset_player_lights()
     elif event.keyval == clutter.keysyms.l:
         if self.category_overlay in self.get_children():
             self.category_overlay.animate(
                 clutter.LINEAR, 500, 'x',
                 self.category_overlay.get_x() - self.get_width())
         else:
             self.category_overlay.set_size(self.get_width(),
                                            self.get_height())
             self.category_overlay.set_x(self.get_width())
             self.add(self.category_overlay)
             self.category_overlay.animate(
                 clutter.LINEAR, 500, 'x',
                 self.category_overlay.get_x() - self.get_width())
     elif event.keyval == clutter.keysyms.p:
         # DEBUG - for testing end of round condition without clicking everything.
         # don't leave this active in production code!
         for category in game.categories:
             for clue in category.clues:
                 clue.state = 'selected'
         game.categories[0].clues[0].state = 'unanswered'
     elif event.keyval == clutter.keysyms.f:
         # Fullscreen play area.
         self.set_fullscreen(not self.get_fullscreen())
     elif event.keyval == clutter.keysyms.s:
         self.flash_scores()
Example #5
0
 def on_press(self, actor, event):
     """
     """
     if event.keyval == clutter.keysyms.Escape:
         clutter.main_quit()
     elif event.keyval == clutter.keysyms.a:
         # player A rings in.
         game_buttons.player_set(0, True)
         game.buzz(0)
         self.update()
     elif event.keyval == clutter.keysyms.b:
         # player B rings in.
         game_buttons.player_set(1, True)
         game.buzz(1)
         self.update()
     elif event.keyval == clutter.keysyms.c:
         # player C rings in.
         game_buttons.player_set(2, True)
         game.buzz(2)
         self.update()
     elif event.keyval == clutter.keysyms.space:
         if not self.final_round_overlay.is_playing():
             # We do not allow for incoming space button presses when final
             # round overlay music is playing.
             # multi-purpose bar press
             game.bar()
             self.update()
     elif event.keyval == clutter.keysyms.x:
         # cancel
         game.cancel()
         self.update()
     elif event.keyval == clutter.keysyms.y:
         # correct answer
         game.correct_answer()
         self.update()
     elif event.keyval == clutter.keysyms.n:
         # incorrect answer
         game.incorrect_answer()
         self.update()
     elif event.keyval == clutter.keysyms.z:
         logging.debug('resetting player lights')
         game_buttons.reset_player_lights()
     elif event.keyval == clutter.keysyms.l:
         if self.category_overlay in self.get_children():
             self.category_overlay.animate(clutter.LINEAR,
                                           500,
                                           'x', self.category_overlay.get_x() - self.get_width())
         else:
             self.category_overlay.set_size(self.get_width(),
                                            self.get_height())
             self.category_overlay.set_x(self.get_width())
             self.add(self.category_overlay)
             self.category_overlay.animate(clutter.LINEAR,
                                           500,
                                           'x', self.category_overlay.get_x() - self.get_width())
     elif event.keyval == clutter.keysyms.p:
         # DEBUG - for testing end of round condition without clicking everything.
         # don't leave this active in production code!
         for category in game.categories:
             for clue in category.clues:
                 clue.state = 'selected'
         game.categories[0].clues[0].state = 'unanswered'
     elif event.keyval == clutter.keysyms.f:
         # Fullscreen play area.
         self.set_fullscreen(not self.get_fullscreen())
     elif event.keyval == clutter.keysyms.s:
         self.flash_scores()