diff options
| author | Adam <adammegarules1@gmail.com> | 2026-08-08 15:22:29 +0200 |
|---|---|---|
| committer | Adam <adammegarules1@gmail.com> | 2026-08-08 15:22:29 +0200 |
| commit | 9cbe5a0fbd3ca3a10703452d2aaf3a5c3759c704 (patch) | |
| tree | 9855029cd269051c5effcca36223f38825cc3111 /match-manager/match.py | |
| parent | f86ea4529b5bdc6457e6d1fc86a43133132d4252 (diff) | |
removing experiment
Diffstat (limited to 'match-manager/match.py')
| -rw-r--r-- | match-manager/match.py | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/match-manager/match.py b/match-manager/match.py deleted file mode 100644 index 1e3aa08..0000000 --- a/match-manager/match.py +++ /dev/null @@ -1,127 +0,0 @@ -import random - -import chess -import chess.engine - -ENGINE_A = "./engines/chessV0" -ENGINE_B = "./engines/chessV1" - -POSITIONS_FILE = "positions.txt" -MAX_GAMES = 100 - - -class UCIEngine: - def __init__(self, path, name, depth): - self.name = name - self.depth = depth - - print(f"Starting {name}: {path}") - - self.engine = chess.engine.SimpleEngine.popen_uci(path) - - print(f"{name} ready") - - def get_move(self, board): - result = self.engine.play(board, chess.engine.Limit(depth=self.depth)) - return result.move - - def quit(self): - self.engine.quit() - - -def play_game(engine_white, engine_black, fen, game_number): - board = chess.Board(fen) - - print("\n" + "=" * 60) - print(f"GAME {game_number}") - print("=" * 60) - - print("Starting FEN:") - print(fen) - - move_number = 1 - - while not board.is_game_over() and move_number <= 200: - if board.turn == chess.WHITE: - engine = engine_white - color = "White" - else: - engine = engine_black - color = "Black" - - move = engine.get_move(board) - - print(f"{move_number}. {color} ({engine.name}) plays {move}") - - board.push(move) - - if board.turn == chess.WHITE: - move_number += 1 - - result = board.result() - - print("Game finished:", result) - print("Moves played:", board.fullmove_number) - - return result - - -def main(): - depth = int(input("Search depth: ")) - - with open(POSITIONS_FILE) as f: - positions = [line.strip() for line in f if line.strip()] - - random.shuffle(positions) - - engine_a = UCIEngine(ENGINE_A, "chessV0", depth) - - engine_b = UCIEngine(ENGINE_B, "chessV1", depth) - - results = {"chessV0 wins": 0, "chessV1 wins": 0, "draws": 0} - - try: - for i, fen in enumerate(positions[:MAX_GAMES], 1): - # alternate colors - if i % 2 == 0: - white = engine_a - black = engine_b - a_color = chess.BLACK - else: - white = engine_b - black = engine_a - a_color = chess.WHITE - - result = play_game(white, black, fen, i) - - if result == "1-0": - if a_color == chess.WHITE: - results["chessV0 wins"] += 1 - else: - results["chessV1 wins"] += 1 - - elif result == "0-1": - if a_color == chess.BLACK: - results["chessV0 wins"] += 1 - else: - results["chessV1 wins"] += 1 - - else: - results["draws"] += 1 - - print("\nCurrent score:") - print(results) - - finally: - engine_a.quit() - engine_b.quit() - - print("\n" + "=" * 60) - print("FINAL RESULTS") - print("=" * 60) - - print(results) - - -if __name__ == "__main__": - main() |
