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
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()
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