| from leela_board import LeelaBoard |
| import chess |
| import torch |
|
|
|
|
| def flip_move(move): |
| from_square = chess.square_mirror(chess.parse_square(move[:2])) |
| to_square = chess.square_mirror(chess.parse_square(move[2:4])) |
| promotion = move[4:] if len(move) > 4 else "" |
| return chess.square_name(from_square) + chess.square_name(to_square) + promotion |
|
|
|
|
| def flip_board(fen, moves): |
| temp_board = chess.Board(fen=fen) |
| return temp_board.mirror().fen(), [flip_move(move) for move in moves] |
|
|
|
|
| |
| class ChessBoard: |
| def __init__(self, fen): |
| self.board = LeelaBoard(fen=fen) |
| self.t = self.__t() |
|
|
| def move(self, move): |
| self.board.push_uci(move) |
| self.t = self.__t() |
|
|
| def __t(self): |
| return torch.from_numpy(self.board.lcz_features()).float() |
|
|
| def __str__(self): |
| return str(self.board) |
|
|