def check_select_piece(self, coord, player): '''Select piece if possible: display possible moves''' selected_piece = player.get_piece(coord) # check if piece found if selected_piece: self.piece_selected = selected_piece self.select = True # update selected case self.handeln_case(coord) # display possible moves poss_moves = self.ChessGame.get_possibles_moves(selected_piece) if selected_piece.name == 'king': # add castle moves can_long, can_short = PossibleMove.get_castle(player.color) self.handeln_castle_case(player.color, can_long, can_short) elif selected_piece.name == 'pawn': # look for en passant move en_passant_coord = PossibleMove.get_en_passant(selected_piece) if en_passant_coord != None: poss_moves.append(en_passant_coord) for coord in poss_moves: case = Board.get_case(coord) case.possible_move = True
def handeln_movement(cls, piece, coord): '''Handeln pieces movement''' coord = tuple(coord) is_attacking = cls.is_attacking(piece, coord) as_moved = False # special moves if piece.name == 'king': # look for castle if cls.check_castle_moves(piece): as_moved = True elif piece.name == 'pawn': # look for en passant move en_passant_coord = PossibleMove.get_en_passant(piece) if coord == en_passant_coord: cls.handeln_en_passant(piece, coord) as_moved = True if not as_moved: # if wasn't a special move if cls.check_can_move(piece, coord, is_attacking): cls.move(piece, coord, is_attacking) as_moved = True # in case of move -> end turn if as_moved: cls.end_turn(piece.color) return True