Exemplo n.º 1
0
    def buzz(self, player_index):
        """
        Player buzzer pressed. player_index is 0, 1, or 2
        """

        logging.debug("player index = %s" % player_index)
        logging.debug("buzzer lock keys = %s" % self.buzzer_lockouts)

        if self.state == self.DISPLAY_CLUE:
            # Player buzzed in too early, store their index.
            self.buzzer_lockouts[player_index] = 0
            logging.debug("Locking out player %d" % player_index)
            return

        if self.state != self.AWAIT_BUZZ:
            logging.error("Cannot buzz in, not in AWAIT_BUZZ")
            return

        if player_index in self.buzzed_players:
            logging.error("Cannot buzz in, player already buzzed in")
            return

        if self.buzzer_lockouts.has_key(player_index) and self.buzzer_lockouts[player_index] > time.time():
            logging.debug("Cannot buzz in, locked out for buzzing early")
            return

        logging.debug("Going to AWAIT_ANSWER state")
        # Note this is the current player answering the question
        self.buzzed_player = player_index
        # Light that player's buzzer.
        game_buttons.player_set(player_index, True)
        # Note this player buzzed in so they can't buzz in again
        self.buzzed_players.append(player_index)
        # Update the current timeout start to reflect the number of seconds a
        # player has to resond with a question to the given answer.
        self.timeout_start = time.time()
        # Record the time of the buzz-in for timeout
        if not self.selected_clue.is_daily_double():
            self.flash_player_name = True
        self.state = self.AWAIT_ANSWER
Exemplo n.º 2
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()
Exemplo n.º 3
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()