Exemple #1
0
    def __init__(self):
        super(FinalJeopardyBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        text = clutter.Text(config.admin_font_header, "FINAL JEOPARDY")
        self.add(text)

        self.players = game.get_players()
        for player in self.players:
            text = clutter.Text(
                config.admin_font,
                'Player %s ($%d) wager:' % (player.name, player.score))
            text.set_color('white')
            self.add(text)

            wager = clutter.Text(config.admin_font, "0")
            wager.set_color('white')
            wager.player = player
            wager.value = 0
            wager.set_activatable(True)
            wager.set_reactive(True)
            wager.set_editable(True)
            wager.connect('activate', lambda actor: self.set_wager(actor))
            self.add(wager)
            layout.set_fill(wager, True, False)

            correct = clutter.Text(config.admin_font, "CORRECT")
            correct.set_color('green')
            correct.player = player
            correct.wager = wager
            correct.set_reactive(True)
            correct.connect('button-release-event',
                            lambda actor, event: self.correct(actor))
            self.add(correct)
            layout.set_fill(correct, True, False)

            wrong = clutter.Text(config.admin_font, "WRONG")
            wrong.set_color('red')
            wrong.player = player
            wrong.wager = wager
            wrong.set_reactive(True)
            wrong.connect('button-release-event',
                          lambda actor, event: self.wrong(actor))
            self.add(wrong)
            layout.set_fill(wrong, True, False)
Exemple #2
0
    def __init__(self):
        super(FinalJeopardyBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        text = clutter.Text(config.admin_font_header, "FINAL JEOPARDY")
        self.add(text)

        self.players = game.get_players()
        for player in self.players:
            text = clutter.Text(config.admin_font, 'Player %s ($%d) wager:' % (player.name,
                                                                               player.score))
            text.set_color('white')
            self.add(text)

            wager = clutter.Text(config.admin_font, "0")
            wager.set_color('white')
            wager.player = player
            wager.value = 0
            wager.set_activatable(True)
            wager.set_reactive(True)
            wager.set_editable(True)
            wager.connect('activate',
                lambda actor: self.set_wager(actor))
            self.add(wager)
            layout.set_fill(wager, True, False)

            correct = clutter.Text(config.admin_font, "CORRECT")
            correct.set_color('green')
            correct.player = player
            correct.wager = wager
            correct.set_reactive(True)
            correct.connect('button-release-event',
                            lambda actor, event: self.correct(actor))
            self.add(correct)
            layout.set_fill(correct, True, False)

            wrong = clutter.Text(config.admin_font, "WRONG")
            wrong.set_color('red')
            wrong.player = player
            wrong.wager = wager
            wrong.set_reactive(True)
            wrong.connect('button-release-event',
                          lambda actor, event: self.wrong(actor))
            self.add(wrong)
            layout.set_fill(wrong, True, False)
Exemple #3
0
    def __init__(self):
        super(PlayerScoreBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        self.players = game.get_players()

        self.scores = []
        for player in self.players:
            text = clutter.Text(config.admin_font,
                                'Player %s score:' % player.name)
            text.set_color('white')
            self.add(text)

            score = clutter.Text(config.admin_font, "%d" % player.score)
            score.set_color('white')
            score.player = player
            self.scores.append(score)
            score.set_activatable(True)
            score.set_reactive(True)
            score.set_editable(True)
            score.connect('activate', lambda actor: self.set_score(actor))
            self.add(score)
            layout.set_fill(score, True, False)

        text = clutter.Text(config.admin_font_header, "DRINKS")
        self.add(text)
        for player in self.players:
            drink = clutter.Text(config.admin_font,
                                 'Player %s Drink' % player.name)
            drink.player = player
            drink.set_color('white')
            drink.set_reactive(True)
            drink.connect('button-release-event',
                          lambda actor, event: self.drink(actor.player))
            self.add(drink)
Exemple #4
0
    def __init__(self):
        super(PlayerScoreBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        self.players = game.get_players()

        self.scores = []
        for player in self.players:
            text = clutter.Text(config.admin_font, 'Player %s score:' % player.name)
            text.set_color('white')
            self.add(text)

            score = clutter.Text(config.admin_font, "%d" % player.score)
            score.set_color('white')
            score.player = player
            self.scores.append(score)
            score.set_activatable(True)
            score.set_reactive(True)
            score.set_editable(True)
            score.connect('activate',
                lambda actor: self.set_score(actor))
            self.add(score)
            layout.set_fill(score, True, False)

        text = clutter.Text(config.admin_font_header, "DRINKS")
        self.add(text)
        for player in self.players:
            drink = clutter.Text(config.admin_font, 'Player %s Drink' % player.name)
            drink.player = player
            drink.set_color('white')
            drink.set_reactive(True)
            drink.connect('button-release-event',
                lambda actor, event: self.drink(actor.player))
            self.add(drink)
Exemple #5
0
    def __init__(self):
        super(ClueBox,
              self).__init__(clutter.FlowLayout(clutter.FLOW_VERTICAL))
        layout = self.get_layout_manager()
        layout.set_column_spacing(10)
        layout.set_row_spacing(10)
        self.set_color(config.background_color)

        # Add clue answer and question.
        clue_box = clutter.Box(clutter.BoxLayout())
        self.add(clue_box)
        clue_layout = clue_box.get_layout_manager()
        clue_layout.set_vertical(True)

        clue = game.get_selected_clue()
        text = clutter.Text(config.admin_font_header, "CLUE")
        text.set_color('white')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Answer\n%s" % clue.answer)
        text.set_color('green')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Question\n%s" % clue.question)
        text.set_color('red')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)

        # Add player buzz in information.
        buzz_box = clutter.Box(clutter.BoxLayout())
        self.add(buzz_box)
        buzz_layout = buzz_box.get_layout_manager()
        buzz_layout.set_vertical(True)
        text = clutter.Text(config.admin_font_header, 'PLAYER BUZZES')
        buzz_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        self.players = []
        for player in game.get_players():
            text = clutter.Text(config.admin_font, "Player %s" % player.name)
            text.set_color('white')
            text.player = player
            self.players.append(text)
            buzz_layout.pack(text, False, False, False,
                             clutter.BOX_ALIGNMENT_START,
                             clutter.BOX_ALIGNMENT_CENTER)

        if game.selected_clue.is_daily_double():
            dd_box = clutter.Box(clutter.BoxLayout())
            self.add(dd_box)
            dd_layout = dd_box.get_layout_manager()
            dd_layout.set_vertical(True)
            for player in game.get_players():
                text = clutter.Text(config.admin_font,
                                    "Player %s" % player.name)
                text.set_color('white')
                text.player = player
                text.set_reactive(True)
                text.connect('button-release-event',
                             lambda actor, event: self.choose_team(actor))
                dd_box.add(text)
            text = clutter.Text(config.admin_font, 'Daily Double Wager:')
            text.set_color('white')
            dd_box.add(text)
            self.wager = clutter.Text(config.admin_font, '0')
            self.wager.set_color('white')
            self.wager.set_reactive(True)
            self.wager.set_editable(True)
            self.wager.connect(
                'text-changed',
                lambda actor: game.set_daily_double_wager(self.get_wager()))
            dd_box.add(self.wager)
            dd_layout.set_fill(self.wager, True, False)
Exemple #6
0
    def __init__(self):
        super(ClueBox, self).__init__(clutter.FlowLayout(clutter.FLOW_VERTICAL))
        layout = self.get_layout_manager()
        layout.set_column_spacing(10)
        layout.set_row_spacing(10)
        self.set_color(config.background_color)

        # Add clue answer and question.
        clue_box = clutter.Box(clutter.BoxLayout())
        self.add(clue_box)
        clue_layout = clue_box.get_layout_manager()
        clue_layout.set_vertical(True)

        clue = game.get_selected_clue()
        text = clutter.Text(config.admin_font_header, "CLUE")
        text.set_color('white')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Answer\n%s" % clue.answer)
        text.set_color('green')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Question\n%s" % clue.question)
        text.set_color('red')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)

        # Add player buzz in information.
        buzz_box = clutter.Box(clutter.BoxLayout())
        self.add(buzz_box)
        buzz_layout = buzz_box.get_layout_manager()
        buzz_layout.set_vertical(True)
        text = clutter.Text(config.admin_font_header, 'PLAYER BUZZES')
        buzz_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        self.players = []
        for player in game.get_players():
            text = clutter.Text(config.admin_font, "Player %s" % player.name)
            text.set_color('white')
            text.player = player
            self.players.append(text)
            buzz_layout.pack(text, False, False, False,
                             clutter.BOX_ALIGNMENT_START,
                             clutter.BOX_ALIGNMENT_CENTER)

        if game.selected_clue.is_daily_double():
            dd_box = clutter.Box(clutter.BoxLayout())
            self.add(dd_box)
            dd_layout = dd_box.get_layout_manager()
            dd_layout.set_vertical(True)
            for player in game.get_players():
                text = clutter.Text(config.admin_font, "Player %s" % player.name)
                text.set_color('white')
                text.player = player
                text.set_reactive(True)
                text.connect('button-release-event',
                             lambda actor, event: self.choose_team(actor))
                dd_box.add(text)
            text = clutter.Text(config.admin_font, 'Daily Double Wager:')
            text.set_color('white')
            dd_box.add(text)
            self.wager = clutter.Text(config.admin_font, '0')
            self.wager.set_color('white')
            self.wager.set_reactive(True)
            self.wager.set_editable(True)
            self.wager.connect('text-changed',
                lambda actor: game.set_daily_double_wager(self.get_wager()))
            dd_box.add(self.wager)
            dd_layout.set_fill(self.wager, True, False)
Exemple #7
0
    def __init__(self):
        super(GUI, self).__init__()

        logging.info('Initializing game gui.')

        self.admin = Admin()

        self.gui_state = self.SHOW_GAME_BOARD

        # Set the stage background to grey.
        self.set_color(config.stage_background_color)

        # Connect callback listeners
        logging.info('Setting up game stage signals.')
        self.connect('destroy', clutter.main_quit)
        self.connect('key-press-event', self.on_press)
        self.connect('button-release-event', self.on_click)
        self.connect('allocation-changed', self.on_allocation_changed)

        self.board_box = clutter.Box(clutter.BoxLayout())
        board_box_layout = self.board_box.get_layout_manager()

        # Instantiate the game board which is the collection of squares to show
        # on screen.
        self.game_board = GameBoard()
        board_box_layout.pack(self.game_board, True, True, True,
                              clutter.BOX_ALIGNMENT_CENTER,
                              clutter.BOX_ALIGNMENT_CENTER)

        # Determine whether or not to display player scores.
        self.player_score_box = None
        if config.display_player_scores:
            self.player_score_box = PlayerScoreBox(game.get_players())
            self.player_score_box.set_width(0.1 * self.get_width())
            if config.player_scores_position == 'east':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(True)
                board_box_layout.pack(self.player_score_box, True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            if config.player_scores_position == 'south':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(False)
                board_box_layout.pack(self.player_score_box, True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            else:
                self.board_box.add(self.player_score_box)

        # Add the box with the board in it to the screen.
        self.add(self.board_box)

        # Overlay box for displaying clue information and answers
        self.clue_overlay = ClueOverlay()
        self.clue_overlay.set_size(self.get_width(), self.get_height())
        self.add(self.clue_overlay)
        self.clue_overlay.set_opacity(0)

        # Overlay box for display category information.
        self.category_overlay = CategoryOverlay()
        self.category_overlay.set_size(self.get_width(), self.get_height())

        # Overlay box for displaying which player buzzed in.
        self.player_buzz_overlay = PlayerBuzzOverlay()
        self.player_buzz_overlay.set_size(self.get_width(), self.get_height())
        self.player_buzz_overlay.set_opacity(0)
        self.add(self.player_buzz_overlay)

        # Overlay box for displaying player score.
        self.player_score_overlay = PlayerScoreOverlay()
        self.player_score_overlay.set_size(self.get_width(), self.get_height())
        self.player_score_overlay.set_opacity(0)
        self.add(self.player_score_overlay)

        # Overlay box for daily double.
        self.daily_double_overlay = DailyDoubleOverlay()
        self.daily_double_overlay.set_size(self.get_width(), self.get_height())
        self.daily_double_overlay.set_opacity(0)
        self.add(self.daily_double_overlay)

        # Overlay box for final round.
        self.final_round_overlay = FinalRoundOverlay()
        self.final_round_overlay.set_size(self.get_width(), self.get_height())
        self.final_round_overlay.set_opacity(0)
        self.add(self.final_round_overlay)

        # Overlay box for displaying all player scores.
        self.all_player_scores_overlay = AllPlayerScoresOverlay()
        self.all_player_scores_overlay.set_size(self.get_width(),
                                                self.get_height())
        self.all_player_scores_overlay.set_opacity(0)
        self.add(self.all_player_scores_overlay)

        self.flashing_scores = False

        # Set a default stage size.
        self.set_fullscreen(False)
        self.set_size(800, 600)
        self.set_user_resizable(True)

        self.show()
Exemple #8
0
    def __init__(self):
        super(GUI, self).__init__()

        logging.info('Initializing game gui.')

        self.admin = Admin()

        self.gui_state = self.SHOW_GAME_BOARD

        # Set the stage background to grey.
        self.set_color(config.stage_background_color)

        # Connect callback listeners
        logging.info('Setting up game stage signals.')
        self.connect('destroy', clutter.main_quit)
        self.connect('key-press-event', self.on_press)
        self.connect('button-release-event', self.on_click)
        self.connect('allocation-changed', self.on_allocation_changed)

        self.board_box = clutter.Box(clutter.BoxLayout())
        board_box_layout = self.board_box.get_layout_manager()

        # Instantiate the game board which is the collection of squares to show
        # on screen.
        self.game_board = GameBoard()
        board_box_layout.pack(self.game_board,
                              True, True, True,
                              clutter.BOX_ALIGNMENT_CENTER,
                              clutter.BOX_ALIGNMENT_CENTER)

        # Determine whether or not to display player scores.
        self.player_score_box = None
        if config.display_player_scores:
            self.player_score_box = PlayerScoreBox(game.get_players())
            self.player_score_box.set_width(0.1 * self.get_width())
            if config.player_scores_position == 'east':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(True)
                board_box_layout.pack(self.player_score_box,
                                      True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            if config.player_scores_position == 'south':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(False)
                board_box_layout.pack(self.player_score_box,
                                      True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            else:
                self.board_box.add(self.player_score_box)

        # Add the box with the board in it to the screen.
        self.add(self.board_box)

        # Overlay box for displaying clue information and answers
        self.clue_overlay = ClueOverlay()
        self.clue_overlay.set_size(self.get_width(), self.get_height())
        self.add(self.clue_overlay)
        self.clue_overlay.set_opacity(0)

        # Overlay box for display category information.
        self.category_overlay = CategoryOverlay()
        self.category_overlay.set_size(self.get_width(),
                                       self.get_height())

        # Overlay box for displaying which player buzzed in.
        self.player_buzz_overlay = PlayerBuzzOverlay()
        self.player_buzz_overlay.set_size(self.get_width(),
                                          self.get_height())
        self.player_buzz_overlay.set_opacity(0)
        self.add(self.player_buzz_overlay)

        # Overlay box for displaying player score.
        self.player_score_overlay = PlayerScoreOverlay()
        self.player_score_overlay.set_size(self.get_width(),
                                          self.get_height())
        self.player_score_overlay.set_opacity(0)
        self.add(self.player_score_overlay)

        # Overlay box for daily double.
        self.daily_double_overlay = DailyDoubleOverlay()
        self.daily_double_overlay.set_size(self.get_width(),
                                           self.get_height())
        self.daily_double_overlay.set_opacity(0)
        self.add(self.daily_double_overlay)

        # Overlay box for final round.
        self.final_round_overlay = FinalRoundOverlay()
        self.final_round_overlay.set_size(self.get_width(),
                                          self.get_height())
        self.final_round_overlay.set_opacity(0)
        self.add(self.final_round_overlay)

        # Overlay box for displaying all player scores.
        self.all_player_scores_overlay = AllPlayerScoresOverlay()
        self.all_player_scores_overlay.set_size(self.get_width(),
                                          self.get_height())
        self.all_player_scores_overlay.set_opacity(0)
        self.add(self.all_player_scores_overlay)

        self.flashing_scores = False

        # Set a default stage size.
        self.set_fullscreen(False)
        self.set_size(800, 600)
        self.set_user_resizable(True)

        self.show()