Exemplo n.º 1
0
    def make_movement(self, col: int, name=None):
        """
        Allows to make a movement without a mouse click.
        Inserts a new piece in the specified column and prints the new board.
        """
        assert(col is not None)
        if self.game_data.game_board.is_valid_location(col):
            row: int = self.game_data.game_board.get_next_open_row(col)

            self.game_data.last_move_row.append(row)
            self.game_data.last_move_col.append(col)
            self.game_data.game_board.drop_piece(row, col, self.game_data.turn + 1)

            self.draw()

            bus.emit(
                "piece:drop", PieceDropEvent(self.game_data.game_board.board[row][col])
            )

            self.print_board()

            if self.game_data.game_board.winning_move(self.game_data.turn + 1, row, col):
                print("Game over:", name)
                bus.emit(
                    "game:over", self.renderer, GameOver(False, self.game_data.turn + 1, name)
                )
                self.game_data.game_over = True

            pygame.display.update()

            self.game_data.turn += 1
            self.game_data.turn = self.game_data.turn % 2
Exemplo n.º 2
0
    def update(self):
        """
        Checks the game state, dispatching events as needed.
        """
        if self.game_data.game_board.tie_move():
            bus.emit("game:over", GameOver(was_tie=True))

            self.game_data.game_over = True
Exemplo n.º 3
0
    def update(self):
        """
        Checks the game state, dispatching events as needed.
        """
        if self.game_data.game_board.tie_move():
            bus.emit("game:over", self.renderer, GameOver(was_tie=True))

            self.game_data.game_over = True

        if self.game_data.game_over:
            print(os.getpid())
            pygame.time.wait(1000)
Exemplo n.º 4
0
    def update(self):
        """
        Checks the game state, dispatching events as needed.
        """
        if self.game_data.game_board.tie_move():
            bus.emit("game:over", GameOver(was_tie=True))

            self.game_data.game_over = True

        if self.game_data.game_over:
            print(os.getpid())
            pygame.time.wait(3000)
            os.system("kill " + str(os.getpid()))
            os.system("./restart.sh")
Exemplo n.º 5
0
    def mouse_click(self, event: MouseClickEvent):
        """
        Handles a mouse click event.
        :param event: Data about the mouse click
        """
        pygame.draw.rect(
            self.renderer.screen,
            black,
            (0, 0, self.game_data.width, self.game_data.sq_size),
        )

        col: int = int(math.floor(event.posx / self.game_data.sq_size))

        if self.game_data.game_board.is_valid_location(col):
            row: int = self.game_data.game_board.get_next_open_row(col)

            self.game_data.last_move_row.append(row)
            self.game_data.last_move_col.append(col)
            self.game_data.game_board.drop_piece(row, col,
                                                 self.game_data.turn + 1)

            self.draw()

            bus.emit("piece:drop",
                     PieceDropEvent(self.game_data.game_board.board[row][col]))

        self.print_board()

        if self.game_data.game_board.winning_move(self.game_data.turn + 1):
            bus.emit("game:over", self.renderer,
                     GameOver(False, self.game_data.turn + 1))
            self.game_data.game_over = True

        pygame.display.update()

        self.game_data.turn += 1
        self.game_data.turn = self.game_data.turn % 2