예제 #1
0
    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
예제 #2
0
    def check_castle_moves(cls, king):
        line = PossibleMove.get_line(king.color)
        
        can_long, can_short = PossibleMove.get_castle(king.color)

        if can_long:
            rock = cls.players[king.color].get_piece((0, line))
            # execute long castle
            king.move((2,line))
            rock.move((3, line))
            return True
        
        if can_short:
            rock = cls.players[king.color].get_piece((7, line))
            # execute short castle
            king.move((6,line))
            rock.move((5, line))
            return True