Fonction d'evaluation
Objet board (chess.Board)
- board.piece_map()
- Dict {case: piece} de toutes les pieces sur l'echiquier.
- board.piece_at(square)
- Retourne la piece a la case donnee, ou None.
- board.piece_type_at(square)
- Retourne le type de piece (int) a la case, ou None.
- board.color_at(square)
- Retourne la couleur (True=blanc, False=noir) a la case, ou None.
- board.is_checkmate()
- True si la position est un echec et mat.
- board.is_check()
- True si le roi du joueur actif est en echec.
- board.is_stalemate()
- True si la position est un pat.
- board.is_insufficient_material()
- True si le materiel est insuffisant pour mater.
- board.can_claim_draw()
- True si une nulle peut etre reclamee (repetition, 50 coups).
- board.legal_moves
- Generateur des coups legaux. Utiliser: len(list(board.legal_moves))
- board.turn
- True si c'est aux blancs de jouer, False pour les noirs.
- board.fullmove_number
- Numero du coup actuel (commence a 1).
- board.has_kingside_castling_rights(color)
- True si le roque cote roi est disponible.
- board.has_queenside_castling_rights(color)
- True si le roque cote dame est disponible.
- board.pieces(piece_type, color)
- Ensemble des cases contenant ce type de piece de cette couleur.
Types de pieces
- chess.PAWN = 1
- Pion
- chess.KNIGHT = 2
- Cavalier
- chess.BISHOP = 3
- Fou
- chess.ROOK = 4
- Tour
- chess.QUEEN = 5
- Dame
- chess.KING = 6
- Roi
Couleurs
- chess.WHITE = True
- Blancs
- chess.BLACK = False
- Noirs
Utilitaires de cases
- chess.square_rank(square)
- Rang de la case (0-7, 0 = rangee 1).
- chess.square_file(square)
- Colonne de la case (0-7, 0 = colonne a).
- chess.square(file, rank)
- Cree une case a partir de la colonne et du rang.
- chess.E4, chess.D4, ...
- Constantes pour les cases (A1=0, B1=1, ..., H8=63).
Objet piece
- piece.piece_type
- Type de la piece (1-6, voir ci-dessus).
- piece.color
- Couleur (True=blanc, False=noir).
- piece.symbol()
- Symbole FEN: 'P','N','B','R','Q','K' (blanc), 'p','n','b','r','q','k' (noir).
Comment ca marche
L'IA utilise l'algorithme Alpha-Beta pour explorer l'arbre des coups possibles et choisir le meilleur coup.
Votre role : ecrivez la fonction evaluate(board) en Python qui evalue une position. Un score positif favorise les blancs, negatif les noirs.
Alpha-Beta : amelioration du Minimax qui "coupe" les branches inutiles de l'arbre de recherche, reduisant le nombre de positions a evaluer.
Arbre : en dessous, visualisez l'arbre de recherche complet avec les valeurs alpha/beta et les coupures.