Пример #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 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