コード例 #1
0
ファイル: Button.py プロジェクト: Odin94/ChessPython
    def __init__(self, text, on_click_deferred, on_click_return_value, window_values, surface, hover_animation_surface = None, mouse_down_animation = None, spritesheet_dimensions=(2, 2), font_size='big'): #spritesheet for potential fancy animations later
        self.x, self.y, self.w, self.h = window_values

        self.font_size = font_size

        self.text = text

        self.surface = surface

        self.text_label = render_text(text, (0,0,0), font_size)
        self.get_text_draw_coords()

        self.on_click_deferred = on_click_deferred
        self.on_click_return_value = on_click_return_value

        hover_animation_surface = None

        if hover_animation_surface:
            self.on_hover_animation = Animation(TileSheet(hover_animation_surface, 292, 120, spritesheet_dimensions[0], spritesheet_dimensions[1]), 10, 4)
        else:
            self.on_hover_animation = None

        if mouse_down_animation:
            self.mouse_down_animation = Animation(TileSheet(mouse_down_animation, 292, 120, 1, 1), 10, 1)
        else:
            self.mouse_down_animation = None

        self.on_hover_animation_active = False
        self.mouse_down_animation_active = False
コード例 #2
0
ファイル: Chess.py プロジェクト: Odin94/ChessPython
    def run(self, player1 = "local_player", player2 = "local_player"):
        self.running = False
        self.clock = pygame.time.Clock() #to track FPS
        self.fps= 0

        ChessBoardAssets.load_assets()

        self.board_pos_mouseover_label = render_text("0 / 0", (100, 100, 200))

        self.game_board = GameBoard()

        self.white_pieces = []
        self.black_pieces = []

        self.captured_pieces = []
        
        self.fill_board()


        self.turn = TURN.PLAYER_1
        self.moves = []

        if player1 == "local_player":
            self.player1 = Player("black", self.game_board, self.white_pieces, self.black_pieces)
        elif player1 == "ai_player":
            self.player1 = RandomAI("black", self.game_board, self.white_pieces, self.black_pieces)

        if player2 == "local_player":
            self.player2 = Player("white", self.game_board, self.white_pieces, self.black_pieces)
        elif player2 == "ai_player":
            self.player2 = RandomAI("white", self.game_board, self.white_pieces, self.black_pieces)

        self.mainLoop()
コード例 #3
0
ファイル: Player.py プロジェクト: Odin94/ChessPython
    def handleEvents(self, events, my_turn, chessgame):
        LEFT = 1 #REFACTOR: move mousecontrols somewhere else? At least move LEFT etc definition somewhere else..
        MIDDLE = 2
        RIGHT = 3

        for event in events:
            if event.type == QUIT:
                chessgame.running = False

            elif event.type == KEYDOWN:
                chessgame.keyDown(event.key)

            elif event.type == KEYUP:
                if event.key == K_ESCAPE:
                    chessgame.running = False
                    sys.quit()
                chessgame.keyUp(event.key)

            elif event.type == MOUSEBUTTONDOWN:
                if self.team_color == "black": # select a piece
                    for piece in chessgame.black_pieces:
                        if piece.mouse_on_piece(event.pos):
                            self.selected_piece = piece
                            piece.update_possible_moves(chessgame.game_board.board)

                elif self.team_color == "white":
                    for piece in chessgame.white_pieces:
                        if piece.mouse_on_piece(event.pos):
                            self.selected_piece = piece
                            piece.update_possible_moves(chessgame.game_board.board)

            elif event.type == MOUSEBUTTONUP:
                if my_turn:
                    if event.button == RIGHT:
                        self.latest_move = self.move(event.pos)

            elif event.type == MOUSEMOTION:
                for tiles in chessgame.game_board.board:
                    for tile in tiles:
                        if tile.mouse_on_tile(event.pos):
                            chessgame.board_pos_mouseover_label = render_text(str(tile.board_x+1) + " / " + str(8 - tile.board_y), (100, 100, 200))
                            break