From 7367934e0b397b73c2b913743ec45d652f2a5d44 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 16:16:04 +0200 Subject: [PATCH 01/15] :art: Format Python code with psf/black (#22) Co-authored-by: VincentAuriau --- python/engine/material.py | 4 +- tests/unit_test/test_material.py | 650 +++++++++++++++---------------- 2 files changed, 326 insertions(+), 328 deletions(-) diff --git a/python/engine/material.py b/python/engine/material.py index 6fe4f10..3cbf33e 100644 --- a/python/engine/material.py +++ b/python/engine/material.py @@ -973,7 +973,7 @@ def piece_move_authorized(self, start, end): if not super().piece_move_authorized(start=start, end=end): return False - + dx = end.get_x() - start.get_x() dy = end.get_y() - start.get_y() @@ -1197,7 +1197,7 @@ def piece_move_authorized(self, start, end): bool Whether the movement is authorized by the piece possibilities or not. """ - + if not super().piece_move_authorized(start=start, end=end): return False dx = end.get_x() - start.get_x() diff --git a/tests/unit_test/test_material.py b/tests/unit_test/test_material.py index 395c88e..8573d98 100644 --- a/tests/unit_test/test_material.py +++ b/tests/unit_test/test_material.py @@ -7,346 +7,344 @@ import engine.material as material # Add verifications about own color of piece on end cell -# +# + def test_pawn_moves(): - x_start = 1 - y_start = 0 - pawn = material.Pawn(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=pawn) - - # Assert can go forward - x_end = 2 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert pawn.piece_move_authorized(start_cell, end_cell) - - # Assert can go forward by two cells - x_end = 3 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cann go diagonal if adversary piece - x_end = 2 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=material.Pawn(False, x_end, y_end)) - assert pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go forward by three cells - x_end = 4 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go backward - x_end = 0 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go on the side - x_end = 1 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go diagonal without piece - x_end = 2 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not pawn.piece_move_authorized(start_cell, end_cell) - - # Assert cannot further than the board - x_end = 1 - y_end = -1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=material.Pawn(False, x_end, y_end)) - assert not pawn.piece_move_authorized(start_cell, end_cell) + x_start = 1 + y_start = 0 + pawn = material.Pawn(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=pawn) + + # Assert can go forward + x_end = 2 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert pawn.piece_move_authorized(start_cell, end_cell) + + # Assert can go forward by two cells + x_end = 3 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cann go diagonal if adversary piece + x_end = 2 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=material.Pawn(False, x_end, y_end)) + assert pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go forward by three cells + x_end = 4 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go backward + x_end = 0 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go on the side + x_end = 1 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go diagonal without piece + x_end = 2 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not pawn.piece_move_authorized(start_cell, end_cell) + + # Assert cannot further than the board + x_end = 1 + y_end = -1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=material.Pawn(False, x_end, y_end)) + assert not pawn.piece_move_authorized(start_cell, end_cell) def test_bishop_moves(): - x_start = 1 - y_start = 2 - bishop = material.Bishop(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=bishop) - - # Assert can go diagonals - x_end = 0 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert bishop.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert bishop.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert bishop.piece_move_authorized(start_cell, end_cell) - x_end = 6 - y_end = 7 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert bishop.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go differently than diagonals - x_end = 4 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not bishop.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 5 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not bishop.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not bishop.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - - # Assrt cannot go futher than the board - assert not bishop.piece_move_authorized(start_cell, end_cell) - x_end = -1 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not bishop.piece_move_authorized(start_cell, end_cell) - x_end = 7 - y_end = 8 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not bishop.piece_move_authorized(start_cell, end_cell) + x_start = 1 + y_start = 2 + bishop = material.Bishop(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=bishop) + + # Assert can go diagonals + x_end = 0 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert bishop.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert bishop.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert bishop.piece_move_authorized(start_cell, end_cell) + x_end = 6 + y_end = 7 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert bishop.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go differently than diagonals + x_end = 4 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not bishop.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 5 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not bishop.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not bishop.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + + # Assrt cannot go futher than the board + assert not bishop.piece_move_authorized(start_cell, end_cell) + x_end = -1 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not bishop.piece_move_authorized(start_cell, end_cell) + x_end = 7 + y_end = 8 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not bishop.piece_move_authorized(start_cell, end_cell) def test_knight_moves(): - x_start = 2 - y_start = 2 - knight = material.Knight(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=knight) - - # Assert can go everywhere it is supposed to - x_end = 0 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert knight.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go differently - x_end = 4 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not knight.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not knight.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not knight.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not knight.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 7 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not knight.piece_move_authorized(start_cell, end_cell) + x_start = 2 + y_start = 2 + knight = material.Knight(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=knight) + + # Assert can go everywhere it is supposed to + x_end = 0 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert knight.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go differently + x_end = 4 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not knight.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not knight.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not knight.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not knight.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 7 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not knight.piece_move_authorized(start_cell, end_cell) def test_rook_moves(): - x_start = 2 - y_start = 2 - rook = material.Rook(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=rook) - - # Assert can go everywhere it is supposed to - x_end = 2 - y_end = 7 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert rook.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert rook.piece_move_authorized(start_cell, end_cell) - x_end = 7 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert rook.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert rook.piece_move_authorized(start_cell, end_cell) - - # Assert cannot go differently - x_end = 4 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not rook.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not rook.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = -1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not rook.piece_move_authorized(start_cell, end_cell) - x_end = 8 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not rook.piece_move_authorized(start_cell, end_cell) + x_start = 2 + y_start = 2 + rook = material.Rook(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=rook) + + # Assert can go everywhere it is supposed to + x_end = 2 + y_end = 7 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert rook.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert rook.piece_move_authorized(start_cell, end_cell) + x_end = 7 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert rook.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert rook.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go differently + x_end = 4 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not rook.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not rook.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = -1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not rook.piece_move_authorized(start_cell, end_cell) + x_end = 8 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not rook.piece_move_authorized(start_cell, end_cell) def test_queen_moves(): - x_start = 2 - y_start = 2 - queen = material.Queen(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=queen) - - # Assert can go everywhere it is supposed to - x_end = 2 - y_end = 7 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 7 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 7 - y_end = 7 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 0 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 0 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert queen.piece_move_authorized(start_cell, end_cell) - - - # Assert cannot go differently - x_end = 4 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 6 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) - x_end = 6 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = -2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) - x_end = 8 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not queen.piece_move_authorized(start_cell, end_cell) + x_start = 2 + y_start = 2 + queen = material.Queen(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=queen) + + # Assert can go everywhere it is supposed to + x_end = 2 + y_end = 7 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 7 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 7 + y_end = 7 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 0 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 0 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert queen.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go differently + x_end = 4 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 6 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) + x_end = 6 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = -2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) + x_end = 8 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not queen.piece_move_authorized(start_cell, end_cell) def test_king_moves(): - x_start = 2 - y_start = 2 - king = material.King(white=True, x=x_start, y=y_start) - start_cell = engine.Cell(x=x_start, y=y_start, piece=king) - - # Assert can go everywhere it is supposed to - x_end = 2 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - x_end = 3 - y_end = 3 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert king.piece_move_authorized(start_cell, end_cell) - - - # Assert cannot go differently - x_end = 4 - y_end = 1 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not king.piece_move_authorized(start_cell, end_cell) - x_end = 1 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not king.piece_move_authorized(start_cell, end_cell) - x_end = 2 - y_end = 2 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not king.piece_move_authorized(start_cell, end_cell) - x_end = 4 - y_end = 4 - end_cell = engine.Cell(x=x_end, y=y_end, piece=None) - assert not king.piece_move_authorized(start_cell, end_cell) - \ No newline at end of file + x_start = 2 + y_start = 2 + king = material.King(white=True, x=x_start, y=y_start) + start_cell = engine.Cell(x=x_start, y=y_start, piece=king) + + # Assert can go everywhere it is supposed to + x_end = 2 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + x_end = 3 + y_end = 3 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert king.piece_move_authorized(start_cell, end_cell) + + # Assert cannot go differently + x_end = 4 + y_end = 1 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not king.piece_move_authorized(start_cell, end_cell) + x_end = 1 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not king.piece_move_authorized(start_cell, end_cell) + x_end = 2 + y_end = 2 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not king.piece_move_authorized(start_cell, end_cell) + x_end = 4 + y_end = 4 + end_cell = engine.Cell(x=x_end, y=y_end, piece=None) + assert not king.piece_move_authorized(start_cell, end_cell) From ef7403ab2d70110ef3094e77b6953412c00d5e7f Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Sun, 29 Oct 2023 14:18:52 +0100 Subject: [PATCH 02/15] ENH: docs, tests & others --- pyalapin/__init__.py | 6 + pyalapin/engine/__init__.py | 0 pyalapin/engine/color.py | 4 + pyalapin/engine/engine.py | 1200 ++++++++++++++++++++++++ pyalapin/engine/material.py | 1449 +++++++++++++++++++++++++++++ pyalapin/engine/move.py | 470 ++++++++++ pyalapin/interface/interface.py | 269 ++++++ pyalapin/output.pstats | Bin 0 -> 103993 bytes pyalapin/player/ai_player.py | 451 +++++++++ pyalapin/player/my_player.py | 237 +++++ pyalapin/player/player.py | 134 +++ pyalapin/setup.py | 32 + pyalapin/utils/images_creation.py | 116 +++ pyalapin/utils/profile_game.py | 30 + pyalapin/utils/profiling.png | Bin 0 -> 509497 bytes pyalapin/utils/training_ai.py | 25 + 16 files changed, 4423 insertions(+) create mode 100644 pyalapin/__init__.py create mode 100644 pyalapin/engine/__init__.py create mode 100644 pyalapin/engine/color.py create mode 100644 pyalapin/engine/engine.py create mode 100644 pyalapin/engine/material.py create mode 100644 pyalapin/engine/move.py create mode 100644 pyalapin/interface/interface.py create mode 100644 pyalapin/output.pstats create mode 100644 pyalapin/player/ai_player.py create mode 100644 pyalapin/player/my_player.py create mode 100644 pyalapin/player/player.py create mode 100644 pyalapin/setup.py create mode 100644 pyalapin/utils/images_creation.py create mode 100644 pyalapin/utils/profile_game.py create mode 100644 pyalapin/utils/profiling.png create mode 100644 pyalapin/utils/training_ai.py diff --git a/pyalapin/__init__.py b/pyalapin/__init__.py new file mode 100644 index 0000000..9fa2b96 --- /dev/null +++ b/pyalapin/__init__.py @@ -0,0 +1,6 @@ +""" +pyalapin, chess python package. +""" + +__version__ = "0.0.1" +__author__ = 'Vincent Auriau' \ No newline at end of file diff --git a/pyalapin/engine/__init__.py b/pyalapin/engine/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyalapin/engine/color.py b/pyalapin/engine/color.py new file mode 100644 index 0000000..4b2c455 --- /dev/null +++ b/pyalapin/engine/color.py @@ -0,0 +1,4 @@ +class Color: + GREEN = "\x1b[32m" + WHITE = "\033[0m" + RED = "\x1b[31m" diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py new file mode 100644 index 0000000..c180810 --- /dev/null +++ b/pyalapin/engine/engine.py @@ -0,0 +1,1200 @@ +# Rajouter le changement du pion en autre piece (transformation obligée en reine pour l'instant +# Rajouter fin du game (king menacé (ou pris?) en fin de tour) + +# Rajouter toutes les pièces vivantes et mortes dans un stack en attribut de game +# Etablir le check mate +# Sauvegarder état partie + +import copy + +from engine.move import Move +from player.player import Player, AIRandomPlayer +from player.ai_player import EasyAIPlayer +from player.my_player import MyPlayer +import engine.material as material + + +class Color: + GREEN = "\x1b[32m" + WHITE = "\033[0m" + RED = "\x1b[31m" + + +class Cell: + """ + Cell class representing a base element of a board. + + Attributes + ---------- + x : int + x coordinate of the cell on the board. + y : int + y coordinate of the cell on the board + piece: material.Piece or None + Piece that is on the cell (or None if no Piece is on the cell) + """ + + def __init__(self, x, y, piece): + """Initialization of the cell. + + Parameters + ---------- + x : int + x coordinate of the cell on the board. + y : int + y coordinate of the cell on the board + piece: material.Piece or None + Piece that is on the cell (or None if no Piece is on the cell) + """ + self.x = x + self.y = y + self.piece = piece + if piece is not None: + self.piece.x = x + self.piece.y = y + + def __deepcopy__(self, memodict={}): + """Method to create an uncorrelated clone of the cell. + + Returns + ------- + Cell + Exact copy of self. + """ + copy_object = Cell(self.x, self.y, copy.deepcopy(self.piece)) + return copy_object + + def set_piece(self, piece): + """Sets a Piece in the Cell. + + Parameters + ---------- + piece: material.Piece + Piece to set up on self. + """ + self.piece = piece + if piece is not None: + self.piece.x = self.x + self.piece.y = self.y + + def get_piece(self): + """Method to access the piece on the Cell. + + Returns + ------- + Piece + Piece on the self. + """ + return self.piece + + def get_x(self): + """Method to acces Cell x coordinate. + + Returns + ------- + int + x-axis coordinate of self. + """ + return self.x + + def get_y(self): + """Method to acces Cell y coordinate. + + Returns + ------- + int + y-axis coordinate of self. + """ + return self.y + + def is_threatened( + self, board, threaten_color + ): # change threaten_color par #white_threatened + """ + Method to check if the Cell is threatened by a given color. + + Parameters + ---------- + board : Board + Board to which self belongs to. + threaten_color : str + Color of that wants to know if cell is threatened by opponent. + + Returns + ------- + bool + Whether the celle is threatened or not. + """ + # One way that could be more efficient would be to keep at every step the list of threatened cell by each piece + # And update it at each move. + + # Check Knights threatening + for i, j in [ + (2, 1), + (-2, 1), + (2, -1), + (-2, -1), + (1, 2), + (1, -2), + (-1, 2), + (-1, -2), + ]: + x_to_check = self.x + i + y_to_check = self.y + j + + if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Knight): + if piece_to_check.is_white() != threaten_color: + return True + + # King + Rook + Queen + # Checking direct surroundings + for i, j in [(1, 0), (0, -1), (-1, 0), (0, -1)]: + x_to_check = self.x + i + y_to_check = self.y + j + + if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if ( + isinstance(piece_to_check, material.King) + or isinstance(piece_to_check, material.Rook) + or isinstance(piece_to_check, material.Queen) + ): + if piece_to_check.is_white() != threaten_color: + return True + + elif piece_to_check is None: + keep_going = True + x_to_check += i + y_to_check += j + while 0 <= x_to_check < 8 and 0 <= y_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + if isinstance(piece_to_check, material.Rook) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + else: + x_to_check += i + y_to_check += j + + """ + # Rook + Queen + # Going further + keep_going = True + x_to_check = self.x + 2 + y_to_check = self.y + while x_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Rook) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check += 1 + + keep_going = True + x_to_check = self.x - 2 + y_to_check = self.y + while x_to_check >= 0 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Rook) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check -= 1 + + keep_going = True + x_to_check = self.x + y_to_check = self.y + 2 + while y_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Rook) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + y_to_check += 1 + + keep_going = True + x_to_check = self.x + y_to_check = self.y - 2 + while y_to_check >= 0 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Rook) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + y_to_check -= 1 + """ + + # King + Queen + Bishop + Pawn + # Checking direct surroundings + for i, j in [(1, 1), (1, -1), (-1, 1), (-1, -1)]: + x_to_check = self.x + i + y_to_check = self.y + j + + if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if ( + isinstance(piece_to_check, material.King) + or isinstance(piece_to_check, material.Bishop) + or isinstance(piece_to_check, material.Queen) + ): + if piece_to_check.is_white() != threaten_color: + return True + elif ( + i > 0 + and threaten_color + and isinstance(piece_to_check, material.Pawn) + ): + if piece_to_check.is_white() != threaten_color: + return True + elif ( + i < 0 + and not threaten_color + and isinstance(piece_to_check, material.Pawn) + ): + if piece_to_check.is_white() != threaten_color: + return True + + elif piece_to_check is None: + keep_going = True + x_to_check += i + y_to_check += j + while 0 <= x_to_check < 8 and 0 <= y_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Bishop) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check += i + y_to_check += j + + """ + # Queen + Bishop + keep_going = True + x_to_check = self.x + 2 + y_to_check = self.y + 2 + while x_to_check < 8 and y_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Bishop) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check += 1 + y_to_check += 1 + + keep_going = True + x_to_check = self.x - 2 + y_to_check = self.y + 2 + while x_to_check >= 0 and y_to_check < 8 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Bishop) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check -= 1 + y_to_check += 1 + + keep_going = True + x_to_check = self.x + 2 + y_to_check = self.y - 2 + while x_to_check < 8 and y_to_check >= 0 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Bishop) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check += 1 + y_to_check -= 1 + + keep_going = True + x_to_check = self.x - 2 + y_to_check = self.y - 2 + while x_to_check >= 0 and y_to_check >= 0 and keep_going: + cell_to_check = board.get_cell(x_to_check, y_to_check) + piece_to_check = cell_to_check.get_piece() + + if isinstance(piece_to_check, material.Bishop) or isinstance( + piece_to_check, material.Queen + ): + keep_going = False + if piece_to_check.is_white() != threaten_color: + return True + elif piece_to_check is not None: + keep_going = False + x_to_check -= 1 + y_to_check -= 1 + """ + + return False + + +class Board: + """ + Board class representing the chess board. + + Attributes + ---------- + board : list of Cells + Represents all cells of a chess board from x coordinates [0, 7] and y coordinates [0, 7] + white_king : material.King + King piece of white color. + black_king : material.King + King piece of black color. + all_material: dict + Dictionnary containing all the pieces on the board, killed and not killed. + """ + + def __init__(self, empty_init=False): + """Initialization of the board. + + Parameters + ---------- + empty_init: bool + True if you want to start from an existing board. + """ + if not empty_init: + self.board = None + self.white_king, self.black_king, self.all_material = self._reset_board() + + def deepcopy(self, memodict={}): + """Method to create an uncorrelated clone of the board. + + Returns + ------- + Cell + Exact copy of self. + """ + copied_object = Board(empty_init=True) + board = [[Cell(i, j, None) for j in range(8)] for i in range(8)] + copied_object.board = board + copied_material = self.deep_copy_material() + white_king = copied_material["white"]["alive"]["king"][0] + black_king = copied_material["black"]["alive"]["king"][0] + copied_object.all_material = copied_material + copied_object.white_king = white_king + copied_object.black_king = black_king + for piece_list in copied_material["white"]["alive"].values(): + for piece in piece_list: + copied_object.get_cell(piece.x, piece.y).set_piece(piece) + for piece_list in copied_material["black"]["alive"].values(): + for piece in piece_list: + copied_object.get_cell(piece.x, piece.y).set_piece(piece) + + return copied_object + + def deep_copy_material(self): + """Method to create an uncorrelated clone of all the pieces on the board, killed and not killed. + + Returns + ------- + dict of Pieces + Exact copy of self.all_material. + """ + material = { + "white": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + "black": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + } + + for color in ["white", "black"]: + for status in ["alive", "killed"]: + for piece_type in ["pawn", "knight", "bishop", "rook", "queen", "king"]: + for piece in self.all_material[color][status][piece_type]: + material[color][status][piece_type].append( + piece.piece_deepcopy() + ) + return material + + def __deepcopy__(self, memodict={}): + """Method to create an uncorrelated clone of the board. + + Returns + ------- + Cell + Exact copy of self. + """ + copied_object = Board(empty_init=True) + board = [[Cell(i, j, None) for j in range(8)] for i in range(8)] + copied_object.board = board + copied_material = self.deep_copy_material() + + white_king = copied_material["white"]["alive"]["king"][0] + black_king = copied_material["black"]["alive"]["king"][0] + copied_object.all_material = copied_material + copied_object.white_king = white_king + copied_object.black_king = black_king + for piece_list in copied_material["white"]["alive"].values(): + for piece in piece_list: + copied_object.get_cell(piece.x, piece.y).set_piece(piece) + for piece_list in copied_material["black"]["alive"].values(): + for piece in piece_list: + copied_object.get_cell(piece.x, piece.y).set_piece(piece) + + return copied_object + + def to_fen(self): + """Method to generate a fen representation of the current state of the board + + Returns + ------- + tuple of str + fen representation and 'KQkq' + """ + fen = "" + for line in self.board: + no_piece_count = 0 + for cell in line: + piece = cell.get_piece() + if piece is None: + no_piece_count += 1 + else: + if no_piece_count > 0: + fen += str(no_piece_count) + no_piece_count = 0 + letter = piece.get_str().replace(" ", "") + if piece.is_white(): + letter = letter.lower() + fen += letter + if no_piece_count > 0: + fen += str(no_piece_count) + fen += "/" + return fen[:-1], "KQkq" + + def one_hot_encode(self, white_side=True): + """Method to create a representation of the board with OneHot encode of the pieces. + + Parameters + ---------- + white_sied : bool + Whether we want to represent the board from the White side point of view or not. Point of view sees its pieces + represented by +1 OneHot and opponent side by -1. + + Returns + ------- + list of list + 8x8 list representing the board with full zeros list when cell is empty or OneHot representation of the piece on + the cell otherwise. + """ + + # Dict of OneHot transformations + material_to_one_hot = { + "pawn": [1, 0, 0, 0, 0, 0], + "bishop": [0, 1, 0, 0, 0, 0], + "knight": [0, 0, 1, 0, 0, 0], + "rook": [0, 0, 0, 1, 0, 0], + "queen": [0, 0, 0, 0, 1, 0], + "king": [0, 0, 0, 0, 0, 1], + } + # Iterating over cells and add OneHot representations to the list. + one_hot_board = [] + for line in self.board: + one_hot_line = [] + for cell in line: + piece = cell.get_piece() + # Empty cell + if piece is None: + one_hot_line.append([0] * 6) + # Piece on the cell + else: + one_hot_piece = material_to_one_hot[piece.type] + # Negative OneHot if opponent side + if piece.is_white() != white_side: + one_hot_piece = [-1 * val for val in one_hot_piece] + one_hot_line.append(one_hot_piece) + one_hot_board.append(one_hot_line) + return one_hot_board + + def get_cell(self, x, y): + """Method to access a cell on the board from its coordinates. + + Parameters + ---------- + x : int + x-coordinate of the cell. + y : int + y-coordinate of the cell. + + Returns + ------- + cell + Cell at coordinates (x, y) + """ + return self.board[x][y] + + def reset(self): + """ + Resets the board, all the pieces, everything. + """ + self.white_king, self.black_king, self.all_material = self._reset_board() + + def create_board_from_string(self, string): + """ + Method to set up a sepecific board with Pieces on specific Celss from a string. + """ + raise NotImplementedError + + def _reset_board(self): + """Method to create the board. Creates Pieces and place them on their original cells. + + Returns + ------- + material.King + White King on the board + material.King + black King on the board + dict + Dictionnary with all the board pieces + """ + # List of cells + board = [] + + # Dictionnary to access easily the pieces + pieces = { + "white": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + "black": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + } + + # Initialize white pieces + white_king = material.King(True, 0, 4) + pieces["white"]["alive"]["king"].append(white_king) + black_king = material.King(False, 7, 4) + pieces["black"]["alive"]["king"].append(black_king) + + w_rook_1 = material.Rook(True, 0, 0) + w_rook_2 = material.Rook(True, 0, 7) + pieces["white"]["alive"]["rook"].append(w_rook_1) + pieces["white"]["alive"]["rook"].append(w_rook_2) + + w_bishop_1 = material.Bishop(True, 0, 2) + w_bishop_2 = material.Bishop(True, 0, 5) + pieces["white"]["alive"]["bishop"].append(w_bishop_1) + pieces["white"]["alive"]["bishop"].append(w_bishop_2) + + w_knight_1 = material.Knight(True, 0, 1) + w_knight_2 = material.Knight(True, 0, 6) + pieces["white"]["alive"]["knight"].append(w_knight_1) + pieces["white"]["alive"]["knight"].append(w_knight_2) + + w_queen = material.Queen(True, 0, 3) + pieces["white"]["alive"]["queen"].append(w_queen) + + line = [ + Cell(0, 0, w_rook_1), + Cell(0, 1, w_knight_1), + Cell(0, 2, w_bishop_1), + Cell(0, 3, w_queen), + Cell(0, 4, white_king), + Cell(0, 5, w_bishop_2), + Cell(0, 6, w_knight_2), + Cell(0, 7, w_rook_2), + ] + board.append(line) + + line = [] + for i in range(8): + p = material.Pawn(True, 1, i) + pieces["white"]["alive"]["pawn"].append(p) + line.append(Cell(1, i, p)) + board.append(line) + + for i in range(4): + line = [] + for j in range(8): + line.append(Cell(i + 2, j, None)) + board.append(line) + + line = [] + for i in range(8): + p = material.Pawn(False, 6, i) + pieces["black"]["alive"]["pawn"].append(p) + line.append(Cell(6, i, p)) + board.append(line) + + # Initialize black pieces + b_rook_1 = material.Rook(False, 7, 0) + b_rook_2 = material.Rook(False, 7, 7) + pieces["black"]["alive"]["rook"].append(b_rook_1) + pieces["black"]["alive"]["rook"].append(b_rook_2) + + b_bishop_1 = material.Bishop(False, 7, 2) + b_bishop_2 = material.Bishop(False, 7, 5) + pieces["black"]["alive"]["bishop"].append(b_bishop_1) + pieces["black"]["alive"]["bishop"].append(b_bishop_2) + + b_knight_1 = material.Knight(False, 7, 1) + b_knight_2 = material.Knight(False, 7, 6) + pieces["black"]["alive"]["knight"].append(b_knight_1) + pieces["black"]["alive"]["knight"].append(b_knight_2) + + b_queen = material.Queen(False, 7, 3) + pieces["black"]["alive"]["queen"].append(b_queen) + + line = [ + Cell(7, 0, b_rook_1), + Cell(7, 1, b_knight_1), + Cell(7, 2, b_bishop_1), + Cell(7, 3, b_queen), + Cell(7, 4, black_king), + Cell(7, 5, b_bishop_2), + Cell(7, 6, b_knight_2), + Cell(7, 7, b_rook_2), + ] + board.append(line) + + self.board = board + return white_king, black_king, pieces + + def move_piece_from_coordinates(self, start_coordinates, end_coordinates): + """Method to move a piece on the board from start and landing coordinates. + + Parameters + ---------- + start_coordinates : tuple of int + (x, y) coordinates of move starting cell + end_coordinates : tuple of int + (x, y) coordinates of move landing cell + """ + start_cell = self.get_cell(start_coordinates[0], start_coordinates[1]) + end_cell = self.get_cell(end_coordinates[0], end_coordinates[1]) + piece_to_move = start_cell.get_piece() + if piece_to_move is None: + raise ValueError("Empty cells chosen as moved piece") + + end_cell.set_piece(piece_to_move) + start_cell.set_piece(None) + + def kill_piece_from_coordinates(self, coordinates): + """Method to kill a piece from its coordinates on the board. + + Parameters + ---------- + coordinates : tuple of ints + (x, y) coordinates of cell on which is the piece to kill + """ + to_kill_piece = self.get_cell(coordinates[0], coordinates[1]).get_piece() + to_kill_piece.set_killed() + + color = "white" if to_kill_piece.is_white() else "black" + self.all_material[color]["alive"][to_kill_piece.type].remove(to_kill_piece) + self.all_material[color]["killed"][to_kill_piece.type].append(to_kill_piece) + + def transform_pawn(self, coordinates): + """Method to promote a pawn from its coordinates. + + Parameters + ---------- + coordinates : tuple of ints + (x, y) coordinates of the cell on which is Pawn to promote + promote_into : str + type of piece to promote the Pawn into. Default is "Queen" can also be "Rool", "Bishop" and "Knigh" + """ + pawn = self.get_cell(coordinates[0], coordinates[1]).get_piece() + if not isinstance(pawn, material.Pawn): + raise ValueError("Transforming piece that is not a Pawn") + else: + color = "white" if pawn.is_white() else "black" + self.all_material[color]["alive"][pawn.type].remove(pawn) + + new_queen = material.Queen(pawn.is_white(), pawn.x, pawn.y) + self.get_cell(pawn.x, pawn.y).set_piece(new_queen) + self.all_material[color]["alive"]["queen"].append(new_queen) + + def promote_pawn(self, coordinates, promote_into="Queen"): + """Method to promote a pawn from its coordinates. + + Parameters + ---------- + coordinates : tuple of ints + (x, y) coordinates of the cell on which is Pawn to promote + promote_into : str + type of piece to promote the Pawn into. Default is "Queen" can also be "Rool", "Bishop" and "Knigh" + """ + pawn = self.get_cell(coordinates[0], coordinates[1]).get_piece() + if not isinstance(pawn, material.Pawn): + raise ValueError("Transforming piece that is not a Pawn") + else: + color = "white" if pawn.is_white() else "black" + self.all_material[color]["alive"][pawn.type].remove(pawn) + + new_piece = pawn.promote(promote_into=promote_into) + self.get_cell(pawn.x, pawn.y).set_piece(new_piece) + self.all_material[color]["alive"]["queen"].append(new_piece) + + def draw(self, printing=True): + """Method to draw the board as a string and potentially print it in the terminal. + + Parameters + ---------- + printing : bool + Whether or not to print it in the terminal + """ + whole_text = " | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |" + boarder_line = "+---+-----+-----+-----+-----+-----+-----+-----+-----+" + whole_text += "\n" + whole_text += boarder_line + for i in range(8): + current_line = " " + str(i) + " |" + for j in range(8): + cell = self.get_cell(i, j) + if cell.get_piece() is None: + current_line += " " + else: + current_line += cell.get_piece().draw() + current_line += "|" + whole_text += "\n" + whole_text += current_line + whole_text += "\n" + whole_text += boarder_line + if printing: + print(whole_text + "\n") + return whole_text + + +class Game: + """ + Game class, used to play a chess game, interact with the board and move pieces. + + Attributes + ---------- + player1 : player.Player + player object that will be the one to play white pieces. For now, has to be a human player + ai : bool + Whether or not to play with AI. Is set to True, AI will play black pieces. + player2 : player.Player + player object that will play the black pieces. Can be human or AI player. + to_player_player: player1 or player2 + Argument pointing to the player that has to play next. Initialized to white pieces player. + board: Board + Board object on which to play. + status: str + String indicating if the game is still active or if there is mat or pat. + played_moves: list + List storing all the played move during the game. + automatic draw: bool + Whether to draw the board in the terminal at each round. + """ + + game_status = [] + + def __init__(self, automatic_draw=True, ai=False): + """Initialization of the cell. + + Parameters + ---------- + automatic_draw : bool + Whether to draw the board in the terminal at each round. + ai : bool + Whether or not to play with AI. Is set to True, AI will play black pieces. + """ + self.player1 = Player(True) + self.ai = ai + if ai: + # self.player2 = AIRandomPlayer(False) + self.player2 = EasyAIPlayer(False) + # self.player2 = MyPlayer(white_side=False, path_to_model="./test1") + else: + self.player2 = Player(False) + self.to_play_player = self.player1 + + self.board = Board() + self.status = "ACTIVE" + self.played_moves = [] + + self.automatic_draw = automatic_draw + + def reset_game(self): + """Method to reset the game. Recreates the borad, the pieces and restarts the game.""" + self.board.reset() + self.played_moves = [] + self.to_play_player = self.player1 + + def to_fen(self): + """ + Writes the board in fen. + + Returns + ------- + str + fen representation of the board. + """ + pieces, castling = self.board.to_fen() + color_playing = "w" if self.to_play_player.is_white_side() else "b" + return pieces + " " + color_playing + " " + castling + " - 0 1" + + def is_finished(self): + """ + Method to know if the game is still active or finished (i.e. pat or mat) + + Returns + ------- + bool + Whether the game is finished or not. + """ + return self.status != "ACTIVE" + + def move_from_coordinates(self, player, start_x, start_y, end_x, end_y, extras={}): + """ + Method to move a piece on the board from its coordinates. Creates the Move object from the coordinates and + calls the .move() method. + + Parameters + ---------- + player: player.Player + player that wants to move a piece + start_x: int + x-coordinate of the piece to move + start_y: int + y-coordinate of the piece to move + end_x: int + x-coordinate of the cell to move the piece to + end_y: int + x-coordinate of the cell to move the piece to + extras: dict + Dictionnary used to add additional data such as which type a piece a Pawn should be promoted to + if it reaches the other side of the board. + + Returns + ------- + self.move() + Method move of self. + """ + # Get the cells from the coordinates + start_cell = self.board.get_cell(start_x, start_y) + end_cell = self.board.get_cell(end_x, end_y) + + # Create the Move object + move = Move(player, self.board, start_cell, end_cell, extras=extras) + + # Move + return self.move(move, player) + + def draw_board(self): + """ + Draw the game's borad as a string in the terminal. + """ + return self.board.draw() + + def can_player_move(self, player): + """ + Methods that verifies if a player can still move at least one piece. + + Parameters + ---------- + player: player.Player + player we want to check can still move at least one Piece. + + Returns + ------- + bool + Whether player can still move at least a piece. + """ + # Checks all cells + for i in range(8): + for j in range(8): + # Checks Pieces on cells + selected_piece = self.board.get_cell(i, j).get_piece() + if selected_piece is not None: + # Checks color of pices + if selected_piece.is_white() == player.is_white_side(): + # Checks if piece can move + possible_moves = selected_piece.get_potential_moves(i, j) + + # Verifies if the move is authorized + for k in range(len(possible_moves)): + selected_move = possible_moves[k] + selected_move = Move( + player, + self.board, + self.board.get_cell(i, j), + self.board.get_cell(selected_move[0], selected_move[1]), + ) + verified_move = selected_move.is_possible_move() + + if verified_move: + return True + return False + + def check_pat_mat(self, player): + """ + Method to check if a player is in PAT or MAT situation. + + Parameters + ---------- + player: player.Player + player that needs to be checked + + Returns + ------- + int + 0 if the player can move, 1 if PAT, 2 if MAT + """ + can_player_move = self.can_player_move(player) + + if can_player_move: + return 0 + # If player cannot move any piece + else: + if player.is_white_side(): + king = self.board.white_king + else: + king = self.board.black_king + # If King is threatened, is mat otherwise, is pat + is_mat = self.board.get_cell(king.x, king.y).is_threatened( + self.board, not player.is_white_side + ) + if is_mat: + return 2 + else: + return 1 + + def move(self, move, player): + """ + Method to move a piece on the board from player and move objects. + + Parameters + ---------- + move: move.Move + move object ready to move a piece. + player: player.Player + player that wants to move a piece. + + Returns + ------- + bool + Whether the move has happened or not (if not means that it has been blocked by a rule). & Whether the + game keeps going. (Actually False when not moving should be True) + int or str + Status of the game: 0 nothing has happened or no winner, winner otherwise + """ + moved_piece = move.moved_piece + + # List of checks + # To change if castling or en passant move + if moved_piece is None: + return False, 0 + assert moved_piece is not None + + # Check that right player is playing + if player != self.to_play_player: + return False, 0 + assert player == self.to_play_player + + # Check that the move is authorized + allowed_move = move.is_possible_move() + if not allowed_move: + return False, 0 + elif moved_piece.is_white() != player.is_white_side(): + return False, 0 + else: + assert moved_piece.is_white() == player.is_white_side() + # Actually move pieces + move.move_pieces() + + # Store move + self.played_moves.append(move) + + # Change player + if self.to_play_player == self.player1: + self.to_play_player = self.player2 + else: + self.to_play_player = self.player1 + + # Draw + if self.automatic_draw: + self.board.draw() + + # Check status of Kings + if self.board.white_king.is_killed(): + print("END OF THE GAME, BLACK HAS WON") + return False, "black" + elif self.board.black_king.is_killed(): + print("END OF THE GAME, WHITE HAS WON") + return False, "white" + + # Checking for PAT & MAT + check_status, winner = self.update_status() + + return check_status, winner + + def update_status(self): + """ + Checks the status of the game (on going, pat, mat) and returns it. + + Returns + ------- + bool + Whether the game keeps going or not. + int or str + Status of the game: 0 nothing has happened or no winner, winner otherwise + + """ + game_status = self.check_pat_mat(self.player1) + # Pat + if game_status == 1: + return False, "black&white" + # Mat + elif game_status == 2: + return False, "black" + else: + game_status = self.check_pat_mat(self.player2) + # Pat + if game_status == 1: + return False, "black&white" + # Mat + elif game_status == 2: + return False, "white" + # Keeps going + else: + return True, "" + + def save(self, directory="debug_files"): + """ + Method to save the state of the game as matplotlib figure. + Uses a str representation of the game moves as figure title. + + Parameters + ---------- + directory: str + directory in which to save the figure. + """ + draw_text = self.draw_board() + draw_text = draw_text.replace("\x1b[32m", "") + draw_text = draw_text.replace("\033[0m", "") + draw_text = draw_text.replace("\x1b[31m", "") + import os + import matplotlib.pyplot as plt + + plt.rc("figure", figsize=(12, 7)) + plt.text( + 0.01, 0.05, str(draw_text), {"fontsize": 10}, fontproperties="monospace" + ) + plt.axis("off") + plt.tight_layout() + plt.savefig(os.path.join(directory, str(len(self.played_moves)) + ".png")) diff --git a/pyalapin/engine/material.py b/pyalapin/engine/material.py new file mode 100644 index 0000000..29a01f4 --- /dev/null +++ b/pyalapin/engine/material.py @@ -0,0 +1,1449 @@ +from abc import abstractmethod + +from engine.color import Color + + +class Piece(object): + """Base class for the different materials on the board. + + Implements the properties, attributes and functions shared by all the different materials. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized as False + + """ + + def __init__(self, white, x, y): + """Initialization of the piece. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + self.white = white + self.killed = False + + self.x = x + self.y = y + + @abstractmethod + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Piece + Exact copy of self. + + """ + copied_piece = Piece(self.white, self.x, self.y) + copied_piece.killed = self.killed + return copied_piece + + def is_white(self): + """Method to access the piece color. + + Returns + ------- + bool + color of piece. + + """ + return self.white + + def is_killed(self): + """Method to access the piece status (killed or not). + + Returns + ------- + bool + status of piece. + + """ + return self.killed + + def set_killed(self): + """Sets the piece status to killed.""" + self.killed = True + + @abstractmethod + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell of piece). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + x_start = start.get_x() + y_start = start.get_y() + x_end = end.get_x() + y_end = end.get_y() + + # If material is already on the landing cell + if end.get_piece() is not None: + if end.get_piece().is_white() == self.is_white(): + return False + + if x_start == x_end and y_start == y_end: + return False + else: + if x_start < 0 or x_end < 0: + return False + elif x_start > 7 or x_end > 7: + return False + elif y_start < 0 or y_end < 0: + return False + elif y_start > 7 or y_end > 7: + return False + else: + return True + + def can_move(self, board, move): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + + is_movement_authorized = self.piece_move_authorized(move.start, move.end) + return is_movement_authorized + + @abstractmethod + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + bool + List of authorized moves + """ + return None + + @abstractmethod + def get_threatened_cells_on_board(self, board): + """ + Method to list which cells are threatened by the piece (authorized movement + conditioned on other pieces on board). + + Parameters + ---------- + board: Board + game board self belong to + + Returns + ------- + list + List of threatened cells + + """ + return [] + + @abstractmethod + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " " + + def draw(self): + """Method to represent the piece as a colored string in order to draw a board. + + Returns + ------- + str + Colored representation of the piece within a board. + """ + value = self.get_str() + if self.is_white(): + return Color.GREEN + value + Color.WHITE + else: + return Color.RED + value + Color.WHITE + + +class Pawn(Piece): + """Base class for the pawns pieces + + Implements the properties, attributes and functions specific to pawns. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False + has_moved: bool + Whether the piece has already moved during a game or not. Initialized to False + last_move_is_double: bool + Whether the piece previous move was a double advance or not. For future En Passant checks. Initialized to False. + """ + + type = "pawn" + + def __init__(self, *args, **kwargs): + """Initialization of the pawn. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + self.has_moved = False # if the pawn has yet been moved or not to keep ? + self.last_move_is_double = ( + False # check for en passant, if last move was a double tap + ) + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Pawn + Exact copy of self. + """ + copied_piece = Pawn(self.white, self.x, self.y) + copied_piece.killed = self.killed + copied_piece.has_moved = self.has_moved + copied_piece.last_move_is_double = self.last_move_is_double + return copied_piece + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + # Check if there is a piece on the landing cell + if not super().piece_move_authorized(start=start, end=end): + return False + if end.get_piece() is not None: + # check if there is not another piece of same color + if end.get_piece().is_white() == self.is_white(): + return False + + else: + # Pawn can only take an adversary piece in diagonal + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + if dx == 1 and abs(dy) == 1 and self.is_white(): + return True + elif dx == -1 and abs(dy) == 1 and not self.is_white(): + return True + else: + return False + + # No piece on landing cell, just checking if movement is authorized. + else: + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + if dx == 1 and dy == 0 and self.is_white(): + return True + elif dx == -1 and dy == 0 and not self.is_white(): + return True + + else: + # Initial move authorized to be two cells at once. Should check self.has_moved here ? + if start.get_x() == 1 and dx == 2 and dy == 0 and self.is_white(): + return True + elif ( + start.get_x() == 6 and dx == -2 and dy == 0 and not self.is_white() + ): + return True + else: + return False + + def can_move(self, board, move): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + authorized_move = self.piece_move_authorized(move.start, move.end) + + if not authorized_move: + """to remove ?""" + crossed_cell = board.get_cell(move.start.get_x(), move.end.get_y()) + crossed_piece = crossed_cell.get_piece() + if isinstance(crossed_piece, Pawn): + if ( + crossed_piece.last_move_is_double + and crossed_piece.is_white() != self.is_white() + ): + # Revoir comment on update cet attribut last_move_is_double + authorized_move = True + move.complementary_passant = crossed_cell + else: + # Checks that no piece (friend or foe) is blocking the cell(s) in front. + dx = move.end.get_x() - move.start.get_x() + + if dx > 1: + if ( + board.get_cell( + move.start.get_x() + 1, move.start.get_y() + ).get_piece() + is not None + ): + return False + elif dx < -1: + if ( + board.get_cell( + move.start.get_x() - 1, move.start.get_y() + ).get_piece() + is not None + ): + return False + """ + if move.end.get_x() == 7 and self.is_white(): + move.transform_pawn = True + elif move.end.get_x() == 0 and not self.is_white(): + move.transform_pawn = True + """ + return authorized_move + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + + possible_moves = [] + if self.is_white(): + # Front cell + if x < 7: + possible_moves.append((x + 1, y)) + + # Diagonal cells + if y - 1 >= 0: + possible_moves.append((x + 1, y - 1)) + if y + 1 <= 7: + possible_moves.append((x + 1, y + 1)) + + # Double front cell + if x == 1: + possible_moves.append((x + 2, y)) + + # Symmetric for black pawns + else: + if x > 0: + possible_moves.append((x - 1, y)) + + if y - 1 >= 0: + possible_moves.append((x - 1, y - 1)) + if y + 1 <= 7: + possible_moves.append((x - 1, y + 1)) + if x == 6: + possible_moves.append((x - 2, y)) + + return possible_moves + + + @abstractmethod + def get_threatened_cells_on_board(self, board): + """ + Method to list which cells are threatened by the piece (authorized movement + conditioned on other pieces on board). + + Parameters + ---------- + board: Board + game board self belong to + + Returns + ------- + list + List of threatened cells + + """ + + cells_threatened = [] + if self.is_white(): + + if x < 7: + # Diagonal cells + if y - 1 >= 0: + cells_threatened.append((x + 1, y - 1)) + if y + 1 <= 7: + cells_threatened.append((x + 1, y + 1)) + + # Symmetric for black pawns + else: + + if x > 0: + if y - 1 >= 0: + cells_threatened.append((x - 1, y - 1)) + if y + 1 <= 7: + cells_threatened.append((x - 1, y + 1)) + + return cells_threatened + + def promote(self, promote_into="Queen"): + """Method to promote a pawn to other material type. Only happens if the pawn reaches the other side of the board. + The player can choose which type of material he wants its pawn to be promoted into. + + Parameters + ---------- + promote_into: str + Type of material to promote the pawn into. + + Returns + ------- + Piece + New piece with right promotion and same coordinates of current pawn. + """ + # Should we verify color and coordinates of Pawn ? + if self.is_white(): + assert self.x == 7, "Pawn has not reached other side of the board" + else: + assert self.x == 0, "Pawn has not reached the other side of the board" + + if promote_into.lower() == "queen": + return Queen(white=self.is_white(), x=self.x, y=self.y) + elif promote_into.lower() == "rook": + rook = Rook(white=self.is_white(), x=self.x, y=self.y) + rook.has_moved = True + return rook + elif promote_into == "knight": + return Knight(white=self.is_white(), x=self.x, y=self.y) + elif promote_into == "bishop": + return Bishop(white=self.is_white(), x=self.x, y=self.y) + else: + raise ValueError( + f"Cannot promote piece into, {promote_into}, piece unknown" + ) + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " P " + + +class Bishop(Piece): + """Base class for the bishop pieces + + Implements the properties, attributes and functions specific to bishops. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False. + """ + + type = "bishop" + + def __init__(self, *args, **kwargs): + """Initialization of the bishop. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Bishop + Exact copy of self. + """ + copied_piece = Bishop(self.white, self.x, self.y) + copied_piece.killed = self.killed + return copied_piece + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + if not super().piece_move_authorized(start=start, end=end): + return False + + # Checking movemement + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + if abs(dx) == abs(dy): + return True + else: + return False + + def can_move(self, board, move): + """Method to verify if a move is authorized within a board. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + # Checking if movement is alright + authorized_move = self.piece_move_authorized(move.start, move.end) + if authorized_move: + dx = move.end.get_x() - move.start.get_x() + dy = move.end.get_y() - move.start.get_y() + + # Checking that no material is blocking the trajectory + for i in range(1, abs(dx)): + x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() + y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() + if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: + return False + return True + else: + return False + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + possible_moves = [] + + # Diagonal 1 + nx = x - 1 + ny = y - 1 + while nx >= 0 and ny >= 0: + possible_moves.append((nx, ny)) + nx -= 1 + ny -= 1 + + # Diagonal 2 + nx = x - 1 + ny = y + 1 + while nx >= 0 and ny <= 7: + possible_moves.append((nx, ny)) + nx -= 1 + ny += 1 + + # Diagonal 3 + nx = x + 1 + ny = y - 1 + while nx <= 7 and ny >= 0: + possible_moves.append((nx, ny)) + nx += 1 + ny -= 1 + + # Diagonal 4 + nx = x + 1 + ny = y + 1 + while nx <= 7 and ny <= 7: + possible_moves.append((nx, ny)) + nx += 1 + ny += 1 + + return possible_moves + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " B " + + +class Rook(Piece): + """Base class for the rook pieces + + Implements the properties, attributes and functions specific to rooks. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False. + has_moved: bool + Whether the piece has already moved during a game or not. Initialized to False. + """ + + type = "rook" + + def __init__(self, *args, **kwargs): + """Initialization of the rook. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + self.has_moved = False + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Rook + Exact copy of self. + """ + copied_piece = Rook(self.white, self.x, self.y) + copied_piece.killed = self.killed + copied_piece.has_moved = self.has_moved + return copied_piece + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + if not super().piece_move_authorized(start=start, end=end): + return False + + # Checking movement + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + if dx == 0 or dy == 0: + return True + else: + return False + + def can_move(self, board, move): + """Method to verify if a move is authorized within a board. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + + # Checking that movement is authorized + authorized_move = self.piece_move_authorized(move.start, move.end) + if authorized_move: + dx = move.end.get_x() - move.start.get_x() + dy = move.end.get_y() - move.start.get_y() + # Checking that no material in x axis is blocking the trajectory + for i in range(1, abs(dx)): + x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() + y_trajectory = move.start.get_y() + if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: + return False + + # Checking that no material in the y axis is blocking the trajectory + for i in range(1, abs(dy)): + x_trajectory = move.start.get_x() + y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() + if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: + return False + return True + else: + return False + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + possible_moves = [] + + # X-axis left + nx = x - 1 + while nx >= 0: + possible_moves.append((nx, y)) + nx -= 1 + + # X-axis right + ny = y + 1 + while ny <= 7: + possible_moves.append((x, ny)) + ny += 1 + + # Y-axis top + nx = x + 1 + while nx <= 7: + possible_moves.append((nx, y)) + nx += 1 + + # Y-axis down + ny = y - 1 + while ny >= 0: + possible_moves.append((x, ny)) + ny -= 1 + + return possible_moves + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " R " + + +class Knight(Piece): + """Base class for the knoght pieces + + Implements the properties, attributes and functions specific to knights. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False. + """ + + type = "knight" + + def __init__(self, *args, **kwargs): + """Initialization of the knight. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Knight + Exact copy of self. + """ + copied_piece = Knight(self.white, self.x, self.y) + copied_piece.killed = self.killed + return copied_piece + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + if not super().piece_move_authorized(start=start, end=end): + return False + + dx = start.get_x() - end.get_x() + dy = start.get_y() - end.get_y() + return abs(dx) * abs(dy) == 2 + + def can_move(self, board, move): + """Method to verify if a move is authorized within a board. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + # The knight is jumping, no need to verify blocking material + return self.piece_move_authorized(move.start, move.end) + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " N " + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + possible_moves = [] + + # All difference position that a knight can move to + combos = [ + (2, 1), + (1, 2), + (-2, 1), + (2, -1), + (-2, -1), + (-1, 2), + (1, -2), + (-1, -2), + ] + for nx, ny in combos: + if 0 <= nx + x <= 7 and 0 <= ny + y <= 7: + possible_moves.append((x + nx, y + ny)) + + return possible_moves + + +class Queen(Piece): + """Base class for the queen pieces + + Implements the properties, attributes and functions specific to queens. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False. + """ + + type = "queen" + + def __init__(self, *args, **kwargs): + """Initialization of the queen. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + Queen + Exact copy of self. + """ + copied_piece = Queen(self.white, self.x, self.y) + copied_piece.killed = self.killed + return copied_piece + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + + if not super().piece_move_authorized(start=start, end=end): + return False + + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + + return (dx == 0) or (dy == 0) or (abs(dx) == abs(dy)) + + def can_move(self, board, move): + """Method to verify if a move is authorized within a board. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + # Checking if movement is authorized + authorized_move = self.piece_move_authorized(move.start, move.end) + + # Checking that no material is blocking the trajectory + if authorized_move: + dx = move.end.get_x() - move.start.get_x() + dy = move.end.get_y() - move.start.get_y() + + # Queen going along an axis + if dx == 0 or dy == 0: + # Along X-axis + for i in range(1, abs(dx)): + x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() + y_trajectory = move.start.get_y() + if ( + board.get_cell(x_trajectory, y_trajectory).get_piece() + is not None + ): + return False + # Along Y-axis + for i in range(1, abs(dy)): + x_trajectory = move.start.get_x() + y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() + if ( + board.get_cell(x_trajectory, y_trajectory).get_piece() + is not None + ): + return False + return True + + # Queen going in diagonal + elif abs(dx) == abs(dy): + for i in range(1, abs(dx)): + x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() + y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() + if ( + board.get_cell(x_trajectory, y_trajectory).get_piece() + is not None + ): + return False + return True + else: + return False + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + possible_moves = [] + + # Diagonal 1 + nx = x - 1 + ny = y - 1 + while nx >= 0 and ny >= 0: + possible_moves.append((nx, ny)) + nx -= 1 + ny -= 1 + + # Diagonal 2 + nx = x - 1 + ny = y + 1 + while nx >= 0 and ny <= 7: + possible_moves.append((nx, ny)) + nx -= 1 + ny += 1 + + # Diagonal 3 + nx = x + 1 + ny = y - 1 + while nx <= 7 and ny >= 0: + possible_moves.append((nx, ny)) + nx += 1 + ny -= 1 + + # Diagonal 4 + nx = x + 1 + ny = y + 1 + while nx <= 7 and ny <= 7: + possible_moves.append((nx, ny)) + nx += 1 + ny += 1 + + # X-axis left + nx = x - 1 + while nx >= 0: + possible_moves.append((nx, y)) + nx -= 1 + + # X-axis right + nx = x + 1 + while nx <= 7: + possible_moves.append((nx, y)) + nx += 1 + + # Y-axis down + ny = y - 1 + while ny >= 0: + possible_moves.append((x, ny)) + ny -= 1 + + # Y-axis top + ny = y + 1 + while ny <= 7: + possible_moves.append((x, ny)) + ny += 1 + + return possible_moves + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " Q " + + +class King(Piece): + """Base class for the king pieces + + Implements the properties, attributes and functions specific to kings. + + Attributes + ---------- + white : bool + Whether the piece is white or black. + x : int + x coordinate of piece on board + y : int + y coordinate of piece on board + killed: bool + Whether the piece has been killed by opponent or not. Initialized to False + has_moved: bool + Whether the piece has already moved during a game or not. Initialized to False + castling_done: bool + Whether the piece has already realized castling. Initialized to False. + """ + + type = "king" + + def __init__(self, *args, **kwargs): + """Initialization of the king. + + Parameters + ---------- + white : bool + Whether the piece is white or black. + x : int + initial x coordinate of piece on board + y : int + initial y coordinate of piece on board + + """ + super().__init__(*args, **kwargs) + self.castling_done = False + self.has_moved = False + + def piece_deepcopy(self): + """Method to create an uncorrelated clone of the piece. + + Returns + ------- + King + Exact copy of self. + """ + copied_piece = King(self.white, self.x, self.y) + copied_piece.killed = self.killed + copied_piece.castling_done = self.castling_done + copied_piece.has_moved = self.has_moved + return copied_piece + + def set_castling_done(self, castling_done): + self.castling_done = castling_done + + def piece_move_authorized(self, start, end): + """Method to verify if is a move is authorized in terms of movements. + + Parameters + ---------- + start: engine.Cell + Starting cell for movement check (current cell). + end: engine.Cell + Landing cell for movement check. + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + + if not super().piece_move_authorized(start=start, end=end): + return False + dx = end.get_x() - start.get_x() + dy = end.get_y() - start.get_y() + + if abs(dx) < 2 and abs(dy) < 2: + return True + else: + return False + + def can_move(self, board, move): + """Method to verify if a move is authorized within a board. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to and on which the movement is tested + move: engine.Move + Move object to be tested + + Returns + ------- + bool + Whether the movement is authorized by the piece possibilities or not. + """ + # Checking if movement is authorized + authorized_move = self.piece_move_authorized(move.start, move.end) + if authorized_move: + # Verifying that the landing cell is not threatened by some adversary material + if move.end.is_threatened(board, self.is_white()): + return False + else: + return True + # If move is not authorized it could mean that player is trying to do a special move, i.e. castling + else: + # Checking castling conditions on the right then on the left + if ( + not self.castling_done + and not self.has_moved + and (move.end.y == 6 or move.end.y == 2) + ): + if move.end.y == 6: # Roque vers la droite + # Getting the rook for castling + rook_to_move = board.get_cell(move.start.x, 7).get_piece() + rook_starting_coordinates = (move.start.x, 7) + rook_ending_coordinates = (move.start.x, 5) + + # Listing cells that must not have material on + if isinstance(rook_to_move, Rook): + must_be_empty_cells = [ + board.get_cell(move.start.x, 5), + board.get_cell(move.start.x, 6), + ] + must_not_be_threatened_cells = [ + board.get_cell(move.start.x, 4), + board.get_cell(move.start.x, 5), + board.get_cell(move.start.x, 6), + ] + else: + return False + + elif move.end.y == 2: # Roque vers la gauche + rook_to_move = board.get_cell(move.start.x, 0).get_piece() + rook_starting_coordinates = (move.start.x, 0) + rook_ending_coordinates = (move.start.x, 3) + + # Getting the rook + if isinstance(rook_to_move, Rook): + # Listing cells that must not have material on + must_be_empty_cells = [ + board.get_cell(move.start.x, 1), + board.get_cell(move.start.x, 2), + board.get_cell(move.start.x, 3), + ] + must_not_be_threatened_cells = [ + board.get_cell(move.start.x, 2), + board.get_cell(move.start.x, 3), + board.get_cell(move.start.x, 4), + ] + else: + return False + + else: + return False + + # Verifying conditions for listed cells + empty_cells_check = True + not_threatened_cells = True + for cll in must_be_empty_cells: + if cll.get_piece() is not None: + empty_cells_check = False + for cll in must_not_be_threatened_cells: + if cll.is_threatened(board, self.is_white()): + not_threatened_cells = False + + # Verify that all conditions are met and completes the move so that it has the full castling information + # to operate all the movements + conditions_to_castling = [ + not rook_to_move.has_moved, + empty_cells_check, + not_threatened_cells, + ] + if all(conditions_to_castling): + move.complementary_castling = ( + rook_to_move, + board.get_cell( + rook_starting_coordinates[0], rook_starting_coordinates[1] + ), + board.get_cell( + rook_ending_coordinates[0], rook_ending_coordinates[1] + ), + ) + return True + else: + return False + return False + + def get_potential_moves(self, x, y): + """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a + board. + + Parameters + ---------- + x: int + x coordinate of the piece + y: int + y coordinate of the piece + + Returns + ------- + list + List of authorized moves + """ + possible_moves = [] + + # All possible moves + combos = [(1, 0), (1, 1), (-1, 1), (1, -1), (-1, -1), (0, 1), (0, -1), (-1, 0)] + for nx, ny in combos: + if 0 <= x + nx <= 7 and 0 <= y + ny <= 7: + possible_moves.append((nx + x, ny + y)) + + # Add castling as potential moves if not done yet + if not self.has_moved: + possible_moves.append((x, 1)) + possible_moves.append((x, 6)) + + return possible_moves + + def get_str(self): + """Method to represent the piece as a string. + + Returns + ------- + str + String representation of the piece + """ + return " K " + + def is_checked(self, board): + """Method to verify that the king at its current position is not threatened / checked by opponent material. + + Parameters + ---------- + board: engine.Board + Board to which the piece belongs to + + Returns + ------- + bool + Whether the king is checked or not. + """ + + return board.get_cell(self.x, self.y).is_threatened(board, self.white) + + # def is_checked_mate(self, board): + # if not self.is_checked(board): + # return False + # + # for i in range(8): + # for j in range(8): + # piece = board.get_cell(i, j).get_piece() + # if piece is not None: + # if piece.is_white() == self.is_white(): + # for move in piece.get_potential_moves(piece.x, piece.y): + # selected_move = Move(None, board.get_cell(i, j), + # board.get_cell(move[0], move[1])) + # verified_move = piece.can_move(board, selected_move) + # + # if verified_move: + # copied_board = board.copy() diff --git a/pyalapin/engine/move.py b/pyalapin/engine/move.py new file mode 100644 index 0000000..235e6d0 --- /dev/null +++ b/pyalapin/engine/move.py @@ -0,0 +1,470 @@ +import copy +import pickle + +import engine.material as material + + +class Move: + """Base class for material movement. + + Implements various checks and is able to operate a piece movement along additional actions such as taking an + adversary piece, castling, en passant. + + Attributes + ---------- + player : player.Player + Which player wants to play the move. + board : Engine.Board + board of the game on which the move is operated. + start : engine.Cell + Current cell on which the moved piece is. + end: engine.Cell + Cell on which the piece is moved to. + moved_piece: material.Piece + Piece of the board that is moved. + killed_piece: [None or material.Piece] + If a piece is killed during the move (meaning that there is a piece on cell end) otherwise is None. + is_castling: bool + Whether the move it castling. + complementary_castling: [None or material.Piece] + If is_castling, holds additional information => To be moved in extras ? + is_en_passant: bool + Whether or not the move is taking a Pawn 'En Passant' + extras: dict + Used to introduce additional information such as piece for promotion. + + """ + + def __init__(self, player, board, start, end, extras={}): + """Initialization of the piece. + + Parameters + ---------- + player : player.Player + Which player wants to play the move. + board : Engine.Board + board of the game on which the move is operated. + start : engine.Cell + Current cell on which the moved piece is. + end: engine.Cell + Cell on which the piece is moved to. + extras: dict + Used to introduce additional information such as piece for promotion. + + """ + self.player = player + self.board = board + self.start = start # Should we take only starting coordinates ? + self.end = end # Should we take only landing coordinates ? + self.extras = extras + + self.moved_piece = start.get_piece() # Check that moved_piece is not None ? + + self.killed_piece = self.end.get_piece() + self.is_castling = False + self.complementary_castling = None + self.en_passant = False + + def deepcopy(self): + """Method to create an uncorrelated clone of the move. + + Returns + ------- + Move + Exact copy of self. + + """ + # Rethink what needs to be copied and what needs not. + copied_board = self.board.deepcopy() + copied_move = Move( + self.player, + copied_board, + copied_board.get_cell(self.start.x, self.start.y), + copied_board.get_cell(self.end.x, self.end.y), + ) + copied_move.is_castling = self.is_castling + copied_move.complementary_castling = self.complementary_castling + copied_move.en_passant = self.en_passant + return copied_move + + def _set_moved_attribute(self): + """Method to set the 'has_moved' attributes for the pieces that need to check whether + they have already moved or not. + Also, if the piece is a Pawn, changes the last_move_is_double attribute so that it can + be taken 'En Passant' if this is the case. + """ + if hasattr( + self.moved_piece, "has_moved" + ): # Check if the moved piece has the attribute + self.moved_piece.has_moved = True + + if hasattr(self.moved_piece, "last_move_is_double"): # Check if it is a Pawn + if ( + abs(self.start.get_x() - self.end.get_x()) > 1 + ): # If the move is a double forward + self.moved_piece.last_move_is_double = True + else: + self.moved_piece.last_move_is_double = False + + def _set_castling_done(self): + """ + If self is a castling move, then when it is done this function sets the castling_done attribute + of the concerned King to True, so that it cannot use castling twice. + """ + assert isinstance(self.moved_piece, material.King) + self.moved_piece.castling_done = True + + def _is_castling(self): + """ + Checks if the current move is castling. In particular verifies that: + - the moved piece is a King + - the moved King has not already used its castling + - the King has not already moved + - the comparnion Rook is on the right Cell + - the companion Rook has not already moved + - the Cells between the King and the Rook are empty + - the King landing Cell is not threatened by adversary Pieces + Also if it is a castling move sets in self.extra the Rook that needs to be moved along the King + + Returns + ------- + bool + Whether self is castling or not. + """ + if not isinstance(self.moved_piece, material.King): + ###print("not castling becasuse king not moved") + return False + elif self.moved_piece.castling_done or self.moved_piece.has_moved: + ###print(self.moved_piece.castling_done) + ###print(self.moved_piece.has_moved) + return False + + else: + if self.end.y == 6: # Castling in the right + rook_to_move = self.board.get_cell(self.start.x, 7).get_piece() + if not isinstance(rook_to_move, material.Rook): + return False + elif rook_to_move.has_moved: + return False + else: + rook_starting_coordinates = (self.start.x, 7) + rook_ending_coordinates = (self.start.x, 5) + must_be_empty_cells = [ + self.board.get_cell(self.start.x, 5), + self.board.get_cell(self.start.x, 6), + ] + must_not_be_threatened_cells = [ + self.board.get_cell(self.start.x, 4), + self.board.get_cell(self.start.x, 5), + self.board.get_cell(self.start.x, 6), + ] + + elif self.end.y == 2: # Castling on the left + rook_to_move = self.board.get_cell(self.start.x, 0).get_piece() + if not isinstance(rook_to_move, material.Rook): + return False + elif rook_to_move.has_moved: + return False + else: + rook_starting_coordinates = (self.start.x, 0) + rook_ending_coordinates = (self.start.x, 3) + must_be_empty_cells = [ + self.board.get_cell(self.start.x, 1), + self.board.get_cell(self.start.x, 2), + self.board.get_cell(self.start.x, 3), + ] + must_not_be_threatened_cells = [ + self.board.get_cell(self.start.x, 2), + self.board.get_cell(self.start.x, 3), + self.board.get_cell(self.start.x, 4), + ] + else: + ###print('king did not move to a castling position') + return False + + # Verifying that the cells between rook and king are empty and that starting + # and landing cells for the king are not threatened. + empty_cells_check = True + not_threatened_cells = True + for cll in must_be_empty_cells: + if cll.get_piece() is not None: + empty_cells_check = False + for cll in must_not_be_threatened_cells: + if cll.is_threatened(self.board, self.moved_piece.is_white()): + not_threatened_cells = False + + # Verifies that both conditions are met + conditions_to_castling = [empty_cells_check, not_threatened_cells] + if all(conditions_to_castling): + self.complementary_castling = ( # To store in self.extras :) + rook_to_move, + self.board.get_cell( + rook_starting_coordinates[0], rook_starting_coordinates[1] + ), + self.board.get_cell( + rook_ending_coordinates[0], rook_ending_coordinates[1] + ), + ) + self.extras["complementary_castling"] = ( + rook_to_move, + self.board.get_cell( + rook_starting_coordinates[0], rook_starting_coordinates[1] + ), + self.board.get_cell( + rook_ending_coordinates[0], rook_ending_coordinates[1] + ), + ) + return True + + else: + ###print('Conditions for castling:') + ###print('Rook has not moved:', rook_to_move.has_moved) + ###print('Cells in between empty:', empty_cells_check) + ###print('Cells in between not threatened:', not_threatened_cells) + return False + + def _is_en_passant(self): + """ + Checks if the current move is an 'En passant' capture. In particular verifies that: + - the moved piece is a Pawn + - the movement of the pices is in diagonal + - the move crosses another Pawn + - this crossed Pawn is of different color + - this crossed Pawn last move is a double forward advance + Also if it is an 'En passant' capture sets the crossed Pawn as killed_piece + Returns + ------- + bool + Whether self is an 'En passant' capture or not. + """ + if isinstance( + self.moved_piece, material.Pawn + ): # Only a Pawn can take 'En Passant' + dx = self.start.get_x() - self.end.get_x() + dy = self.start.get_y() - self.end.get_y() + # Needs the movement to be in diagonal and that no piece is on the landing Cell + if dy == 0 or self.killed_piece is not None: + return False + + else: + # Retrieving crossed Piece + crossed_cell = self.board.get_cell(self.start.get_x(), self.end.get_y()) + crossed_piece = crossed_cell.get_piece() + # Verifying the crossed Piece is a Pawn + if isinstance(crossed_piece, material.Pawn): + # Verifying color and last move of crossed_piece + if ( + crossed_piece.last_move_is_double + and crossed_piece.is_white() != self.moved_piece.is_white() + ): + # Revoir comment on update cet attribut last_move_is_double + self.killed_piece = crossed_piece + self.en_passant = True + return True + else: + return False + else: + return False + else: + return False + + def _is_pawn_promotion(self): + """ + Checks if the current move is should ends up with a Pawn promotion, meaning that: + - the moved piece is a Pawn + - the Pawn reaches the other side of the board according to its color + If the Piece it should be promote into is not specified in self.extras then sets Queen as promotion. + + Returns + ------- + bool + Whether self should ends up by a Pawn promotion or not. + """ + # Checks the piece + if not isinstance(self.moved_piece, material.Pawn): + return False + else: + # Checks if the Pawn has reached the other side of the board. + if self.end.get_x() == 7 and self.moved_piece.is_white(): # White Piece + # Standard is to promote into a Queen if not specified + self.promote_into = self.extras.get("promote_into", "queen") + return True + + elif ( + self.end.get_x() == 0 and not self.moved_piece.is_white() + ): # Black Piece + # Standard is to promote into a Queen if not specified + self.promote_into = self.extras.get("promote_into", "queen") + return True + else: + return False + + def _promote_pawn(self): + """ + Organizes the Pawn promotion. + """ + coordinates = (self.end.get_x(), self.end.get_y()) + self.board.promote_pawn(coordinates=coordinates, promote_into=self.promote_into) + + def move_pieces(self): + """ + Effectively moves pieces on board + """ + # Do everything from coordinates so that only board needs to be copied in self.deepcopy() ? + + # Kills Piece on landing Cell if needed. + if self.killed_piece is not None: + self.board.kill_piece_from_coordinates((self.end.x, self.end.y)) + # Moves Piece on the Board + self.board.move_piece_from_coordinates( + (self.start.x, self.start.y), (self.end.x, self.end.y) + ) + + # Executes castling if needed + if self.complementary_castling is not None and self.is_castling: + castling_rook, rook_start, rook_end = self.complementary_castling + self.board.move_piece_from_coordinates( + (rook_start.x, rook_start.y), (rook_end.x, rook_end.y) + ) + + # Sets castling to done + self._set_castling_done() + + # Promotes Pawn if needed + if self._is_pawn_promotion(): + self._promote_pawn() + + # Sets the different movement related attributes of Pieces + self._set_moved_attribute() + + def is_possible_move(self): + # REFONDRE, particulièrement, faire en sorte qu'on ne vérifie chaque condition qu'une seule fois + # Why castling is checked here ? + """ + Checks if move is possible. In particular checks that: + - Landing Cell is different than current Cell + - Checks the color of the potential Piece on the landing Cell + - Movement on the Board is authorized according to the Piece type + - If moved Piece is a King, does not land on a threatened Cell + + If the Piece it should be promote into is not specified in self.extras then sets Queen as promotion. + + Returns + ------- + bool + Whether the move is legal or not. + """ + # Should be kept ? + + dx = self.start.get_x() - self.end.get_x() + dy = self.start.get_y() - self.end.get_y() + + # If no movement not possible + if abs(dx) == 0 and abs(dy) == 0: + return False + + """ + # Check color of player and color of moving piece: + if self.moved_piece.is_white() != self.player.is_white_side(): + ###print(self.moved_piece, self.moved_piece.is_white(), self.player.is_white_side()) + ###print("Player", self.player, "tries to move adversaries pieces") + return False + """ + + # check color of receiving piece + if self.killed_piece is not None: + if self.moved_piece.is_white() == self.killed_piece.is_white(): + return False + if self.killed_piece.is_white() == self.player.is_white_side(): + return False + + # good moving for type of piece selected + is_legal_move = self.moved_piece.can_move(self.board, self) + + # Why here ? + self.is_castling = self._is_castling() + + if not is_legal_move: + if not self._is_en_passant() or not self.is_castling: + return False + + """ + # Check for chess + def work_future(curr_move, curr_board): + future_board = copy.deepcopy(curr_board) + x_start = curr_move.start.get_x() + y_start = curr_move.start.get_y() + x_end = curr_move.end.get_x() + y_end = curr_move.end.get_y() + future_piece = future_board.get_cell(x_start, y_start).get_piece() + + future_board.get_cell(x_end, y_end).set_piece(future_piece) + future_board.get_cell(x_start, y_start).set_piece(None) + + if hasattr(future_piece, 'has_moved'): + future_piece.has_moved = True + if hasattr(future_piece, 'last_move_is_double'): + if abs(x_start - x_end) > 1: + future_piece.last_move_is_double = True + else: + future_piece.last_move_is_double = False + + # Check for castling + if curr_move.complementary_castling is not None: + ###print('Apparently future castling move, working on moving the Rook') + castling_rook, rook_start, rook_end = curr_move.complementary_castling + rook_start = future_board.get_cell(rook_start.get_x(), rook_start.get_y()) + rook_end = future_board.get_cell(rook_end.get_x(), rook_end.get_y()) + castling_rook = rook_start.get_piece() + + rook_end.set_piece(castling_rook) + rook_start.set_piece(None) + + # Check for prise en passant + if curr_move.complementary_passant is not None: + ###print('This future move is taking En Passant') + x_passant = curr_move.complementary_passant.get_x() + y_passant = curr_move.complementary_passant.get_y() + + en_passant_piece = future_board.get_cell(x_passant, y_passant).get_piece() + en_passant_piece.set_killed(True) + future_board.get_cell(x_passant, y_passant).set_piece(None) + + # Checking if future king is chessed + if curr_move.player.is_white_side(): + king = future_board.white_king + else: + king = future_board.black_king + + return future_board.get_cell(king.x, king.y).is_threatened(future_board, king.is_white()) + """ + # Checks if the player's King is threatened after the move. + is_king_threatened_in_future = self._work_future_to_check_chess() + if is_king_threatened_in_future: + return False + + return True + + def _work_future_to_check_chess(self): # Can it be done better ? + """ + Effectively move the Piece and check if the King is then threatened. In this case, move cannot happen. + + Returns + ------- + bool + Whether the player's King is threatened once the move done. + """ + + # Deep Copy everything + move = self.deepcopy() + # Move Piece + move.move_pieces() + + # Select player's King and check if threatened. + if move.player.is_white_side(): + king = move.board.white_king + else: + king = move.board.black_king + return move.board.get_cell(king.x, king.y).is_threatened( + move.board, king.is_white() + ) diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py new file mode 100644 index 0000000..cf99006 --- /dev/null +++ b/pyalapin/interface/interface.py @@ -0,0 +1,269 @@ +import numpy as np +import os +import time + +from kivy.app import App +from kivy.uix.gridlayout import GridLayout +from kivy.uix.boxlayout import BoxLayout +from kivy.uix.label import Label +from kivy.uix.textinput import TextInput +from kivy.uix.button import Button +from kivy.uix.popup import Popup + +from kivy.graphics import Rectangle, Color, Canvas + +from engine.engine import Game + + +class LoginScreen(GridLayout): + def __init__(self, **kwargs): + super(LoginScreen, self).__init__(**kwargs) + self.cols = 8 + self.add_widget(Label(text="")) + self.username = TextInput(multiline=False) + self.add_widget(self.username) + self.add_widget(Label(text="password")) + self.password = TextInput(password=True, multiline=False) + self.add_widget(self.password) + + self.add_widget(Label(text="password2")) + self.password2 = TextInput(password=True, multiline=False) + self.add_widget(self.password2) + + self.add_widget(Rectangle(pos=(10, 10), size=(500, 500))) + + +class DisplayableCell(Button): + def __init__(self, row, column, **kwargs): + super(DisplayableCell, self).__init__(**kwargs) + self.row = row + self.column = column + + +class TableScreen(GridLayout): + def __init__(self, game, **kwargs): + super(TableScreen, self).__init__(**kwargs) + self.path_to_illustrations = "illustrations" + self.game = game + + if game.ai: + self.ai_playing = True + else: + self.ai_playing = False + + self.cols = 8 + self.rows = 8 + + self.to_play_player = game.player1 + + self.first_cell_clicked = None + + self.cells = [] + + for i in range(8): + line = [] + for j in range(8): + if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): + color = (0.4, 0.4, 0.8, 1) + c_img = "b" + else: + color = (0.4, 0.8, 0.4, 1) + c_img = "w" + # self.add_widget(Button(text='Button %i %i' % (i, j), background_color=color, + # background_down='illustrations/white_pawn.png', + # background_normal='illustrations/white_queen.png')) + piece = game.board.get_cell(i, j).get_piece() + + if piece is not None: + path_to_img = c_img + + if piece.is_white(): + piece_color = (1, 1, 1, 1) + path_to_img += "w" + else: + piece_color = (0, 0, 0, 1) + path_to_img += "b" + path_to_img += "_" + piece.get_str().replace(" ", "") + ".png" + path_to_down_img = "down_" + path_to_img + + path_to_img = os.path.join(self.path_to_illustrations, path_to_img) + path_to_down_img = os.path.join( + self.path_to_illustrations, path_to_down_img + ) + + piece = piece.get_str() + button = DisplayableCell( + text=piece, + on_press=self.click_cell, + row=i, + column=j, + color=piece_color, + background_normal=path_to_img, + border=(0, 0, 0, 0), + background_down=path_to_down_img, + ) + else: + piece = "" + piece_color = (1, 1, 1, 1) + path_to_img = c_img + ".png" + path_to_down_img = "down_" + path_to_img + + path_to_img = os.path.join(self.path_to_illustrations, path_to_img) + path_to_down_img = os.path.join( + self.path_to_illustrations, path_to_down_img + ) + + button = DisplayableCell( + text=piece, + background_normal=path_to_img, + on_press=self.click_cell, + row=i, + column=j, + color=piece_color, + border=(0, 0, 0, 0), + background_down=path_to_down_img, + ) + self.add_widget(button) + line.append(button) + self.cells.append(line) + + def reset_game(self, button): + print("On click, Reset", button) + self.game.reset_game() + self.update() + + def update(self): + board = self.game.board + for i in range(8): + for j in range(8): + if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): + c_img = "b" + else: + c_img = "w" + + piece = board.get_cell(i, j).get_piece() + if piece is not None: + path_to_img = c_img + if piece.is_white(): + piece_color = (1, 1, 1, 1) + path_to_img += "w" + else: + piece_color = (0, 0, 0, 1) + path_to_img += "b" + piece = piece.get_str() + path_to_img += "_" + piece.replace(" ", "") + ".png" + else: + piece = "" + piece_color = (1, 1, 1, 1) + path_to_img = c_img + ".png" + + path_to_down_img = "down_" + path_to_img + path_to_img = os.path.join(self.path_to_illustrations, path_to_img) + path_to_down_img = os.path.join( + self.path_to_illustrations, path_to_down_img + ) + self.cells[i][j].text = piece + self.cells[i][j].color = piece_color + self.cells[i][j].background_normal = path_to_img + self.cells[i][j].background_down = path_to_down_img + + def finish_game(self, winner): + popup = Popup(title="Game finished", auto_dismiss=False) + popup.bind(on_dismiss=self.reset_game) + + box = BoxLayout() + box.add_widget(Label(text="Congratulations %s has won" % winner)) + restart_button = Button(text="Restart a game!") + restart_button.bind(on_press=popup.dismiss) + box.add_widget(restart_button) + + popup.bind(on_dismiss=self.reset_game) + popup.content = box + popup.open() + + def click_cell(self, event): + ( + self.cells[event.row][event.column].background_normal, + self.cells[event.row][event.column].background_down, + ) = ( + self.cells[event.row][event.column].background_down, + self.cells[event.row][event.column].background_normal, + ) + if self.first_cell_clicked is None: + self.first_cell_clicked = (event.row, event.column) + elif ( + self.first_cell_clicked[0] == event.row + and self.first_cell_clicked[1] == event.column + ): + print("Selection Aborted") + self.first_cell_clicked = None + else: + start_x = self.first_cell_clicked[0] + start_y = self.first_cell_clicked[1] + end_x = event.row + end_y = event.column + + print(self.game.player1, self.game.to_play_player) + validated_move, winner = self.game.move_from_coordinates( + self.game.to_play_player, start_x, start_y, end_x, end_y + ) + print( + "Validated move ?", + validated_move, + self.game.to_play_player, + start_x, + start_y, + end_x, + end_y, + winner, + ) + + if validated_move: + self.update() + + if self.ai_playing: + print("Time for AI") + ai_move = self.game.player2.time_to_play(self.game.board) + self.game.board.draw() + game_is_on = self.game.move(ai_move, self.game.player2) + + if game_is_on[0]: + self.update() + else: + if isinstance(game_is_on[1], str): + self.finish_game(game_is_on[1]) + else: + pass + + elif isinstance(winner, str): + print("WINNER", winner) + self.finish_game(winner) + return None + + row, col = self.first_cell_clicked + ( + self.cells[row][col].background_normal, + self.cells[row][col].background_down, + ) = ( + self.cells[row][event.column].background_down, + self.cells[event.row][col].background_normal, + ) + self.first_cell_clicked = None + ( + self.cells[event.row][event.column].background_normal, + self.cells[event.row][event.column].background_down, + ) = ( + self.cells[event.row][event.column].background_down, + self.cells[event.row][event.column].background_normal, + ) + + +class MyApp(App): + def __init__(self, play_with_ai=False, **kwargs): + super().__init__(**kwargs) + self.play_with_ai = play_with_ai + + def build(self): + game = Game(automatic_draw=False, ai=self.play_with_ai) + print("game created") + return TableScreen(game) diff --git a/pyalapin/output.pstats b/pyalapin/output.pstats new file mode 100644 index 0000000000000000000000000000000000000000..7bb7d6796e469f0ce97991d029f4da1331d55d15 GIT binary patch literal 103993 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 literal 0 HcmV?d00001 diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py new file mode 100644 index 0000000..a91d186 --- /dev/null +++ b/pyalapin/player/ai_player.py @@ -0,0 +1,451 @@ +import copy +import pickle +import numpy as np + +from player.player import Player +import engine.material as material +import engine.move as move + + +class EasyAIPlayer(Player): + """ + AI Player class with simple rules and alpha/beta pruning to speed up research of the best move in the future. + + Attributes + ---------- + is_white_side : bool + Whether the player plays with white or black Pieces. + piece_weights: dict + Values of the different pieces. + pieces_positions_weights: dict + Values for each piece to be on a certain position. + """ + piece_weights = { + "pawn": 10, + "knight": 30, + "bishop": 30, + "rook": 50, + "queen": 90, + "king": 900, + } + piece_positions_weights = { + "pawn": [ + [0.0] * 8, + [5.0] * 8, + [1.0, 1.0, 2.0, 3.0, 3.0, 2.0, 1.0, 1.0], + [0.5, 0.5, 1.0, 2.5, 2.5, 1.0, 0.5, 0.5], + [0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0], + [0.5, -0.5, -1.0, 0.0, 0.0, -1.0, -0.5, 0.5], + [0.5, 1.0, 1.0, -2.0, -2.0, 1.0, 1.0, 0.5], + [0.0] * 8, + ], + "bishop": [ + [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], + [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-1.0, 0.0, 0.5, 1.0, 1.0, 0.5, 0.0, -1.0], + [-1.0, 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, -1.0], + [-1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0], + [-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0], + [-1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, -1.0], + [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], + ], + "knight": [ + [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], + [-4.0, -2.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0], + [-3.0, 0.0, 1.0, 1.5, 1.5, 1.5, 1.0, 0.0, -3.0], + [-3.0, 0.5, 1.5, 2.0, 2.0, 1.5, 0.5, -3.0], + [-3.0, 0.0, 1.5, 2.0, 2.0, 1.5, 0.0, -3.0], + [-3.0, 0.5, 1.0, 1.5, 1.5, 1.0, 0.5, -3.0], + [-4.0, -2.0, 0.0, 0.5, 0.5, 0.0, -2.0, -4.0], + [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], + ], + "rook": [ + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0], + ], + "queen": [ + [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], + [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-1.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0], + [-0.5, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5], + [0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, 0.0], + [-1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -1.0], + [-1.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], + ], + "king": [ + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-2.0, -3.0, -3.0, -4.0, -4.0, -3.0, -3.0, -2.0], + [-1.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -1.0], + [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0], + [2.0, 3.0, 1.0, 0.0, 0.0, 1.0, 3.0, 2.0], + ], + } + + def __init__(self, *args, **kwargs): + """Initialization of the player. + + Parameters + ---------- + white_side : bool + Whether the player plays with white or black pieces. + """ + super().__init__(*args, **kwargs) + self.color = "white" if self.white_side else "black" + if self.white_side: + # Reverse position values for white pieces player + for key, values in self.piece_positions_weights.items(): + new_values = [] + for i in range(len(values)): + new_values.append(values[-i]) + self.piece_positions_weights[key] = new_values + + def __str__(self): + """Initialization of the player. + + Returns + ------- + str + String representation of the player + """ + return "EasyAIPlayer" + + def _get_possible_moves(self, board, is_white=None): + """Initialization of the player. + + Parameters + ---------- + board: Board + Board on which to look for the possible moves. + is_white : bool or None + If we want the possible moves for a different player, can be used. + """ + if is_white is None: + is_white = self.white_side() + + if self.white_side != is_white: + + class TempPlayer: + def __init__(self): + self.white_side = is_white + + def is_white_side(self): + return self.white_side + + player = TempPlayer() + else: + player = self + color = {True: "white", False: "black"}[is_white] + + possible_moves = [] + # Iterate of pieces + for type_piece in board.all_material[color]["alive"].keys(): + for piece in board.all_material[color]["alive"][type_piece]: + # Get potential moves as coordinates + piece_available_moves = piece.get_potential_moves(piece.x, piece.y) + + # Iterate over piece possible moves + for mv in piece_available_moves: + # Verify that the move is actually possible + selected_move = move.Move( + player, + board, + board.get_cell(piece.x, piece.y), + board.get_cell(mv[0], mv[1]), + ) + # Keep only of possible + # Test letting this test in _alpha_beta + if selected_move.is_possible_move(): + possible_moves.append(selected_move) + + return possible_moves + + def _select_move_from_score(self, moves, method="max"): + """Method to select a move according to the score on the board after the move. + Maximum or minimum score can be selected. + + Parameters + ---------- + moves : list + list of moves among which to chose the best one. + method: str in {"min", "max"} + Whether to select the move leading to minimum or maximum score + + Returns + ------- + move.Move + Selected move + float + Score corresponding to the selected move + """ + # Compute scores + scores = {} + for mv in moves: + mv_ = mv.deepcopy() + # mv_ = pickle.loads(pickle.dumps(mv, -1)) + # mv_ = copy.deepcopy(mv) + mv_.move_pieces() + score = self._score_board(mv_.board) + scores.append(score) + + # Selection os scores + if method == "max": + all_indexes = np.where(scores == np.max(scores))[0] + elif method == "min": + all_indexes = np.where(scores == np.min(scores))[0] + else: + raise ValueError("MIN OR MAX ALGO, selected %s" % method) + # If several moves lead to the same score, select randomly + if len(all_indexes) > 1: + perm = np.random.permutation(len(all_indexes))[0] + final_index = all_indexes[perm] + + # Return + return moves[int(final_index)], scores[final_index] + + # def _def_get_best_score(self, moves, method="max"): + # all_scores = [] + # for mv in moves: + # mv_ = copy.deepcopy(mv) + # mv_.move_pieces() + # score = self._score_board(mv_.board) + # all_scores.append(score) + # + # if method == "max": + # return np.max(all_scores) + # elif method == "min": + # return np.min(all_scores) + # else: + # raise ValueError + + def _search_tree(self, init_board, depth=2, method="max"): + possible_moves = self._get_possible_moves(init_board) + if depth == 1: + best_move, best_score = self._select_move_from_score( + possible_moves, method=method + ) + return best_move, best_score + else: + new_method = {"max": "min", "min": "max"} + scores = [] + for p_mv in possible_moves: + p_mv = p_mv.deepcopy() + # p_mv = pickle.loads(pickle.dumps(p_mv, -1)) + # p_mv = copy.deepcopy(p_mv) + p_mv.move_pieces() + _, score = self._search_tree( + p_mv.board, depth=depth - 1, method=new_method[method] + ) + scores.append(score) + + if method == "max": + best_score = np.max(scores) + else: + best_score = np.min(score) + + best_indexes = np.where(np.array(scores) == best_score)[0] + final_index = best_indexes[np.random.permutation(len(best_indexes))[0]] + return possible_moves[int(final_index)], best_score + + def _score_move(self, move): + all_scores = {} + mv_ = move.deepcopy() + # mv_ = pickle.loads(pickle.dumps(move, -1)) + # mv_ = copy.deepcopy(move) + mv_.move_pieces() + score = self._score_board(mv_.board) + + return move, score + + def _alpha_beta( + self, + init_board, + init_move=None, + depth=2, + alpha=-10000, + beta=10000, + is_white=None, + draw_board=False, + ): + """Method to reccursively look for the best move. Implements alpha-beta pruning to test most possible moves. + + Parameters + ---------- + init_board : engine.Board + Current state of the game as board + init_move: move.Move or None + Not sure yet + depth: int + How many turns to look into the future (also used for recursion). + alpha: int + Max score value for alpha pruning + beta: int + Max score value for beta pruning + is_white: None or bool + Can be used if we want to use the method for other color than self + draw_board: bool + Whether or not to draw the board in terminal + + Returns + ------- + int + score of "best" selected move + move + "best" selected move + """ + # If want to use other color than self. + if is_white is None: + is_white = self.white_side + + if draw_board: + init_board.draw() + + # End of recursion + if depth == 0: + # Score current board and return it + score = self._score_board(init_board) + return score, init_move + elif is_white == self.is_white_side(): + # Get moves + possible_moves = self._get_possible_moves(init_board, is_white=is_white) + # Iterate over moves and keep the best one. + best_score = -10000 + best_move = None + i = 0 + for p_mv in possible_moves: + i += 1 + p_mv_ = p_mv.deepcopy() + p_mv_.move_pieces() + # Get best move if p_mv is actually made + score, _ = self._alpha_beta( + p_mv_.board, + init_move=p_mv_, + depth=depth - 1, + alpha=alpha, + beta=beta, + is_white=not is_white, + ) + + best_move = [best_move, p_mv][np.argmax([best_score, score])] + best_score = np.max([best_score, score]) + ###print("BEST SCORE", best_score) + ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) + if best_score >= beta: + return best_score, best_move + alpha = np.max((alpha, best_score)) + ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) + return best_score, best_move + + else: + possible_moves = self._get_possible_moves(init_board, is_white=is_white) + ###print(depth, "nb moves:", len(possible_moves)) + best_score = 10000 + best_move = None + for p_mv in possible_moves: + # p_mv_ = pickle.loads(pickle.dumps(p_mv, -1)) + p_mv_ = p_mv.deepcopy() + p_mv_.move_pieces() + score, _ = self._alpha_beta( + p_mv_.board, + init_move=p_mv_, + depth=depth - 1, + alpha=alpha, + beta=beta, + is_white=is_white, + ) + ###print(score, p_mv.start.x, p_mv.start.y, p_mv.end.x, p_mv.end.y) + best_move = [best_move, p_mv][np.argmin([best_score, score])] + best_score = np.min([best_score, score]) + ###print("BEST SCORE", best_score) + ###print(np.argmax([best_score, score])) + ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) + if best_score <= alpha: + return best_score, best_move + beta = np.min([beta, best_score]) + ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) + return best_score, best_move + + def random_move(self, board): + for i in np.random.permutation(8): + for j in np.random.permutation(8): + if board.get_cell(i, j).get_piece() is not None: + if ( + board.get_cell(i, j).get_piece().is_white() + == self.is_white_side() + ): + selected_piece = board.get_cell(i, j).get_piece() + ###print('AI Selected Piece', selected_piece) + possible_moves = selected_piece.get_potential_moves(i, j) + + verified_move = False + random_move = np.random.permutation(len(possible_moves)) + index = 0 + ###print('Verifying Moves,', len(possible_moves), 'Moves Possibles') + while not verified_move and index < len(random_move): + selected_move = possible_moves[random_move[index]] + selected_move = move.Move( + self, + board, + board.get_cell(i, j), + board.get_cell(selected_move[0], selected_move[1]), + ) + verified_move = selected_move.is_possible_move() + index += 1 + + if verified_move: + ###print('Move is verified, ') + return selected_move + ###print('No moved found, aborting...') + + def time_to_play(self, board, depth=3): + board.draw() + current_score = self._score_board(board) + ###print("SCORE:", current_score) + + # all_possible_moves = self._get_possible_moves(board) + # sel_move, sel_score = self._select_move_from_score(all_possible_moves) + # sel_move, sel_score = self._search_tree(board, depth=3) + board.draw() + sel_score, sel_move = self._alpha_beta(board, depth=depth) + board.draw() + ###print("future score:", sel_score) + ###print(sel_move.start.x, sel_move.start.y, sel_move.end.x, sel_move.end.y, self.color) + + return sel_move + + def _score_board(self, board): + """Method to score a board according to player policy. + + Parameters + ---------- + board : engine.Board + board to score + + Returns + ------- + float + Score corresponding to the board and the player's parameters + """ + score = 0 + # Positive score for player pieces + for piece_type in board.all_material[self.color]["alive"].keys(): + for piece in board.all_material[self.color]["alive"][piece_type]: + score += self.piece_weights[piece_type] + score += self.piece_positions_weights[piece_type][piece.x][piece.y] + + adv_color = "white" if self.color == "black" else "black" + # Negative score for opponent pieces. + for piece_type in board.all_material[adv_color]["alive"].keys(): + for piece in board.all_material[adv_color]["alive"][piece_type]: + score -= self.piece_weights[piece_type] + score -= self.piece_positions_weights[piece_type][piece.x][piece.y] + return score diff --git a/pyalapin/player/my_player.py b/pyalapin/player/my_player.py new file mode 100644 index 0000000..7aafbe6 --- /dev/null +++ b/pyalapin/player/my_player.py @@ -0,0 +1,237 @@ +import os + +import numpy as np + +# import tensorflow as tf + +from player.player import Player +import engine.material as material +import engine.move as move + + +class Memory(object): + def __init__(self, max_memory=200): + self.max_memory = max_memory + self.memory = list() + + def remember(self, m): + self.memory.append(m) + self.memory = self.memory[max(len(self.memory) - self.max_memory, 0) :] + + def random_access(self): + rn = np.random.randint(0, max(len(self.memory), 1)) + return self.memory[rn] + + +class MyPlayer(Player): + def __init__(self, path_to_model="", epsilon_explorer=0.15, *args, **kwargs): + super().__init__(*args, **kwargs) + self.color = "white" if self.white_side else "black" + self.path_to_model = path_to_model + self.epsilon_explorer = epsilon_explorer + + in_ = tf.keras.layers.Input(shape=(8, 8, 6)) + out = tf.keras.layers.Conv2D(16, kernel_size=3, padding="SAME")(in_) + out = tf.keras.layers.Conv2D(32, kernel_size=3, padding="SAME")(out) + out = tf.keras.layers.Conv2D(16, kernel_size=3, padding="SAME", strides=2)(out) + out = tf.keras.layers.Conv2D(8, kernel_size=3, padding="SAME", strides=2)(out) + out = tf.keras.layers.Flatten()(out) + out = tf.keras.layers.Dense(8)(out) + out = tf.keras.layers.Dense(1)(out) + if path_to_model == "": + self.path_to_model = "./" + for _ in range(10): + self.path_to_model += str(np.random.randint(10)) + + if not os.path.exists(path_to_model): + self.model = tf.keras.Model(inputs=in_, outputs=out) + self.model.compile(loss="mse", optimizer="Adam") + else: + print("Loading Model") + self.model = tf.keras.models.load_model(path_to_model) + self.model.compile(loss="mse", optimizer="Adam") + print("Model Loaded") + print(self.model.summary()) + self.memory = Memory() + + def _score_board(self, board, white_side=None): + if white_side == None: + white_side = self.white_side + + one_hot_encode_board = board.one_hot_encode() + + if self.white_side != white_side: + one_hot_encode_board = np.flip(one_hot_encode_board) + + score = self.model.predict( + np.expand_dims(one_hot_encode_board, 0).astype("float32") + ) + return score[0][0] + + def _get_possible_moves(self, board, is_white=None): + if is_white is None: + is_white = self.white_side() + + color = {True: "white", False: "black"}[is_white] + possible_moves = [] + for type_piece in board.all_material[color]["alive"].keys(): + for piece in board.all_material[color]["alive"][type_piece]: + piece_available_moves = piece.get_potential_moves(piece.x, piece.y) + for mv in piece_available_moves: + selected_move = move.Move( + self, + board, + board.get_cell(piece.x, piece.y), + board.get_cell(mv[0], mv[1]), + ) + if selected_move.is_possible_move(): + possible_moves.append(selected_move) + return possible_moves + + def _select_move_from_score(self, moves, train=True): + if train: + do_random_move = np.random.randint(100) <= self.epsilon_explorer * 100 + if do_random_move: + print("RANDOM MOVE SELECTED") + index_random_move = np.random.randint(len(moves)) + random_move = moves[index_random_move] + mv_ = random_move.deepcopy() + mv_.move_pieces() + random_score = self._score_board(mv_.board) + return random_move, random_score + + all_scores = {} + for mv in moves: + mv_ = mv.deepcopy() + mv_.move_pieces() + score = self._score_board(mv_.board) + all_scores[mv] = score + + scores = list(all_scores.values()) + all_indexes = np.where(scores == np.max(scores))[0] + + perm = np.random.permutation(len(all_indexes))[0] + final_index = all_indexes[perm] + return list(all_scores.keys())[int(final_index)], scores[final_index] + + def _base_scoring(self, board, game_is_won="", white_side=None): + if white_side is None: + white_side = self.white_side + piece_weights = { + "pawn": 10, + "knight": 30, + "bishop": 30, + "rook": 50, + "queen": 90, + "king": 900, + } + piece_positions_weights = { + "pawn": [ + [0.0] * 8, + [5.0] * 8, + [1.0, 1.0, 2.0, 3.0, 3.0, 2.0, 1.0, 1.0], + [0.5, 0.5, 1.0, 2.5, 2.5, 1.0, 0.5, 0.5], + [0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0], + [0.5, -0.5, -1.0, 0.0, 0.0, -1.0, -0.5, 0.5], + [0.5, 1.0, 1.0, -2.0, -2.0, 1.0, 1.0, 0.5], + [0.0] * 8, + ], + "bishop": [ + [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], + [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-1.0, 0.0, 0.5, 1.0, 1.0, 0.5, 0.0, -1.0], + [-1.0, 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, -1.0], + [-1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0], + [-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0], + [-1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, -1.0], + [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], + ], + "knight": [ + [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], + [-4.0, -2.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0], + [-3.0, 0.0, 1.0, 1.5, 1.5, 1.5, 1.0, 0.0, -3.0], + [-3.0, 0.5, 1.5, 2.0, 2.0, 1.5, 0.5, -3.0], + [-3.0, 0.0, 1.5, 2.0, 2.0, 1.5, 0.0, -3.0], + [-3.0, 0.5, 1.0, 1.5, 1.5, 1.0, 0.5, -3.0], + [-4.0, -2.0, 0.0, 0.5, 0.5, 0.0, -2.0, -4.0], + [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], + ], + "rook": [ + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], + [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0], + ], + "queen": [ + [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], + [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-1.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0], + [-0.5, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5], + [0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, 0.0], + [-1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -1.0], + [-1.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], + [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], + ], + "king": [ + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], + [-2.0, -3.0, -3.0, -4.0, -4.0, -3.0, -3.0, -2.0], + [-1.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -1.0], + [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0], + [2.0, 3.0, 1.0, 0.0, 0.0, 1.0, 3.0, 2.0], + ], + } + + score = 0 + for piece_type in board.all_material["white"]["alive"].keys(): + for piece in board.all_material["white"]["alive"][piece_type]: + score += piece_weights[piece_type] + score += np.flip(piece_positions_weights[piece_type])[piece.x][piece.y] + + for piece_type in board.all_material["black"]["alive"].keys(): + for piece in board.all_material["black"]["alive"][piece_type]: + score -= piece_weights[piece_type] + score -= piece_positions_weights[piece_type][piece.x][piece.y] + if not white_side: + score = -1 * score + if game_is_won: + score += 1000 + elif not game_is_won: + score -= 1000 + + return score + + def _reinforce(self, board, best_next_score, batch_size=12, white_side=None): + if white_side is None: + white_side = self.white_side + score = self._base_scoring(board, white_side=white_side) + print("SCORE during reinforce phase", score) + self.memory.remember((board.one_hot_encode(white_side=white_side), score)) + + input_states = np.zeros((batch_size, 8, 8, 6)) + target_q = np.zeros((batch_size, 1)) + + for i in range(batch_size): + (s_i, r_i) = self.memory.random_access() + input_states[i] = s_i + target_q[i] = r_i + self.model.train_on_batch(input_states, target_q) + self.model.save(self.path_to_model) + + def __str__(self): + return "MyAIPlayer" + + def time_to_play(self, board, white_side=None): + if white_side is None: + white_side = self.is_white_side() + possible_moves = self._get_possible_moves(board, is_white=white_side) + best_move, best_score = self._select_move_from_score(possible_moves) + + self._reinforce(board, best_score, white_side=white_side) + return best_move diff --git a/pyalapin/player/player.py b/pyalapin/player/player.py new file mode 100644 index 0000000..2f19212 --- /dev/null +++ b/pyalapin/player/player.py @@ -0,0 +1,134 @@ +import numpy as np + +from engine.move import Move + + +class Player: + """Base class players. If human player only here to ensure that right player is playing right Pieces. + For AI-based players can implement more operations. + + Attributes + ---------- + is_white_side : bool + Whether the player plays with white or black Pieces. + + """ + + def __init__(self, white_side): + """Initialization of the player. + + Parameters + ---------- + white_side : bool + Whether the player plays with white or black pieces. + """ + self.white_side = white_side + self.random_number = np.random.randint(0, 1000, 1) + + def __str__(self): + """Creates a string representation of the player. + + Returns + ------- + str + String representation of the player + + """ + return "NormalPlayer%i" % self.random_number + + def is_white_side(self): + """Method to access the player's side. + + Returns + ------- + bool + color of pieces played by player. + + """ + return self.white_side + + def time_to_play(self, board): + """Potential method that returns a move. + + + Parameters + ---------- + board : engine.Board on which to play. + + Returns + ------- + move.Move move to operate on board. + + """ + pass + + +class AIRandomPlayer(Player): + """ + A first AI that plays totally randomly. Selects one move among all possibles and plays it. + """ + + def __str__(self): + """Creates a string representation of the player. + + Returns + ------- + str + String representation of the player + """ + + return "AIRandomPlayer" + + def time_to_play(self, board): + """Potential method that returns a move. + + + Parameters + ---------- + board : engine.Board on which to play. + + Returns + ------- + move.Move move to operate on board. + """ + + # Random selection of Piece to play + for i in np.random.permutation(8): + for j in np.random.permutation(8): + # Verfies there is a Piece to play. + if board.get_cell(i, j).get_piece() is not None: + if ( + board.get_cell(i, j).get_piece().is_white() + == self.is_white_side() + ): + # Get potential moves + selected_piece = board.get_cell(i, j).get_piece() + print("AI Selected Piece", selected_piece) + possible_moves = selected_piece.get_potential_moves(i, j) + + # We can must verify that a move is playable + verified_move = False + # Random selection of move + random_move = np.random.permutation(len(possible_moves)) + index = 0 + print( + "Verifying Moves,", len(possible_moves), "Moves Possibles" + ) + # Stop only with a move that can be played. + while not verified_move and index < len(random_move): + # Select and check move. + selected_move = possible_moves[random_move[index]] + selected_move = Move( + self, + board, + board.get_cell(i, j), + board.get_cell(selected_move[0], selected_move[1]), + ) + verified_move = selected_move.is_possible_move() + index += 1 + + # If move is ok, break loop and return it + if verified_move: + print("Move is verified, ") + return selected_move + print("No moved found, aborting...") diff --git a/pyalapin/setup.py b/pyalapin/setup.py new file mode 100644 index 0000000..f294ebf --- /dev/null +++ b/pyalapin/setup.py @@ -0,0 +1,32 @@ + +from setuptools import setup, find_packages + +VERSION = "0.0.1" +DESCRIPTION = "pyalapin is a customized chess engine, specifically to work with AIs." +LONG_DESCRIPTION = """Is it the best, most efficient and state of the art chess engine ? I'm pretty sure not. + +However, driven by passion and madness, I have developed my own chess game in Python. For your pretty eyes and your devilish smile, I share it with you. But only with you. + +Special thanks and dedication to LeMerluche, crushing its opponents on chess.com with alapin openings ❤️""" + +# Setting up +setup( + name="pyalapin", + version=VERSION, + author="Vincent Auriau", + author_email="", + description=DESCRIPTION, + long_description=LONG_DESCRIPTION, + packages=find_packages(), + install_requires=["numpy"], + + keywords=['python', 'first package'], + classifiers= [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Anyone", + "Programming Language :: Python :: 3", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: Linux :: Linux", + ] +) \ No newline at end of file diff --git a/pyalapin/utils/images_creation.py b/pyalapin/utils/images_creation.py new file mode 100644 index 0000000..8d33854 --- /dev/null +++ b/pyalapin/utils/images_creation.py @@ -0,0 +1,116 @@ +import os + +import matplotlib.pyplot as plt +import numpy as np + +from PIL import Image + +black_pawn = np.array(Image.open("own_illustrations/queen_grey.png")) + +black_back = (np.array([0.4, 0.4, 0.8]) * 255).astype("uint8") +white_back = (np.array([0.4, 0.8, 0.4]) * 255).astype("uint8") + +changed = [] +for i in range(3): + channel = np.copy(black_pawn[:, :, i]) + channel[black_pawn[:, :, i] < 137] = 100 * i + channel[black_pawn[:, :, i] == 0] = 200 / (i + 1) + channel[black_pawn[:, :, i] > 137] = 100 * i - 50 + changed.append(channel) + +plt.figure() +plt.imshow(np.dstack(changed)) +plt.show() + +plt.figure() +plt.imshow(black_pawn) +plt.show() +# black_back = (np.dstack([np.ones((500, 500))*.4, np.ones((500, 500))*.4, +# np.ones((500, 500))*.8]) * 255).astype('uint8') +# white_back = (np.dstack([np.ones((500, 500))*.4, np.ones((500, 500))*.8, +# np.ones((500, 500))*.4]) * 255).astype('uint8') +# +# imgb = Image.fromarray(black_back) +# imgb.save('own_illustrations/b.png') +# imgb = Image.fromarray(white_back) +# imgb.save('own_illustrations/w.png') +# +# print(black_pawn.shape) +# +# # if black_pawn.shape[0] > 500 or black_pawn.shape[1] > 0: +# # resize_ratio = 500 / max(black_pawn.shape[1], black_pawn.shape[0]) +# # print(resize_ratio) +# # new_size = (int(resize_ratio * black_pawn.shape[0]), int(resize_ratio * black_pawn.shape[1])) +# # print(new_size) +# # black_pawn.resize(new_size, Image.LANCZOS) +# +# max_size = np.max([black_pawn.shape[0], black_pawn.shape[1]]) +# +# #print(len(black_pawn[0])) +# +# plt.imshow(black_pawn) +# plt.show() +# # +# black_pawn_black_back = (np.dstack([np.ones((max_size, max_size))*.4, np.ones((max_size, max_size))*.4, +# np.ones((max_size, max_size))*.8]) * 255).astype('uint8') +# for i in range(max_size): +# for j in range(max_size): +# +# h_plus = - int((black_pawn.shape[0] - max_size) / 2) +# w_plus = - int((black_pawn.shape[1] - max_size) / 2) +# +# if h_plus <= i < h_plus + black_pawn.shape[0] and w_plus <= j < w_plus + black_pawn.shape[1]: +# if black_pawn[i-h_plus][j-w_plus][3] == 0: +# pass +# else: +# black_pawn_black_back[i][j] = (black_pawn[i-h_plus][j-w_plus][:3]) +# +# +# plt.imshow(black_pawn_black_back) +# plt.show() +# +# imgf = Image.fromarray(black_pawn_black_back).resize((500, 500)) +# imgf.save('own_illustrations/bw_Q.png') +# +# black_pawn_black_back = (np.dstack([np.ones((max_size, max_size))*.4, np.ones((max_size, max_size))*.8, +# np.ones((max_size, max_size))*.4]) * 255).astype('uint8') +# for i in range(max_size): +# for j in range(max_size): +# +# h_plus = - int((black_pawn.shape[0] - max_size) / 2) +# w_plus = - int((black_pawn.shape[1] - max_size) / 2) +# +# if h_plus <= i < h_plus + black_pawn.shape[0] and w_plus <= j < w_plus + black_pawn.shape[1]: +# if black_pawn[i-h_plus][j-w_plus][3] == 0: +# pass +# else: +# black_pawn_black_back[i][j] = (black_pawn[i-h_plus][j-w_plus][:3]) +# +# plt.imshow(black_pawn_black_back) +# plt.show() +# +# imgf = Image.fromarray(black_pawn_black_back).resize((500, 500)) +# imgf.save('own_illustrations/ww_Q.png') + +# +# for img_name in os.listdir('own_illustrations'): +# if img_name[0] == 'w': +# print('Treating: ', img_name) +# img = np.array(Image.open(os.path.join('own_illustrations', img_name))) +# for i in range(img.shape[0]): +# for j in range(img.shape[1]): +# if np.sum(img[i][j]==np.array([102, 204, 102])) == 3: +# img[i][j][0] = 51 +# img[i][j][1] = 153 +# img[i][j][2] = 51 +# Image.fromarray(img).save(('own_illustrations/' + 'down_'+img_name)) +# if img_name[0] == 'b': +# print('Treating: ', img_name) +# img = np.array(Image.open(os.path.join('own_illustrations', img_name))) +# for i in range(img.shape[0]): +# for j in range(img.shape[1]): +# if np.sum(img[i][j]==np.array([102, 102, 204])) == 3: +# img[i][j][0] = 51 +# img[i][j][1] = 51 +# img[i][j][2] = 153 +# Image.fromarray(img).save(('own_illustrations/' + 'down_'+img_name)) diff --git a/pyalapin/utils/profile_game.py b/pyalapin/utils/profile_game.py new file mode 100644 index 0000000..1a886f4 --- /dev/null +++ b/pyalapin/utils/profile_game.py @@ -0,0 +1,30 @@ +import copy +import sys + +sys.path.append("../") + +import engine.engine as engine + +# import move +# import time +# import ai_player + +game = engine.Game(automatic_draw=False, ai=True) +print(game.board.one_hot_encode()) +print(game.board.to_fen()) +print(game.to_fen()) +validated_move, winner = game.move_from_coordinates(game.player1, 1, 4, 3, 4) +ai_move = game.player2.time_to_play(game.board) +game_is_on = game.move(ai_move, game.player2) + +""" +from player.my_player import MyPlayer + +my_player = MyPlayer(white_side=False) +game = engine.Game(automatic_draw=False, ai=True) +validated_move, winner = game.move_from_coordinates(game.player1, 1, 4, 3, 4) +ai_move = my_player.time_to_play(game.board) +game_is_on = game.move(ai_move, game.player2) +score = my_player._score_board(game.board) +print(my_player.model.summary()) +""" \ No newline at end of file diff --git a/pyalapin/utils/profiling.png b/pyalapin/utils/profiling.png new file mode 100644 index 0000000000000000000000000000000000000000..58434c678c6e75f53732b66e2c8e2eaa9e0d13f5 GIT binary patch literal 509497 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
    |rECxd478=2zq03_G>Vsr%lr+%|_O<0u z-o3H~u7N_MbiOID-OpMU;^!i`YlSO@mAu@F3AIa2#8Y5emWa8A^MrpFnMs)!qW`t@ zEaax8;om}2ZXfMw&}3g!U>=6RMQbPOB(WZREj4Jh>O9b%eEhnya(W9fSn#~n&GC`B zS@I}NI*_drji2EwCOdk#qj&sSpl6PpuE?68l1+96(k;*?Gh+Z-B9}bX`o}$V092ln z0kpH)(3_eJ%xp5&U#LO=AwjG?+^
  1. ZcEow|nCUa{Ki}`;Z(&=Y5x>(ajFlBtAG= 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ðPT;GeBF$; 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

    rRZPgZ8p7t=HxQFD1Lr`w6sh?1x6x5S{cIh8-iD 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

    m=Wxui6xd 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�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

    HqO!ort%i$vz+dQ?J1 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≫fZOQAnh;RL^J4>VjH+!3Hi&lL@ifDs$f~2n& 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κ)N2V}?>d&%d&8 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

    ;L897##I;y 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 literal 0 HcmV?d00001 diff --git a/pyalapin/utils/training_ai.py b/pyalapin/utils/training_ai.py new file mode 100644 index 0000000..e492ac5 --- /dev/null +++ b/pyalapin/utils/training_ai.py @@ -0,0 +1,25 @@ +from my_player import MyPlayer +import engine + +# ai = MyPlayer(white_side=True, path_to_model="./test1") + +for kiwi in range(100): + print("KIWI __ KIWI:", kiwi) + ai = MyPlayer(white_side=True, path_to_model="./test3") + game = engine.Game(automatic_draw=False, ai=False) + for i in range(100): + print(i) + ai_move = ai.time_to_play(game.board, white_side=True) + game_is_on = game.move(ai_move, game.player1) + game.board.draw() + print(game_is_on) + if not game_is_on[0]: + print(game_is_on) + break + + ai_move = ai.time_to_play(game.board, white_side=False) + game_is_on = game.move(ai_move, game.player2) + game.board.draw() + if not game_is_on[0]: + print(game_is_on) + break From 59e0d2b085326d795f077b5ec8aeed43a22c47dd Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Sun, 29 Oct 2023 14:19:08 +0100 Subject: [PATCH 03/15] ENH: docs, tests & others --- README.md | 2 +- python/engine/color.py | 4 - python/engine/engine.py | 1201 -------------------------- python/engine/material.py | 1390 ------------------------------ python/engine/move.py | 470 ---------- python/interface/interface.py | 269 ------ python/player/ai_player.py | 352 -------- python/player/my_player.py | 237 ----- python/player/player.py | 134 --- python/utils/images_creation.py | 116 --- python/utils/profile_game.py | 28 - python/utils/profiling.png | Bin 509497 -> 0 bytes python/utils/training_ai.py | 25 - tests/prev_engine_test.py | 3 +- tests/unit_test/engine_test.py | 3 +- tests/unit_test/test_material.py | 3 +- 16 files changed, 4 insertions(+), 4233 deletions(-) delete mode 100644 python/engine/color.py delete mode 100644 python/engine/engine.py delete mode 100644 python/engine/material.py delete mode 100644 python/engine/move.py delete mode 100644 python/interface/interface.py delete mode 100644 python/player/ai_player.py delete mode 100644 python/player/my_player.py delete mode 100644 python/player/player.py delete mode 100644 python/utils/images_creation.py delete mode 100644 python/utils/profile_game.py delete mode 100644 python/utils/profiling.png delete mode 100644 python/utils/training_ai.py diff --git a/README.md b/README.md index 525278e..d8ccb87 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## PyAlapin, your customized chesse engine +## PyAlapin, your customized chess engine Is it the best, most efficient and state of the art chess engine ? I'm pretty sure not. However, driven by passion and madness, I have developed my own chess game in Python. diff --git a/python/engine/color.py b/python/engine/color.py deleted file mode 100644 index 4b2c455..0000000 --- a/python/engine/color.py +++ /dev/null @@ -1,4 +0,0 @@ -class Color: - GREEN = "\x1b[32m" - WHITE = "\033[0m" - RED = "\x1b[31m" diff --git a/python/engine/engine.py b/python/engine/engine.py deleted file mode 100644 index eaeea17..0000000 --- a/python/engine/engine.py +++ /dev/null @@ -1,1201 +0,0 @@ -# Rajouter le changement du pion en autre piece (transformation obligée en reine pour l'instant -# Rajouter fin du game (king menacé (ou pris?) en fin de tour) - -# Rajouter toutes les pièces vivantes et mortes dans un stack en attribut de game -# Etablir le check mate -# Sauvegarder état partie - -import copy - -from engine.move import Move -from player.player import Player, AIRandomPlayer -from player.ai_player import EasyAIPlayer -from player.my_player import MyPlayer -import engine.material as material - - -class Color: - GREEN = "\x1b[32m" - WHITE = "\033[0m" - RED = "\x1b[31m" - - -class Cell: - """ - Cell class representing a base element of a board. - - Attributes - ---------- - x : int - x coordinate of the cell on the board. - y : int - y coordinate of the cell on the board - piece: material.Piece or None - Piece that is on the cell (or None if no Piece is on the cell) - """ - - def __init__(self, x, y, piece): - """Initialization of the cell. - - Parameters - ---------- - x : int - x coordinate of the cell on the board. - y : int - y coordinate of the cell on the board - piece: material.Piece or None - Piece that is on the cell (or None if no Piece is on the cell) - """ - self.x = x - self.y = y - self.piece = piece - if piece is not None: - self.piece.x = x - self.piece.y = y - - def __deepcopy__(self, memodict={}): - """Method to create an uncorrelated clone of the cell. - - Returns - ------- - Cell - Exact copy of self. - """ - copy_object = Cell(self.x, self.y, copy.deepcopy(self.piece)) - return copy_object - - def set_piece(self, piece): - """Sets a Piece in the Cell. - - Parameters - ---------- - piece: material.Piece - Piece to set up on self. - """ - self.piece = piece - if piece is not None: - self.piece.x = self.x - self.piece.y = self.y - - def get_piece(self): - """Method to access the piece on the Cell. - - Returns - ------- - Piece - Piece on the self. - """ - return self.piece - - def get_x(self): - """Method to acces Cell x coordinate. - - Returns - ------- - int - x-axis coordinate of self. - """ - return self.x - - def get_y(self): - """Method to acces Cell y coordinate. - - Returns - ------- - int - y-axis coordinate of self. - """ - return self.y - - def is_threatened( - self, board, threaten_color - ): # change threaten_color par #white_threatened - """ - Method to check if the Cell is threatened by a given color. - - Parameters - ---------- - board : Board - Board to which self belongs to. - threaten_color : str - Color of that wants to know if cell is threatened by opponent. - - Returns - ------- - bool - Whether the celle is threatened or not. - """ - # One way that could be more efficient would be to keep at every step the list of threatened cell by each piece - # And update it at each move. - - # Check Knights threatening - for i, j in [ - (2, 1), - (-2, 1), - (2, -1), - (-2, -1), - (1, 2), - (1, -2), - (-1, 2), - (-1, -2), - ]: - x_to_check = self.x + i - y_to_check = self.y + j - - if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Knight): - if piece_to_check.is_white() != threaten_color: - return True - - # King + Rook + Queen - # Checking direct surroundings - for i, j in [(1, 0), (0, -1), (-1, 0), (0, -1)]: - x_to_check = self.x + i - y_to_check = self.y + j - - if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if ( - isinstance(piece_to_check, material.King) - or isinstance(piece_to_check, material.Rook) - or isinstance(piece_to_check, material.Queen) - ): - if piece_to_check.is_white() != threaten_color: - return True - - elif piece_to_check is None: - keep_going = True - x_to_check += i - y_to_check += j - while 0 <= x_to_check < 8 and 0 <= y_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - if isinstance(piece_to_check, material.Rook) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - else: - x_to_check += i - y_to_check += j - - """ - # Rook + Queen - # Going further - keep_going = True - x_to_check = self.x + 2 - y_to_check = self.y - while x_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Rook) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check += 1 - - keep_going = True - x_to_check = self.x - 2 - y_to_check = self.y - while x_to_check >= 0 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Rook) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check -= 1 - - keep_going = True - x_to_check = self.x - y_to_check = self.y + 2 - while y_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Rook) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - y_to_check += 1 - - keep_going = True - x_to_check = self.x - y_to_check = self.y - 2 - while y_to_check >= 0 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Rook) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - y_to_check -= 1 - """ - - # King + Queen + Bishop + Pawn - # Checking direct surroundings - for i, j in [(1, 1), (1, -1), (-1, 1), (-1, -1)]: - x_to_check = self.x + i - y_to_check = self.y + j - - if 0 <= x_to_check < 8 and 0 <= y_to_check < 8: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if ( - isinstance(piece_to_check, material.King) - or isinstance(piece_to_check, material.Bishop) - or isinstance(piece_to_check, material.Queen) - ): - if piece_to_check.is_white() != threaten_color: - return True - elif ( - i > 0 - and threaten_color - and isinstance(piece_to_check, material.Pawn) - ): - if piece_to_check.is_white() != threaten_color: - return True - elif ( - i < 0 - and not threaten_color - and isinstance(piece_to_check, material.Pawn) - ): - if piece_to_check.is_white() != threaten_color: - return True - - elif piece_to_check is None: - print("def") - keep_going = True - x_to_check += i - y_to_check += j - while 0 <= x_to_check < 8 and 0 <= y_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Bishop) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check += i - y_to_check += j - - """ - # Queen + Bishop - keep_going = True - x_to_check = self.x + 2 - y_to_check = self.y + 2 - while x_to_check < 8 and y_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Bishop) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check += 1 - y_to_check += 1 - - keep_going = True - x_to_check = self.x - 2 - y_to_check = self.y + 2 - while x_to_check >= 0 and y_to_check < 8 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Bishop) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check -= 1 - y_to_check += 1 - - keep_going = True - x_to_check = self.x + 2 - y_to_check = self.y - 2 - while x_to_check < 8 and y_to_check >= 0 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Bishop) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check += 1 - y_to_check -= 1 - - keep_going = True - x_to_check = self.x - 2 - y_to_check = self.y - 2 - while x_to_check >= 0 and y_to_check >= 0 and keep_going: - cell_to_check = board.get_cell(x_to_check, y_to_check) - piece_to_check = cell_to_check.get_piece() - - if isinstance(piece_to_check, material.Bishop) or isinstance( - piece_to_check, material.Queen - ): - keep_going = False - if piece_to_check.is_white() != threaten_color: - return True - elif piece_to_check is not None: - keep_going = False - x_to_check -= 1 - y_to_check -= 1 - """ - - return False - - -class Board: - """ - Board class representing the chess board. - - Attributes - ---------- - board : list of Cells - Represents all cells of a chess board from x coordinates [0, 7] and y coordinates [0, 7] - white_king : material.King - King piece of white color. - black_king : material.King - King piece of black color. - all_material: dict - Dictionnary containing all the pieces on the board, killed and not killed. - """ - - def __init__(self, empty_init=False): - """Initialization of the board. - - Parameters - ---------- - empty_init: bool - True if you want to start from an existing board. - """ - if not empty_init: - self.board = None - self.white_king, self.black_king, self.all_material = self._reset_board() - - def deepcopy(self, memodict={}): - """Method to create an uncorrelated clone of the board. - - Returns - ------- - Cell - Exact copy of self. - """ - copied_object = Board(empty_init=True) - board = [[Cell(i, j, None) for j in range(8)] for i in range(8)] - copied_object.board = board - copied_material = self.deep_copy_material() - white_king = copied_material["white"]["alive"]["king"][0] - black_king = copied_material["black"]["alive"]["king"][0] - copied_object.all_material = copied_material - copied_object.white_king = white_king - copied_object.black_king = black_king - for piece_list in copied_material["white"]["alive"].values(): - for piece in piece_list: - copied_object.get_cell(piece.x, piece.y).set_piece(piece) - for piece_list in copied_material["black"]["alive"].values(): - for piece in piece_list: - copied_object.get_cell(piece.x, piece.y).set_piece(piece) - - return copied_object - - def deep_copy_material(self): - """Method to create an uncorrelated clone of all the pieces on the board, killed and not killed. - - Returns - ------- - dict of Pieces - Exact copy of self.all_material. - """ - material = { - "white": { - "alive": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - "killed": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - }, - "black": { - "alive": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - "killed": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - }, - } - - for color in ["white", "black"]: - for status in ["alive", "killed"]: - for piece_type in ["pawn", "knight", "bishop", "rook", "queen", "king"]: - for piece in self.all_material[color][status][piece_type]: - material[color][status][piece_type].append( - piece.piece_deepcopy() - ) - return material - - def __deepcopy__(self, memodict={}): - """Method to create an uncorrelated clone of the board. - - Returns - ------- - Cell - Exact copy of self. - """ - copied_object = Board(empty_init=True) - board = [[Cell(i, j, None) for j in range(8)] for i in range(8)] - copied_object.board = board - copied_material = self.deep_copy_material() - - white_king = copied_material["white"]["alive"]["king"][0] - black_king = copied_material["black"]["alive"]["king"][0] - copied_object.all_material = copied_material - copied_object.white_king = white_king - copied_object.black_king = black_king - for piece_list in copied_material["white"]["alive"].values(): - for piece in piece_list: - copied_object.get_cell(piece.x, piece.y).set_piece(piece) - for piece_list in copied_material["black"]["alive"].values(): - for piece in piece_list: - copied_object.get_cell(piece.x, piece.y).set_piece(piece) - - return copied_object - - def to_fen(self): - """Method to generate a fen representation of the current state of the board - - Returns - ------- - tuple of str - fen representation and 'KQkq' - """ - fen = "" - for line in self.board: - no_piece_count = 0 - for cell in line: - piece = cell.get_piece() - if piece is None: - no_piece_count += 1 - else: - if no_piece_count > 0: - fen += str(no_piece_count) - no_piece_count = 0 - letter = piece.get_str().replace(" ", "") - if piece.is_white(): - letter = letter.lower() - fen += letter - if no_piece_count > 0: - fen += str(no_piece_count) - fen += "/" - return fen[:-1], "KQkq" - - def one_hot_encode(self, white_side=True): - """Method to create a representation of the board with OneHot encode of the pieces. - - Parameters - ---------- - white_sied : bool - Whether we want to represent the board from the White side point of view or not. Point of view sees its pieces - represented by +1 OneHot and opponent side by -1. - - Returns - ------- - list of list - 8x8 list representing the board with full zeros list when cell is empty or OneHot representation of the piece on - the cell otherwise. - """ - - # Dict of OneHot transformations - material_to_one_hot = { - "pawn": [1, 0, 0, 0, 0, 0], - "bishop": [0, 1, 0, 0, 0, 0], - "knight": [0, 0, 1, 0, 0, 0], - "rook": [0, 0, 0, 1, 0, 0], - "queen": [0, 0, 0, 0, 1, 0], - "king": [0, 0, 0, 0, 0, 1], - } - # Iterating over cells and add OneHot representations to the list. - one_hot_board = [] - for line in self.board: - one_hot_line = [] - for cell in line: - piece = cell.get_piece() - # Empty cell - if piece is None: - one_hot_line.append([0] * 6) - # Piece on the cell - else: - one_hot_piece = material_to_one_hot[piece.type] - # Negative OneHot if opponent side - if piece.is_white() != white_side: - one_hot_piece = [-1 * val for val in one_hot_piece] - one_hot_line.append(one_hot_piece) - one_hot_board.append(one_hot_line) - return one_hot_board - - def get_cell(self, x, y): - """Method to access a cell on the board from its coordinates. - - Parameters - ---------- - x : int - x-coordinate of the cell. - y : int - y-coordinate of the cell. - - Returns - ------- - cell - Cell at coordinates (x, y) - """ - return self.board[x][y] - - def reset(self): - """ - Resets the board, all the pieces, everything. - """ - self.white_king, self.black_king, self.all_material = self._reset_board() - - def create_board_from_string(self, string): - """ - Method to set up a sepecific board with Pieces on specific Celss from a string. - """ - raise NotImplementedError - - def _reset_board(self): - """Method to create the board. Creates Pieces and place them on their original cells. - - Returns - ------- - material.King - White King on the board - material.King - black King on the board - dict - Dictionnary with all the board pieces - """ - # List of cells - board = [] - - # Dictionnary to access easily the pieces - pieces = { - "white": { - "alive": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - "killed": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - }, - "black": { - "alive": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - "killed": { - "pawn": [], - "knight": [], - "bishop": [], - "rook": [], - "queen": [], - "king": [], - }, - }, - } - - # Initialize white pieces - white_king = material.King(True, 0, 4) - pieces["white"]["alive"]["king"].append(white_king) - black_king = material.King(False, 7, 4) - pieces["black"]["alive"]["king"].append(black_king) - - w_rook_1 = material.Rook(True, 0, 0) - w_rook_2 = material.Rook(True, 0, 7) - pieces["white"]["alive"]["rook"].append(w_rook_1) - pieces["white"]["alive"]["rook"].append(w_rook_2) - - w_bishop_1 = material.Bishop(True, 0, 2) - w_bishop_2 = material.Bishop(True, 0, 5) - pieces["white"]["alive"]["bishop"].append(w_bishop_1) - pieces["white"]["alive"]["bishop"].append(w_bishop_2) - - w_knight_1 = material.Knight(True, 0, 1) - w_knight_2 = material.Knight(True, 0, 6) - pieces["white"]["alive"]["knight"].append(w_knight_1) - pieces["white"]["alive"]["knight"].append(w_knight_2) - - w_queen = material.Queen(True, 0, 3) - pieces["white"]["alive"]["queen"].append(w_queen) - - line = [ - Cell(0, 0, w_rook_1), - Cell(0, 1, w_knight_1), - Cell(0, 2, w_bishop_1), - Cell(0, 3, w_queen), - Cell(0, 4, white_king), - Cell(0, 5, w_bishop_2), - Cell(0, 6, w_knight_2), - Cell(0, 7, w_rook_2), - ] - board.append(line) - - line = [] - for i in range(8): - p = material.Pawn(True, 1, i) - pieces["white"]["alive"]["pawn"].append(p) - line.append(Cell(1, i, p)) - board.append(line) - - for i in range(4): - line = [] - for j in range(8): - line.append(Cell(i + 2, j, None)) - board.append(line) - - line = [] - for i in range(8): - p = material.Pawn(False, 6, i) - pieces["black"]["alive"]["pawn"].append(p) - line.append(Cell(6, i, p)) - board.append(line) - - # Initialize black pieces - b_rook_1 = material.Rook(False, 7, 0) - b_rook_2 = material.Rook(False, 7, 7) - pieces["black"]["alive"]["rook"].append(b_rook_1) - pieces["black"]["alive"]["rook"].append(b_rook_2) - - b_bishop_1 = material.Bishop(False, 7, 2) - b_bishop_2 = material.Bishop(False, 7, 5) - pieces["black"]["alive"]["bishop"].append(b_bishop_1) - pieces["black"]["alive"]["bishop"].append(b_bishop_2) - - b_knight_1 = material.Knight(False, 7, 1) - b_knight_2 = material.Knight(False, 7, 6) - pieces["black"]["alive"]["knight"].append(b_knight_1) - pieces["black"]["alive"]["knight"].append(b_knight_2) - - b_queen = material.Queen(False, 7, 3) - pieces["black"]["alive"]["queen"].append(b_queen) - - line = [ - Cell(7, 0, b_rook_1), - Cell(7, 1, b_knight_1), - Cell(7, 2, b_bishop_1), - Cell(7, 3, b_queen), - Cell(7, 4, black_king), - Cell(7, 5, b_bishop_2), - Cell(7, 6, b_knight_2), - Cell(7, 7, b_rook_2), - ] - board.append(line) - - self.board = board - return white_king, black_king, pieces - - def move_piece_from_coordinates(self, start_coordinates, end_coordinates): - """Method to move a piece on the board from start and landing coordinates. - - Parameters - ---------- - start_coordinates : tuple of int - (x, y) coordinates of move starting cell - end_coordinates : tuple of int - (x, y) coordinates of move landing cell - """ - start_cell = self.get_cell(start_coordinates[0], start_coordinates[1]) - end_cell = self.get_cell(end_coordinates[0], end_coordinates[1]) - piece_to_move = start_cell.get_piece() - if piece_to_move is None: - raise ValueError("Empty cells chosen as moved piece") - - end_cell.set_piece(piece_to_move) - start_cell.set_piece(None) - - def kill_piece_from_coordinates(self, coordinates): - """Method to kill a piece from its coordinates on the board. - - Parameters - ---------- - coordinates : tuple of ints - (x, y) coordinates of cell on which is the piece to kill - """ - to_kill_piece = self.get_cell(coordinates[0], coordinates[1]).get_piece() - to_kill_piece.set_killed() - - color = "white" if to_kill_piece.is_white() else "black" - self.all_material[color]["alive"][to_kill_piece.type].remove(to_kill_piece) - self.all_material[color]["killed"][to_kill_piece.type].append(to_kill_piece) - - def transform_pawn(self, coordinates): - """Method to promote a pawn from its coordinates. - - Parameters - ---------- - coordinates : tuple of ints - (x, y) coordinates of the cell on which is Pawn to promote - promote_into : str - type of piece to promote the Pawn into. Default is "Queen" can also be "Rool", "Bishop" and "Knigh" - """ - pawn = self.get_cell(coordinates[0], coordinates[1]).get_piece() - if not isinstance(pawn, material.Pawn): - raise ValueError("Transforming piece that is not a Pawn") - else: - color = "white" if pawn.is_white() else "black" - self.all_material[color]["alive"][pawn.type].remove(pawn) - - new_queen = material.Queen(pawn.is_white(), pawn.x, pawn.y) - self.get_cell(pawn.x, pawn.y).set_piece(new_queen) - self.all_material[color]["alive"]["queen"].append(new_queen) - - def promote_pawn(self, coordinates, promote_into="Queen"): - """Method to promote a pawn from its coordinates. - - Parameters - ---------- - coordinates : tuple of ints - (x, y) coordinates of the cell on which is Pawn to promote - promote_into : str - type of piece to promote the Pawn into. Default is "Queen" can also be "Rool", "Bishop" and "Knigh" - """ - pawn = self.get_cell(coordinates[0], coordinates[1]).get_piece() - if not isinstance(pawn, material.Pawn): - raise ValueError("Transforming piece that is not a Pawn") - else: - color = "white" if pawn.is_white() else "black" - self.all_material[color]["alive"][pawn.type].remove(pawn) - - new_piece = pawn.promote(promote_into=promote_into) - self.get_cell(pawn.x, pawn.y).set_piece(new_piece) - self.all_material[color]["alive"]["queen"].append(new_piece) - - def draw(self, printing=True): - """Method to draw the board as a string and potentially print it in the terminal. - - Parameters - ---------- - printing : bool - Whether or not to print it in the terminal - """ - whole_text = " | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |" - boarder_line = "+---+-----+-----+-----+-----+-----+-----+-----+-----+" - whole_text += "\n" - whole_text += boarder_line - for i in range(8): - current_line = " " + str(i) + " |" - for j in range(8): - cell = self.get_cell(i, j) - if cell.get_piece() is None: - current_line += " " - else: - current_line += cell.get_piece().draw() - current_line += "|" - whole_text += "\n" - whole_text += current_line - whole_text += "\n" - whole_text += boarder_line - if printing: - print(whole_text + "\n") - return whole_text - - -class Game: - """ - Game class, used to play a chess game, interact with the board and move pieces. - - Attributes - ---------- - player1 : player.Player - player object that will be the one to play white pieces. For now, has to be a human player - ai : bool - Whether or not to play with AI. Is set to True, AI will play black pieces. - player2 : player.Player - player object that will play the black pieces. Can be human or AI player. - to_player_player: player1 or player2 - Argument pointing to the player that has to play next. Initialized to white pieces player. - board: Board - Board object on which to play. - status: str - String indicating if the game is still active or if there is mat or pat. - played_moves: list - List storing all the played move during the game. - automatic draw: bool - Whether to draw the board in the terminal at each round. - """ - - game_status = [] - - def __init__(self, automatic_draw=True, ai=False): - """Initialization of the cell. - - Parameters - ---------- - automatic_draw : bool - Whether to draw the board in the terminal at each round. - ai : bool - Whether or not to play with AI. Is set to True, AI will play black pieces. - """ - self.player1 = Player(True) - self.ai = ai - if ai: - # self.player2 = AIRandomPlayer(False) - self.player2 = EasyAIPlayer(False) - # self.player2 = MyPlayer(white_side=False, path_to_model="./test1") - else: - self.player2 = Player(False) - self.to_play_player = self.player1 - - self.board = Board() - self.status = "ACTIVE" - self.played_moves = [] - - self.automatic_draw = automatic_draw - - def reset_game(self): - """Method to reset the game. Recreates the borad, the pieces and restarts the game.""" - self.board.reset() - self.played_moves = [] - self.to_play_player = self.player1 - - def to_fen(self): - """ - Writes the board in fen. - - Returns - ------- - str - fen representation of the board. - """ - pieces, castling = self.board.to_fen() - color_playing = "w" if self.to_play_player.is_white_side() else "b" - return pieces + " " + color_playing + " " + castling + " - 0 1" - - def is_finished(self): - """ - Method to know if the game is still active or finished (i.e. pat or mat) - - Returns - ------- - bool - Whether the game is finished or not. - """ - return self.status != "ACTIVE" - - def move_from_coordinates(self, player, start_x, start_y, end_x, end_y, extras={}): - """ - Method to move a piece on the board from its coordinates. Creates the Move object from the coordinates and - calls the .move() method. - - Parameters - ---------- - player: player.Player - player that wants to move a piece - start_x: int - x-coordinate of the piece to move - start_y: int - y-coordinate of the piece to move - end_x: int - x-coordinate of the cell to move the piece to - end_y: int - x-coordinate of the cell to move the piece to - extras: dict - Dictionnary used to add additional data such as which type a piece a Pawn should be promoted to - if it reaches the other side of the board. - - Returns - ------- - self.move() - Method move of self. - """ - # Get the cells from the coordinates - start_cell = self.board.get_cell(start_x, start_y) - end_cell = self.board.get_cell(end_x, end_y) - - # Create the Move object - move = Move(player, self.board, start_cell, end_cell, extras=extras) - - # Move - return self.move(move, player) - - def draw_board(self): - """ - Draw the game's borad as a string in the terminal. - """ - return self.board.draw() - - def can_player_move(self, player): - """ - Methods that verifies if a player can still move at least one piece. - - Parameters - ---------- - player: player.Player - player we want to check can still move at least one Piece. - - Returns - ------- - bool - Whether player can still move at least a piece. - """ - # Checks all cells - for i in range(8): - for j in range(8): - # Checks Pieces on cells - selected_piece = self.board.get_cell(i, j).get_piece() - if selected_piece is not None: - # Checks color of pices - if selected_piece.is_white() == player.is_white_side(): - # Checks if piece can move - possible_moves = selected_piece.get_potential_moves(i, j) - - # Verifies if the move is authorized - for k in range(len(possible_moves)): - selected_move = possible_moves[k] - selected_move = Move( - player, - self.board, - self.board.get_cell(i, j), - self.board.get_cell(selected_move[0], selected_move[1]), - ) - verified_move = selected_move.is_possible_move() - - if verified_move: - return True - return False - - def check_pat_mat(self, player): - """ - Method to check if a player is in PAT or MAT situation. - - Parameters - ---------- - player: player.Player - player that needs to be checked - - Returns - ------- - int - 0 if the player can move, 1 if PAT, 2 if MAT - """ - can_player_move = self.can_player_move(player) - - if can_player_move: - return 0 - # If player cannot move any piece - else: - if player.is_white_side(): - king = self.board.white_king - else: - king = self.board.black_king - # If King is threatened, is mat otherwise, is pat - is_mat = self.board.get_cell(king.x, king.y).is_threatened( - self.board, not player.is_white_side - ) - if is_mat: - return 2 - else: - return 1 - - def move(self, move, player): - """ - Method to move a piece on the board from player and move objects. - - Parameters - ---------- - move: move.Move - move object ready to move a piece. - player: player.Player - player that wants to move a piece. - - Returns - ------- - bool - Whether the move has happened or not (if not means that it has been blocked by a rule). & Whether the - game keeps going. (Actually False when not moving should be True) - int or str - Status of the game: 0 nothing has happened or no winner, winner otherwise - """ - moved_piece = move.moved_piece - - # List of checks - # To change if castling or en passant move - if moved_piece is None: - return False, 0 - assert moved_piece is not None - - # Check that right player is playing - if player != self.to_play_player: - return False, 0 - assert player == self.to_play_player - - # Check that the move is authorized - allowed_move = move.is_possible_move() - if not allowed_move: - return False, 0 - elif moved_piece.is_white() != player.is_white_side(): - return False, 0 - else: - assert moved_piece.is_white() == player.is_white_side() - # Actually move pieces - move.move_pieces() - - # Store move - self.played_moves.append(move) - - # Change player - if self.to_play_player == self.player1: - self.to_play_player = self.player2 - else: - self.to_play_player = self.player1 - - # Draw - if self.automatic_draw: - self.board.draw() - - # Check status of Kings - if self.board.white_king.is_killed(): - print("END OF THE GAME, BLACK HAS WON") - return False, "black" - elif self.board.black_king.is_killed(): - print("END OF THE GAME, WHITE HAS WON") - return False, "white" - - # Checking for PAT & MAT - check_status, winner = self.update_status() - - return check_status, winner - - def update_status(self): - """ - Checks the status of the game (on going, pat, mat) and returns it. - - Returns - ------- - bool - Whether the game keeps going or not. - int or str - Status of the game: 0 nothing has happened or no winner, winner otherwise - - """ - game_status = self.check_pat_mat(self.player1) - # Pat - if game_status == 1: - return False, "black&white" - # Mat - elif game_status == 2: - return False, "black" - else: - game_status = self.check_pat_mat(self.player2) - # Pat - if game_status == 1: - return False, "black&white" - # Mat - elif game_status == 2: - return False, "white" - # Keeps going - else: - return True, "" - - def save(self, directory="debug_files"): - """ - Method to save the state of the game as matplotlib figure. - Uses a str representation of the game moves as figure title. - - Parameters - ---------- - directory: str - directory in which to save the figure. - """ - draw_text = self.draw_board() - draw_text = draw_text.replace("\x1b[32m", "") - draw_text = draw_text.replace("\033[0m", "") - draw_text = draw_text.replace("\x1b[31m", "") - import os - import matplotlib.pyplot as plt - - plt.rc("figure", figsize=(12, 7)) - plt.text( - 0.01, 0.05, str(draw_text), {"fontsize": 10}, fontproperties="monospace" - ) - plt.axis("off") - plt.tight_layout() - plt.savefig(os.path.join(directory, str(len(self.played_moves)) + ".png")) diff --git a/python/engine/material.py b/python/engine/material.py deleted file mode 100644 index 6fe4f10..0000000 --- a/python/engine/material.py +++ /dev/null @@ -1,1390 +0,0 @@ -from abc import abstractmethod - -from engine.color import Color - - -class Piece(object): - """Base class for the different materials on the board. - - Implements the properties, attributes and functions shared by all the different materials. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized as False - - """ - - def __init__(self, white, x, y): - """Initialization of the piece. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - self.white = white - self.killed = False - - self.x = x - self.y = y - - @abstractmethod - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Piece - Exact copy of self. - - """ - copied_piece = Piece(self.white, self.x, self.y) - copied_piece.killed = self.killed - return copied_piece - - def is_white(self): - """Method to access the piece color. - - Returns - ------- - bool - color of piece. - - """ - return self.white - - def is_killed(self): - """Method to access the piece status (killed or not). - - Returns - ------- - bool - status of piece. - - """ - return self.killed - - def set_killed(self): - """Sets the piece status to killed.""" - self.killed = True - - @abstractmethod - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell of piece). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - x_start = start.get_x() - y_start = start.get_y() - x_end = end.get_x() - y_end = end.get_y() - - # If material is already on the landing cell - if end.get_piece() is not None: - if end.get_piece().is_white() == self.is_white(): - return False - - if x_start == x_end and y_start == y_end: - return False - else: - if x_start < 0 or x_end < 0: - return False - elif x_start > 7 or x_end > 7: - return False - elif y_start < 0 or y_end < 0: - return False - elif y_start > 7 or y_end > 7: - return False - else: - return True - - def can_move(self, board, move): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - - is_movement_authorized = self.piece_move_authorized(move.start, move.end) - return is_movement_authorized - - @abstractmethod - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - bool - List of authorized moves - """ - return None - - @abstractmethod - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " " - - def draw(self): - """Method to represent the piece as a colored string in order to draw a board. - - Returns - ------- - str - Colored representation of the piece within a board. - """ - value = self.get_str() - if self.is_white(): - return Color.GREEN + value + Color.WHITE - else: - return Color.RED + value + Color.WHITE - - -class Pawn(Piece): - """Base class for the pawns pieces - - Implements the properties, attributes and functions specific to pawns. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False - has_moved: bool - Whether the piece has already moved during a game or not. Initialized to False - last_move_is_double: bool - Whether the piece previous move was a double advance or not. For future En Passant checks. Initialized to False. - """ - - type = "pawn" - - def __init__(self, *args, **kwargs): - """Initialization of the pawn. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - self.has_moved = False # if the pawn has yet been moved or not to keep ? - self.last_move_is_double = ( - False # check for en passant, if last move was a double tap - ) - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Pawn - Exact copy of self. - """ - copied_piece = Pawn(self.white, self.x, self.y) - copied_piece.killed = self.killed - copied_piece.has_moved = self.has_moved - copied_piece.last_move_is_double = self.last_move_is_double - return copied_piece - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - # Check if there is a piece on the landing cell - if not super().piece_move_authorized(start=start, end=end): - return False - if end.get_piece() is not None: - # check if there is not another piece of same color - if end.get_piece().is_white() == self.is_white(): - return False - - else: - # Pawn can only take an adversary piece in diagonal - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - if dx == 1 and abs(dy) == 1 and self.is_white(): - return True - elif dx == -1 and abs(dy) == 1 and not self.is_white(): - return True - else: - return False - - # No piece on landing cell, just checking if movement is authorized. - else: - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - if dx == 1 and dy == 0 and self.is_white(): - return True - elif dx == -1 and dy == 0 and not self.is_white(): - return True - - else: - # Initial move authorized to be two cells at once. Should check self.has_moved here ? - if start.get_x() == 1 and dx == 2 and dy == 0 and self.is_white(): - return True - elif ( - start.get_x() == 6 and dx == -2 and dy == 0 and not self.is_white() - ): - return True - else: - return False - - def can_move(self, board, move): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - authorized_move = self.piece_move_authorized(move.start, move.end) - - if not authorized_move: - """to remove ?""" - crossed_cell = board.get_cell(move.start.get_x(), move.end.get_y()) - crossed_piece = crossed_cell.get_piece() - if isinstance(crossed_piece, Pawn): - if ( - crossed_piece.last_move_is_double - and crossed_piece.is_white() != self.is_white() - ): - # Revoir comment on update cet attribut last_move_is_double - authorized_move = True - move.complementary_passant = crossed_cell - else: - # Checks that no piece (friend or foe) is blocking the cell(s) in front. - dx = move.end.get_x() - move.start.get_x() - - if dx > 1: - if ( - board.get_cell( - move.start.get_x() + 1, move.start.get_y() - ).get_piece() - is not None - ): - return False - elif dx < -1: - if ( - board.get_cell( - move.start.get_x() - 1, move.start.get_y() - ).get_piece() - is not None - ): - return False - """ - if move.end.get_x() == 7 and self.is_white(): - move.transform_pawn = True - elif move.end.get_x() == 0 and not self.is_white(): - move.transform_pawn = True - """ - return authorized_move - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - - possible_moves = [] - if self.is_white(): - # Front cell - possible_moves.append((x + 1, y)) - - # Diagonal cells - if y - 1 >= 0: - possible_moves.append((x + 1, y - 1)) - if y + 1 <= 7: - possible_moves.append((x + 1, y + 1)) - - # Double front cell - if x == 1: - possible_moves.append((x + 2, y)) - - # Symmetric for black pawns - else: - possible_moves.append((x - 1, y)) - - if y - 1 >= 0: - possible_moves.append((x - 1, y - 1)) - if y + 1 <= 7: - possible_moves.append((x - 1, y + 1)) - if x == 6: - possible_moves.append((x - 2, y)) - - return possible_moves - - def promote(self, promote_into="Queen"): - """Method to promote a pawn to other material type. Only happens if the pawn reaches the other side of the board. - The player can choose which type of material he wants its pawn to be promoted into. - - Parameters - ---------- - promote_into: str - Type of material to promote the pawn into. - - Returns - ------- - Piece - New piece with right promotion and same coordinates of current pawn. - """ - # Should we verify color and coordinates of Pawn ? - if self.is_white(): - assert self.x == 7, "Pawn has not reached other side of the board" - else: - assert self.x == 0, "Pawn has not reached the other side of the board" - - if promote_into.lower() == "queen": - return Queen(white=self.is_white(), x=self.x, y=self.y) - elif promote_into.lower() == "rook": - rook = Rook(white=self.is_white(), x=self.x, y=self.y) - rook.has_moved = True - return rook - elif promote_into == "knight": - return Knight(white=self.is_white(), x=self.x, y=self.y) - elif promote_into == "bishop": - return Bishop(white=self.is_white(), x=self.x, y=self.y) - else: - raise ValueError( - f"Cannot promote piece into, {promote_into}, piece unknown" - ) - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " P " - - -class Bishop(Piece): - """Base class for the bishop pieces - - Implements the properties, attributes and functions specific to bishops. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False. - """ - - type = "bishop" - - def __init__(self, *args, **kwargs): - """Initialization of the bishop. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Bishop - Exact copy of self. - """ - copied_piece = Bishop(self.white, self.x, self.y) - copied_piece.killed = self.killed - return copied_piece - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - if not super().piece_move_authorized(start=start, end=end): - return False - - # Checking movemement - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - if abs(dx) == abs(dy): - return True - else: - return False - - def can_move(self, board, move): - """Method to verify if a move is authorized within a board. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - # Checking if movement is alright - authorized_move = self.piece_move_authorized(move.start, move.end) - if authorized_move: - dx = move.end.get_x() - move.start.get_x() - dy = move.end.get_y() - move.start.get_y() - - # Checking that no material is blocking the trajectory - for i in range(1, abs(dx)): - x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() - y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() - if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: - return False - return True - else: - return False - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - possible_moves = [] - - # Diagonal 1 - nx = x - 1 - ny = y - 1 - while nx >= 0 and ny >= 0: - possible_moves.append((nx, ny)) - nx -= 1 - ny -= 1 - - # Diagonal 2 - nx = x - 1 - ny = y + 1 - while nx >= 0 and ny <= 7: - possible_moves.append((nx, ny)) - nx -= 1 - ny += 1 - - # Diagonal 3 - nx = x + 1 - ny = y - 1 - while nx <= 7 and ny >= 0: - possible_moves.append((nx, ny)) - nx += 1 - ny -= 1 - - # Diagonal 4 - nx = x + 1 - ny = y + 1 - while nx <= 7 and ny <= 7: - possible_moves.append((nx, ny)) - nx += 1 - ny += 1 - - return possible_moves - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " B " - - -class Rook(Piece): - """Base class for the rook pieces - - Implements the properties, attributes and functions specific to rooks. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False. - has_moved: bool - Whether the piece has already moved during a game or not. Initialized to False. - """ - - type = "rook" - - def __init__(self, *args, **kwargs): - """Initialization of the rook. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - self.has_moved = False - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Rook - Exact copy of self. - """ - copied_piece = Rook(self.white, self.x, self.y) - copied_piece.killed = self.killed - copied_piece.has_moved = self.has_moved - return copied_piece - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - if not super().piece_move_authorized(start=start, end=end): - return False - - # Checking movement - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - if dx == 0 or dy == 0: - return True - else: - return False - - def can_move(self, board, move): - """Method to verify if a move is authorized within a board. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - - # Checking that movement is authorized - authorized_move = self.piece_move_authorized(move.start, move.end) - if authorized_move: - dx = move.end.get_x() - move.start.get_x() - dy = move.end.get_y() - move.start.get_y() - # Checking that no material in x axis is blocking the trajectory - for i in range(1, abs(dx)): - x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() - y_trajectory = move.start.get_y() - if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: - return False - - # Checking that no material in the y axis is blocking the trajectory - for i in range(1, abs(dy)): - x_trajectory = move.start.get_x() - y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() - if board.get_cell(x_trajectory, y_trajectory).get_piece() is not None: - return False - return True - else: - return False - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - possible_moves = [] - - # X-axis left - nx = x - 1 - while nx >= 0: - possible_moves.append((nx, y)) - nx -= 1 - - # X-axis right - ny = y + 1 - while ny <= 7: - possible_moves.append((x, ny)) - ny += 1 - - # Y-axis top - nx = x + 1 - while nx <= 7: - possible_moves.append((nx, y)) - nx += 1 - - # Y-axis down - ny = y - 1 - while ny >= 0: - possible_moves.append((x, ny)) - ny -= 1 - - return possible_moves - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " R " - - -class Knight(Piece): - """Base class for the knoght pieces - - Implements the properties, attributes and functions specific to knights. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False. - """ - - type = "knight" - - def __init__(self, *args, **kwargs): - """Initialization of the knight. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Knight - Exact copy of self. - """ - copied_piece = Knight(self.white, self.x, self.y) - copied_piece.killed = self.killed - return copied_piece - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - if not super().piece_move_authorized(start=start, end=end): - return False - - dx = start.get_x() - end.get_x() - dy = start.get_y() - end.get_y() - return abs(dx) * abs(dy) == 2 - - def can_move(self, board, move): - """Method to verify if a move is authorized within a board. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - # The knight is jumping, no need to verify blocking material - return self.piece_move_authorized(move.start, move.end) - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " N " - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - possible_moves = [] - - # All difference position that a knight can move to - combos = [ - (2, 1), - (1, 2), - (-2, 1), - (2, -1), - (-2, -1), - (-1, 2), - (1, -2), - (-1, -2), - ] - for nx, ny in combos: - if 0 <= nx + x <= 7 and 0 <= ny + y <= 7: - possible_moves.append((x + nx, y + ny)) - - return possible_moves - - -class Queen(Piece): - """Base class for the queen pieces - - Implements the properties, attributes and functions specific to queens. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False. - """ - - type = "queen" - - def __init__(self, *args, **kwargs): - """Initialization of the queen. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - Queen - Exact copy of self. - """ - copied_piece = Queen(self.white, self.x, self.y) - copied_piece.killed = self.killed - return copied_piece - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - - if not super().piece_move_authorized(start=start, end=end): - return False - - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - - return (dx == 0) or (dy == 0) or (abs(dx) == abs(dy)) - - def can_move(self, board, move): - """Method to verify if a move is authorized within a board. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - # Checking if movement is authorized - authorized_move = self.piece_move_authorized(move.start, move.end) - - # Checking that no material is blocking the trajectory - if authorized_move: - dx = move.end.get_x() - move.start.get_x() - dy = move.end.get_y() - move.start.get_y() - - # Queen going along an axis - if dx == 0 or dy == 0: - # Along X-axis - for i in range(1, abs(dx)): - x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() - y_trajectory = move.start.get_y() - if ( - board.get_cell(x_trajectory, y_trajectory).get_piece() - is not None - ): - return False - # Along Y-axis - for i in range(1, abs(dy)): - x_trajectory = move.start.get_x() - y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() - if ( - board.get_cell(x_trajectory, y_trajectory).get_piece() - is not None - ): - return False - return True - - # Queen going in diagonal - elif abs(dx) == abs(dy): - for i in range(1, abs(dx)): - x_trajectory = i * int(dx / abs(dx)) + move.start.get_x() - y_trajectory = i * int(dy / abs(dy)) + move.start.get_y() - if ( - board.get_cell(x_trajectory, y_trajectory).get_piece() - is not None - ): - return False - return True - else: - return False - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - possible_moves = [] - - # Diagonal 1 - nx = x - 1 - ny = y - 1 - while nx >= 0 and ny >= 0: - possible_moves.append((nx, ny)) - nx -= 1 - ny -= 1 - - # Diagonal 2 - nx = x - 1 - ny = y + 1 - while nx >= 0 and ny <= 7: - possible_moves.append((nx, ny)) - nx -= 1 - ny += 1 - - # Diagonal 3 - nx = x + 1 - ny = y - 1 - while nx <= 7 and ny >= 0: - possible_moves.append((nx, ny)) - nx += 1 - ny -= 1 - - # Diagonal 4 - nx = x + 1 - ny = y + 1 - while nx <= 7 and ny <= 7: - possible_moves.append((nx, ny)) - nx += 1 - ny += 1 - - # X-axis left - nx = x - 1 - while nx >= 0: - possible_moves.append((nx, y)) - nx -= 1 - - # X-axis right - nx = x + 1 - while nx <= 7: - possible_moves.append((nx, y)) - nx += 1 - - # Y-axis down - ny = y - 1 - while ny >= 0: - possible_moves.append((x, ny)) - ny -= 1 - - # Y-axis top - ny = y + 1 - while ny <= 7: - possible_moves.append((x, ny)) - ny += 1 - - return possible_moves - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " Q " - - -class King(Piece): - """Base class for the king pieces - - Implements the properties, attributes and functions specific to kings. - - Attributes - ---------- - white : bool - Whether the piece is white or black. - x : int - x coordinate of piece on board - y : int - y coordinate of piece on board - killed: bool - Whether the piece has been killed by opponent or not. Initialized to False - has_moved: bool - Whether the piece has already moved during a game or not. Initialized to False - castling_done: bool - Whether the piece has already realized castling. Initialized to False. - """ - - type = "king" - - def __init__(self, *args, **kwargs): - """Initialization of the king. - - Parameters - ---------- - white : bool - Whether the piece is white or black. - x : int - initial x coordinate of piece on board - y : int - initial y coordinate of piece on board - - """ - super().__init__(*args, **kwargs) - self.castling_done = False - self.has_moved = False - - def piece_deepcopy(self): - """Method to create an uncorrelated clone of the piece. - - Returns - ------- - King - Exact copy of self. - """ - copied_piece = King(self.white, self.x, self.y) - copied_piece.killed = self.killed - copied_piece.castling_done = self.castling_done - copied_piece.has_moved = self.has_moved - return copied_piece - - def set_castling_done(self, castling_done): - self.castling_done = castling_done - - def piece_move_authorized(self, start, end): - """Method to verify if is a move is authorized in terms of movements. - - Parameters - ---------- - start: engine.Cell - Starting cell for movement check (current cell). - end: engine.Cell - Landing cell for movement check. - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - - if not super().piece_move_authorized(start=start, end=end): - return False - dx = end.get_x() - start.get_x() - dy = end.get_y() - start.get_y() - - if abs(dx) < 2 and abs(dy) < 2: - return True - else: - return False - - def can_move(self, board, move): - """Method to verify if a move is authorized within a board. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to and on which the movement is tested - move: engine.Move - Move object to be tested - - Returns - ------- - bool - Whether the movement is authorized by the piece possibilities or not. - """ - # Checking if movement is authorized - authorized_move = self.piece_move_authorized(move.start, move.end) - if authorized_move: - # Verifying that the landing cell is not threatened by some adversary material - if move.end.is_threatened(board, self.is_white()): - return False - else: - return True - # If move is not authorized it could mean that player is trying to do a special move, i.e. castling - else: - # Checking castling conditions on the right then on the left - if ( - not self.castling_done - and not self.has_moved - and (move.end.y == 6 or move.end.y == 2) - ): - if move.end.y == 6: # Roque vers la droite - # Getting the rook for castling - rook_to_move = board.get_cell(move.start.x, 7).get_piece() - rook_starting_coordinates = (move.start.x, 7) - rook_ending_coordinates = (move.start.x, 5) - - # Listing cells that must not have material on - if isinstance(rook_to_move, Rook): - must_be_empty_cells = [ - board.get_cell(move.start.x, 5), - board.get_cell(move.start.x, 6), - ] - must_not_be_threatened_cells = [ - board.get_cell(move.start.x, 4), - board.get_cell(move.start.x, 5), - board.get_cell(move.start.x, 6), - ] - else: - return False - - elif move.end.y == 2: # Roque vers la gauche - rook_to_move = board.get_cell(move.start.x, 0).get_piece() - rook_starting_coordinates = (move.start.x, 0) - rook_ending_coordinates = (move.start.x, 3) - - # Getting the rook - if isinstance(rook_to_move, Rook): - # Listing cells that must not have material on - must_be_empty_cells = [ - board.get_cell(move.start.x, 1), - board.get_cell(move.start.x, 2), - board.get_cell(move.start.x, 3), - ] - must_not_be_threatened_cells = [ - board.get_cell(move.start.x, 2), - board.get_cell(move.start.x, 3), - board.get_cell(move.start.x, 4), - ] - else: - return False - - else: - return False - - # Verifying conditions for listed cells - empty_cells_check = True - not_threatened_cells = True - for cll in must_be_empty_cells: - if cll.get_piece() is not None: - empty_cells_check = False - for cll in must_not_be_threatened_cells: - if cll.is_threatened(board, self.is_white()): - not_threatened_cells = False - - # Verify that all conditions are met and completes the move so that it has the full castling information - # to operate all the movements - conditions_to_castling = [ - not rook_to_move.has_moved, - empty_cells_check, - not_threatened_cells, - ] - if all(conditions_to_castling): - move.complementary_castling = ( - rook_to_move, - board.get_cell( - rook_starting_coordinates[0], rook_starting_coordinates[1] - ), - board.get_cell( - rook_ending_coordinates[0], rook_ending_coordinates[1] - ), - ) - return True - else: - return False - return False - - def get_potential_moves(self, x, y): - """Method to list all the possible moves from coordinates. Only uses authorized movements, no other pieces on a - board. - - Parameters - ---------- - x: int - x coordinate of the piece - y: int - y coordinate of the piece - - Returns - ------- - list - List of authorized moves - """ - possible_moves = [] - - # All possible moves - combos = [(1, 0), (1, 1), (-1, 1), (1, -1), (-1, -1), (0, 1), (0, -1), (-1, 0)] - for nx, ny in combos: - if 0 <= x + nx <= 7 and 0 <= y + ny <= 7: - possible_moves.append((nx + x, ny + y)) - - # Add castling as potential moves if not done yet - if not self.has_moved: - possible_moves.append((x, 1)) - possible_moves.append((x, 6)) - - return possible_moves - - def get_str(self): - """Method to represent the piece as a string. - - Returns - ------- - str - String representation of the piece - """ - return " K " - - def is_checked(self, board): - """Method to verify that the king at its current position is not threatened / checked by opponent material. - - Parameters - ---------- - board: engine.Board - Board to which the piece belongs to - - Returns - ------- - bool - Whether the king is checked or not. - """ - - return board.get_cell(self.x, self.y).is_threatened(board, self.white) - - # def is_checked_mate(self, board): - # if not self.is_checked(board): - # return False - # - # for i in range(8): - # for j in range(8): - # piece = board.get_cell(i, j).get_piece() - # if piece is not None: - # if piece.is_white() == self.is_white(): - # for move in piece.get_potential_moves(piece.x, piece.y): - # selected_move = Move(None, board.get_cell(i, j), - # board.get_cell(move[0], move[1])) - # verified_move = piece.can_move(board, selected_move) - # - # if verified_move: - # copied_board = board.copy() diff --git a/python/engine/move.py b/python/engine/move.py deleted file mode 100644 index 235e6d0..0000000 --- a/python/engine/move.py +++ /dev/null @@ -1,470 +0,0 @@ -import copy -import pickle - -import engine.material as material - - -class Move: - """Base class for material movement. - - Implements various checks and is able to operate a piece movement along additional actions such as taking an - adversary piece, castling, en passant. - - Attributes - ---------- - player : player.Player - Which player wants to play the move. - board : Engine.Board - board of the game on which the move is operated. - start : engine.Cell - Current cell on which the moved piece is. - end: engine.Cell - Cell on which the piece is moved to. - moved_piece: material.Piece - Piece of the board that is moved. - killed_piece: [None or material.Piece] - If a piece is killed during the move (meaning that there is a piece on cell end) otherwise is None. - is_castling: bool - Whether the move it castling. - complementary_castling: [None or material.Piece] - If is_castling, holds additional information => To be moved in extras ? - is_en_passant: bool - Whether or not the move is taking a Pawn 'En Passant' - extras: dict - Used to introduce additional information such as piece for promotion. - - """ - - def __init__(self, player, board, start, end, extras={}): - """Initialization of the piece. - - Parameters - ---------- - player : player.Player - Which player wants to play the move. - board : Engine.Board - board of the game on which the move is operated. - start : engine.Cell - Current cell on which the moved piece is. - end: engine.Cell - Cell on which the piece is moved to. - extras: dict - Used to introduce additional information such as piece for promotion. - - """ - self.player = player - self.board = board - self.start = start # Should we take only starting coordinates ? - self.end = end # Should we take only landing coordinates ? - self.extras = extras - - self.moved_piece = start.get_piece() # Check that moved_piece is not None ? - - self.killed_piece = self.end.get_piece() - self.is_castling = False - self.complementary_castling = None - self.en_passant = False - - def deepcopy(self): - """Method to create an uncorrelated clone of the move. - - Returns - ------- - Move - Exact copy of self. - - """ - # Rethink what needs to be copied and what needs not. - copied_board = self.board.deepcopy() - copied_move = Move( - self.player, - copied_board, - copied_board.get_cell(self.start.x, self.start.y), - copied_board.get_cell(self.end.x, self.end.y), - ) - copied_move.is_castling = self.is_castling - copied_move.complementary_castling = self.complementary_castling - copied_move.en_passant = self.en_passant - return copied_move - - def _set_moved_attribute(self): - """Method to set the 'has_moved' attributes for the pieces that need to check whether - they have already moved or not. - Also, if the piece is a Pawn, changes the last_move_is_double attribute so that it can - be taken 'En Passant' if this is the case. - """ - if hasattr( - self.moved_piece, "has_moved" - ): # Check if the moved piece has the attribute - self.moved_piece.has_moved = True - - if hasattr(self.moved_piece, "last_move_is_double"): # Check if it is a Pawn - if ( - abs(self.start.get_x() - self.end.get_x()) > 1 - ): # If the move is a double forward - self.moved_piece.last_move_is_double = True - else: - self.moved_piece.last_move_is_double = False - - def _set_castling_done(self): - """ - If self is a castling move, then when it is done this function sets the castling_done attribute - of the concerned King to True, so that it cannot use castling twice. - """ - assert isinstance(self.moved_piece, material.King) - self.moved_piece.castling_done = True - - def _is_castling(self): - """ - Checks if the current move is castling. In particular verifies that: - - the moved piece is a King - - the moved King has not already used its castling - - the King has not already moved - - the comparnion Rook is on the right Cell - - the companion Rook has not already moved - - the Cells between the King and the Rook are empty - - the King landing Cell is not threatened by adversary Pieces - Also if it is a castling move sets in self.extra the Rook that needs to be moved along the King - - Returns - ------- - bool - Whether self is castling or not. - """ - if not isinstance(self.moved_piece, material.King): - ###print("not castling becasuse king not moved") - return False - elif self.moved_piece.castling_done or self.moved_piece.has_moved: - ###print(self.moved_piece.castling_done) - ###print(self.moved_piece.has_moved) - return False - - else: - if self.end.y == 6: # Castling in the right - rook_to_move = self.board.get_cell(self.start.x, 7).get_piece() - if not isinstance(rook_to_move, material.Rook): - return False - elif rook_to_move.has_moved: - return False - else: - rook_starting_coordinates = (self.start.x, 7) - rook_ending_coordinates = (self.start.x, 5) - must_be_empty_cells = [ - self.board.get_cell(self.start.x, 5), - self.board.get_cell(self.start.x, 6), - ] - must_not_be_threatened_cells = [ - self.board.get_cell(self.start.x, 4), - self.board.get_cell(self.start.x, 5), - self.board.get_cell(self.start.x, 6), - ] - - elif self.end.y == 2: # Castling on the left - rook_to_move = self.board.get_cell(self.start.x, 0).get_piece() - if not isinstance(rook_to_move, material.Rook): - return False - elif rook_to_move.has_moved: - return False - else: - rook_starting_coordinates = (self.start.x, 0) - rook_ending_coordinates = (self.start.x, 3) - must_be_empty_cells = [ - self.board.get_cell(self.start.x, 1), - self.board.get_cell(self.start.x, 2), - self.board.get_cell(self.start.x, 3), - ] - must_not_be_threatened_cells = [ - self.board.get_cell(self.start.x, 2), - self.board.get_cell(self.start.x, 3), - self.board.get_cell(self.start.x, 4), - ] - else: - ###print('king did not move to a castling position') - return False - - # Verifying that the cells between rook and king are empty and that starting - # and landing cells for the king are not threatened. - empty_cells_check = True - not_threatened_cells = True - for cll in must_be_empty_cells: - if cll.get_piece() is not None: - empty_cells_check = False - for cll in must_not_be_threatened_cells: - if cll.is_threatened(self.board, self.moved_piece.is_white()): - not_threatened_cells = False - - # Verifies that both conditions are met - conditions_to_castling = [empty_cells_check, not_threatened_cells] - if all(conditions_to_castling): - self.complementary_castling = ( # To store in self.extras :) - rook_to_move, - self.board.get_cell( - rook_starting_coordinates[0], rook_starting_coordinates[1] - ), - self.board.get_cell( - rook_ending_coordinates[0], rook_ending_coordinates[1] - ), - ) - self.extras["complementary_castling"] = ( - rook_to_move, - self.board.get_cell( - rook_starting_coordinates[0], rook_starting_coordinates[1] - ), - self.board.get_cell( - rook_ending_coordinates[0], rook_ending_coordinates[1] - ), - ) - return True - - else: - ###print('Conditions for castling:') - ###print('Rook has not moved:', rook_to_move.has_moved) - ###print('Cells in between empty:', empty_cells_check) - ###print('Cells in between not threatened:', not_threatened_cells) - return False - - def _is_en_passant(self): - """ - Checks if the current move is an 'En passant' capture. In particular verifies that: - - the moved piece is a Pawn - - the movement of the pices is in diagonal - - the move crosses another Pawn - - this crossed Pawn is of different color - - this crossed Pawn last move is a double forward advance - Also if it is an 'En passant' capture sets the crossed Pawn as killed_piece - Returns - ------- - bool - Whether self is an 'En passant' capture or not. - """ - if isinstance( - self.moved_piece, material.Pawn - ): # Only a Pawn can take 'En Passant' - dx = self.start.get_x() - self.end.get_x() - dy = self.start.get_y() - self.end.get_y() - # Needs the movement to be in diagonal and that no piece is on the landing Cell - if dy == 0 or self.killed_piece is not None: - return False - - else: - # Retrieving crossed Piece - crossed_cell = self.board.get_cell(self.start.get_x(), self.end.get_y()) - crossed_piece = crossed_cell.get_piece() - # Verifying the crossed Piece is a Pawn - if isinstance(crossed_piece, material.Pawn): - # Verifying color and last move of crossed_piece - if ( - crossed_piece.last_move_is_double - and crossed_piece.is_white() != self.moved_piece.is_white() - ): - # Revoir comment on update cet attribut last_move_is_double - self.killed_piece = crossed_piece - self.en_passant = True - return True - else: - return False - else: - return False - else: - return False - - def _is_pawn_promotion(self): - """ - Checks if the current move is should ends up with a Pawn promotion, meaning that: - - the moved piece is a Pawn - - the Pawn reaches the other side of the board according to its color - If the Piece it should be promote into is not specified in self.extras then sets Queen as promotion. - - Returns - ------- - bool - Whether self should ends up by a Pawn promotion or not. - """ - # Checks the piece - if not isinstance(self.moved_piece, material.Pawn): - return False - else: - # Checks if the Pawn has reached the other side of the board. - if self.end.get_x() == 7 and self.moved_piece.is_white(): # White Piece - # Standard is to promote into a Queen if not specified - self.promote_into = self.extras.get("promote_into", "queen") - return True - - elif ( - self.end.get_x() == 0 and not self.moved_piece.is_white() - ): # Black Piece - # Standard is to promote into a Queen if not specified - self.promote_into = self.extras.get("promote_into", "queen") - return True - else: - return False - - def _promote_pawn(self): - """ - Organizes the Pawn promotion. - """ - coordinates = (self.end.get_x(), self.end.get_y()) - self.board.promote_pawn(coordinates=coordinates, promote_into=self.promote_into) - - def move_pieces(self): - """ - Effectively moves pieces on board - """ - # Do everything from coordinates so that only board needs to be copied in self.deepcopy() ? - - # Kills Piece on landing Cell if needed. - if self.killed_piece is not None: - self.board.kill_piece_from_coordinates((self.end.x, self.end.y)) - # Moves Piece on the Board - self.board.move_piece_from_coordinates( - (self.start.x, self.start.y), (self.end.x, self.end.y) - ) - - # Executes castling if needed - if self.complementary_castling is not None and self.is_castling: - castling_rook, rook_start, rook_end = self.complementary_castling - self.board.move_piece_from_coordinates( - (rook_start.x, rook_start.y), (rook_end.x, rook_end.y) - ) - - # Sets castling to done - self._set_castling_done() - - # Promotes Pawn if needed - if self._is_pawn_promotion(): - self._promote_pawn() - - # Sets the different movement related attributes of Pieces - self._set_moved_attribute() - - def is_possible_move(self): - # REFONDRE, particulièrement, faire en sorte qu'on ne vérifie chaque condition qu'une seule fois - # Why castling is checked here ? - """ - Checks if move is possible. In particular checks that: - - Landing Cell is different than current Cell - - Checks the color of the potential Piece on the landing Cell - - Movement on the Board is authorized according to the Piece type - - If moved Piece is a King, does not land on a threatened Cell - - If the Piece it should be promote into is not specified in self.extras then sets Queen as promotion. - - Returns - ------- - bool - Whether the move is legal or not. - """ - # Should be kept ? - - dx = self.start.get_x() - self.end.get_x() - dy = self.start.get_y() - self.end.get_y() - - # If no movement not possible - if abs(dx) == 0 and abs(dy) == 0: - return False - - """ - # Check color of player and color of moving piece: - if self.moved_piece.is_white() != self.player.is_white_side(): - ###print(self.moved_piece, self.moved_piece.is_white(), self.player.is_white_side()) - ###print("Player", self.player, "tries to move adversaries pieces") - return False - """ - - # check color of receiving piece - if self.killed_piece is not None: - if self.moved_piece.is_white() == self.killed_piece.is_white(): - return False - if self.killed_piece.is_white() == self.player.is_white_side(): - return False - - # good moving for type of piece selected - is_legal_move = self.moved_piece.can_move(self.board, self) - - # Why here ? - self.is_castling = self._is_castling() - - if not is_legal_move: - if not self._is_en_passant() or not self.is_castling: - return False - - """ - # Check for chess - def work_future(curr_move, curr_board): - future_board = copy.deepcopy(curr_board) - x_start = curr_move.start.get_x() - y_start = curr_move.start.get_y() - x_end = curr_move.end.get_x() - y_end = curr_move.end.get_y() - future_piece = future_board.get_cell(x_start, y_start).get_piece() - - future_board.get_cell(x_end, y_end).set_piece(future_piece) - future_board.get_cell(x_start, y_start).set_piece(None) - - if hasattr(future_piece, 'has_moved'): - future_piece.has_moved = True - if hasattr(future_piece, 'last_move_is_double'): - if abs(x_start - x_end) > 1: - future_piece.last_move_is_double = True - else: - future_piece.last_move_is_double = False - - # Check for castling - if curr_move.complementary_castling is not None: - ###print('Apparently future castling move, working on moving the Rook') - castling_rook, rook_start, rook_end = curr_move.complementary_castling - rook_start = future_board.get_cell(rook_start.get_x(), rook_start.get_y()) - rook_end = future_board.get_cell(rook_end.get_x(), rook_end.get_y()) - castling_rook = rook_start.get_piece() - - rook_end.set_piece(castling_rook) - rook_start.set_piece(None) - - # Check for prise en passant - if curr_move.complementary_passant is not None: - ###print('This future move is taking En Passant') - x_passant = curr_move.complementary_passant.get_x() - y_passant = curr_move.complementary_passant.get_y() - - en_passant_piece = future_board.get_cell(x_passant, y_passant).get_piece() - en_passant_piece.set_killed(True) - future_board.get_cell(x_passant, y_passant).set_piece(None) - - # Checking if future king is chessed - if curr_move.player.is_white_side(): - king = future_board.white_king - else: - king = future_board.black_king - - return future_board.get_cell(king.x, king.y).is_threatened(future_board, king.is_white()) - """ - # Checks if the player's King is threatened after the move. - is_king_threatened_in_future = self._work_future_to_check_chess() - if is_king_threatened_in_future: - return False - - return True - - def _work_future_to_check_chess(self): # Can it be done better ? - """ - Effectively move the Piece and check if the King is then threatened. In this case, move cannot happen. - - Returns - ------- - bool - Whether the player's King is threatened once the move done. - """ - - # Deep Copy everything - move = self.deepcopy() - # Move Piece - move.move_pieces() - - # Select player's King and check if threatened. - if move.player.is_white_side(): - king = move.board.white_king - else: - king = move.board.black_king - return move.board.get_cell(king.x, king.y).is_threatened( - move.board, king.is_white() - ) diff --git a/python/interface/interface.py b/python/interface/interface.py deleted file mode 100644 index cf99006..0000000 --- a/python/interface/interface.py +++ /dev/null @@ -1,269 +0,0 @@ -import numpy as np -import os -import time - -from kivy.app import App -from kivy.uix.gridlayout import GridLayout -from kivy.uix.boxlayout import BoxLayout -from kivy.uix.label import Label -from kivy.uix.textinput import TextInput -from kivy.uix.button import Button -from kivy.uix.popup import Popup - -from kivy.graphics import Rectangle, Color, Canvas - -from engine.engine import Game - - -class LoginScreen(GridLayout): - def __init__(self, **kwargs): - super(LoginScreen, self).__init__(**kwargs) - self.cols = 8 - self.add_widget(Label(text="")) - self.username = TextInput(multiline=False) - self.add_widget(self.username) - self.add_widget(Label(text="password")) - self.password = TextInput(password=True, multiline=False) - self.add_widget(self.password) - - self.add_widget(Label(text="password2")) - self.password2 = TextInput(password=True, multiline=False) - self.add_widget(self.password2) - - self.add_widget(Rectangle(pos=(10, 10), size=(500, 500))) - - -class DisplayableCell(Button): - def __init__(self, row, column, **kwargs): - super(DisplayableCell, self).__init__(**kwargs) - self.row = row - self.column = column - - -class TableScreen(GridLayout): - def __init__(self, game, **kwargs): - super(TableScreen, self).__init__(**kwargs) - self.path_to_illustrations = "illustrations" - self.game = game - - if game.ai: - self.ai_playing = True - else: - self.ai_playing = False - - self.cols = 8 - self.rows = 8 - - self.to_play_player = game.player1 - - self.first_cell_clicked = None - - self.cells = [] - - for i in range(8): - line = [] - for j in range(8): - if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): - color = (0.4, 0.4, 0.8, 1) - c_img = "b" - else: - color = (0.4, 0.8, 0.4, 1) - c_img = "w" - # self.add_widget(Button(text='Button %i %i' % (i, j), background_color=color, - # background_down='illustrations/white_pawn.png', - # background_normal='illustrations/white_queen.png')) - piece = game.board.get_cell(i, j).get_piece() - - if piece is not None: - path_to_img = c_img - - if piece.is_white(): - piece_color = (1, 1, 1, 1) - path_to_img += "w" - else: - piece_color = (0, 0, 0, 1) - path_to_img += "b" - path_to_img += "_" + piece.get_str().replace(" ", "") + ".png" - path_to_down_img = "down_" + path_to_img - - path_to_img = os.path.join(self.path_to_illustrations, path_to_img) - path_to_down_img = os.path.join( - self.path_to_illustrations, path_to_down_img - ) - - piece = piece.get_str() - button = DisplayableCell( - text=piece, - on_press=self.click_cell, - row=i, - column=j, - color=piece_color, - background_normal=path_to_img, - border=(0, 0, 0, 0), - background_down=path_to_down_img, - ) - else: - piece = "" - piece_color = (1, 1, 1, 1) - path_to_img = c_img + ".png" - path_to_down_img = "down_" + path_to_img - - path_to_img = os.path.join(self.path_to_illustrations, path_to_img) - path_to_down_img = os.path.join( - self.path_to_illustrations, path_to_down_img - ) - - button = DisplayableCell( - text=piece, - background_normal=path_to_img, - on_press=self.click_cell, - row=i, - column=j, - color=piece_color, - border=(0, 0, 0, 0), - background_down=path_to_down_img, - ) - self.add_widget(button) - line.append(button) - self.cells.append(line) - - def reset_game(self, button): - print("On click, Reset", button) - self.game.reset_game() - self.update() - - def update(self): - board = self.game.board - for i in range(8): - for j in range(8): - if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): - c_img = "b" - else: - c_img = "w" - - piece = board.get_cell(i, j).get_piece() - if piece is not None: - path_to_img = c_img - if piece.is_white(): - piece_color = (1, 1, 1, 1) - path_to_img += "w" - else: - piece_color = (0, 0, 0, 1) - path_to_img += "b" - piece = piece.get_str() - path_to_img += "_" + piece.replace(" ", "") + ".png" - else: - piece = "" - piece_color = (1, 1, 1, 1) - path_to_img = c_img + ".png" - - path_to_down_img = "down_" + path_to_img - path_to_img = os.path.join(self.path_to_illustrations, path_to_img) - path_to_down_img = os.path.join( - self.path_to_illustrations, path_to_down_img - ) - self.cells[i][j].text = piece - self.cells[i][j].color = piece_color - self.cells[i][j].background_normal = path_to_img - self.cells[i][j].background_down = path_to_down_img - - def finish_game(self, winner): - popup = Popup(title="Game finished", auto_dismiss=False) - popup.bind(on_dismiss=self.reset_game) - - box = BoxLayout() - box.add_widget(Label(text="Congratulations %s has won" % winner)) - restart_button = Button(text="Restart a game!") - restart_button.bind(on_press=popup.dismiss) - box.add_widget(restart_button) - - popup.bind(on_dismiss=self.reset_game) - popup.content = box - popup.open() - - def click_cell(self, event): - ( - self.cells[event.row][event.column].background_normal, - self.cells[event.row][event.column].background_down, - ) = ( - self.cells[event.row][event.column].background_down, - self.cells[event.row][event.column].background_normal, - ) - if self.first_cell_clicked is None: - self.first_cell_clicked = (event.row, event.column) - elif ( - self.first_cell_clicked[0] == event.row - and self.first_cell_clicked[1] == event.column - ): - print("Selection Aborted") - self.first_cell_clicked = None - else: - start_x = self.first_cell_clicked[0] - start_y = self.first_cell_clicked[1] - end_x = event.row - end_y = event.column - - print(self.game.player1, self.game.to_play_player) - validated_move, winner = self.game.move_from_coordinates( - self.game.to_play_player, start_x, start_y, end_x, end_y - ) - print( - "Validated move ?", - validated_move, - self.game.to_play_player, - start_x, - start_y, - end_x, - end_y, - winner, - ) - - if validated_move: - self.update() - - if self.ai_playing: - print("Time for AI") - ai_move = self.game.player2.time_to_play(self.game.board) - self.game.board.draw() - game_is_on = self.game.move(ai_move, self.game.player2) - - if game_is_on[0]: - self.update() - else: - if isinstance(game_is_on[1], str): - self.finish_game(game_is_on[1]) - else: - pass - - elif isinstance(winner, str): - print("WINNER", winner) - self.finish_game(winner) - return None - - row, col = self.first_cell_clicked - ( - self.cells[row][col].background_normal, - self.cells[row][col].background_down, - ) = ( - self.cells[row][event.column].background_down, - self.cells[event.row][col].background_normal, - ) - self.first_cell_clicked = None - ( - self.cells[event.row][event.column].background_normal, - self.cells[event.row][event.column].background_down, - ) = ( - self.cells[event.row][event.column].background_down, - self.cells[event.row][event.column].background_normal, - ) - - -class MyApp(App): - def __init__(self, play_with_ai=False, **kwargs): - super().__init__(**kwargs) - self.play_with_ai = play_with_ai - - def build(self): - game = Game(automatic_draw=False, ai=self.play_with_ai) - print("game created") - return TableScreen(game) diff --git a/python/player/ai_player.py b/python/player/ai_player.py deleted file mode 100644 index 076819e..0000000 --- a/python/player/ai_player.py +++ /dev/null @@ -1,352 +0,0 @@ -import copy -import pickle -import numpy as np - -from player.player import Player -import engine.material as material -import engine.move as move - - -class EasyAIPlayer(Player): - piece_weights = { - "pawn": 10, - "knight": 30, - "bishop": 30, - "rook": 50, - "queen": 90, - "king": 900, - } - piece_positions_weights = { - "pawn": [ - [0.0] * 8, - [5.0] * 8, - [1.0, 1.0, 2.0, 3.0, 3.0, 2.0, 1.0, 1.0], - [0.5, 0.5, 1.0, 2.5, 2.5, 1.0, 0.5, 0.5], - [0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0], - [0.5, -0.5, -1.0, 0.0, 0.0, -1.0, -0.5, 0.5], - [0.5, 1.0, 1.0, -2.0, -2.0, 1.0, 1.0, 0.5], - [0.0] * 8, - ], - "bishop": [ - [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], - [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-1.0, 0.0, 0.5, 1.0, 1.0, 0.5, 0.0, -1.0], - [-1.0, 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, -1.0], - [-1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0], - [-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0], - [-1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, -1.0], - [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], - ], - "knight": [ - [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], - [-4.0, -2.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0], - [-3.0, 0.0, 1.0, 1.5, 1.5, 1.5, 1.0, 0.0, -3.0], - [-3.0, 0.5, 1.5, 2.0, 2.0, 1.5, 0.5, -3.0], - [-3.0, 0.0, 1.5, 2.0, 2.0, 1.5, 0.0, -3.0], - [-3.0, 0.5, 1.0, 1.5, 1.5, 1.0, 0.5, -3.0], - [-4.0, -2.0, 0.0, 0.5, 0.5, 0.0, -2.0, -4.0], - [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], - ], - "rook": [ - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0], - ], - "queen": [ - [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], - [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-1.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0], - [-0.5, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5], - [0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, 0.0], - [-1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -1.0], - [-1.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], - ], - "king": [ - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-2.0, -3.0, -3.0, -4.0, -4.0, -3.0, -3.0, -2.0], - [-1.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -1.0], - [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0], - [2.0, 3.0, 1.0, 0.0, 0.0, 1.0, 3.0, 2.0], - ], - } - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.color = "white" if self.white_side else "black" - if self.color == "white": - for key, values in self.piece_positions_weights.items(): - new_values = [] - for i in range(len(values)): - new_values.append(values[-i]) - self.piece_positions_weights[key] = new_values - - def __str__(self): - return "EasyAIPlayer" - - def _get_possible_moves(self, board, is_white=None): - if is_white is None: - is_white = self.white_side() - - if self.white_side != is_white: - - class TempPlayer: - def __init__(self): - self.white_side = is_white - - def is_white_side(self): - return self.white_side - - player = TempPlayer() - else: - player = self - color = {True: "white", False: "black"}[is_white] - possible_moves = [] - ###print("LOOKING FOR MOVES FOR COLOR", color) - for type_piece in board.all_material[color]["alive"].keys(): - ###print(' >>>>>>>>>>>>>>>>> TYPE PCE', type_piece) - for piece in board.all_material[color]["alive"][type_piece]: - piece_available_moves = piece.get_potential_moves(piece.x, piece.y) - for mv in piece_available_moves: - if isinstance(piece, material.Pawn): - ###print("POSSIBLE MOVES FOR PAWN", piece_available_moves) - pass - selected_move = move.Move( - player, - board, - board.get_cell(piece.x, piece.y), - board.get_cell(mv[0], mv[1]), - ) - if selected_move.is_possible_move(): - possible_moves.append(selected_move) - ###print("possible move +1") - ###print("NB possible moves", len(possible_moves)) - return possible_moves - - def _select_move_from_score(self, moves, method="max"): - all_scores = {} - for mv in moves: - mv_ = pickle.loads(pickle.dumps(mv, -1)) - # mv_ = copy.deepcopy(mv) - mv_.move_pieces() - score = self._score_board(mv_.board) - all_scores[mv] = score - - scores = list(all_scores.values()) - if method == "max": - all_indexes = np.where(scores == np.max(scores))[0] - elif method == "min": - all_indexes = np.where(scores == np.min(scores))[0] - else: - raise ValueError("MIN OR MAX ALGO, selected %s" % method) - - perm = np.random.permutation(len(all_indexes))[0] - final_index = all_indexes[perm] - return list(all_scores.keys())[int(final_index)], scores[final_index] - - # def _def_get_best_score(self, moves, method="max"): - # all_scores = [] - # for mv in moves: - # mv_ = copy.deepcopy(mv) - # mv_.move_pieces() - # score = self._score_board(mv_.board) - # all_scores.append(score) - # - # if method == "max": - # return np.max(all_scores) - # elif method == "min": - # return np.min(all_scores) - # else: - # raise ValueError - - def _search_tree(self, init_board, depth=2, method="max"): - possible_moves = self._get_possible_moves(init_board) - if depth == 1: - best_move, best_score = self._select_move_from_score( - possible_moves, method=method - ) - return best_move, best_score - else: - new_method = {"max": "min", "min": "max"} - scores = [] - for p_mv in possible_moves: - p_mv = p_mv.deepcopy() - # p_mv = pickle.loads(pickle.dumps(p_mv, -1)) - # p_mv = copy.deepcopy(p_mv) - p_mv.move_pieces() - _, score = self._search_tree( - p_mv.board, depth=depth - 1, method=new_method[method] - ) - scores.append(score) - - if method == "max": - best_score = np.max(scores) - else: - best_score = np.min(score) - - best_indexes = np.where(np.array(scores) == best_score)[0] - final_index = best_indexes[np.random.permutation(len(best_indexes))[0]] - ###print(final_index) - return possible_moves[int(final_index)], best_score - - def _score_move(self, move): - all_scores = {} - mv_ = move.deepcopy() - # mv_ = pickle.loads(pickle.dumps(move, -1)) - # mv_ = copy.deepcopy(move) - mv_.move_pieces() - score = self._score_board(mv_.board) - - return move, score - - def _alpha_beta( - self, - init_board, - init_move=None, - depth=2, - alpha=-10000, - beta=10000, - is_white=None, - ): - if is_white is None: - is_white = self.white_side - ###print('ALPHA BETA FOR BOARD:', "with depth", depth) - init_board.draw() - if depth == 0: - ###print("SCORING BOARD") - init_board.draw() - score = self._score_board(init_board) - ###print("SCORE FOUND:", score) - return score, init_move - elif is_white == self.is_white_side(): - possible_moves = self._get_possible_moves(init_board, is_white=is_white) - ###print(depth, "nb moves:", len(possible_moves)) - best_score = -10000 - best_move = None - i = 0 - for p_mv in possible_moves: - ###print("Move", i, "on", len(possible_moves), "for depth", depth, p_mv.end.x) - i += 1 - # p_mv_ = pickle.loads(pickle.dumps(p_mv, -1)) - # p_mv_ = copy.deepcopy(p_mv) - p_mv_ = p_mv.deepcopy() - p_mv_.move_pieces() - score, _ = self._alpha_beta( - p_mv_.board, - init_move=p_mv_, - depth=depth - 1, - alpha=alpha, - beta=beta, - is_white=not is_white, - ) - ###print(score, p_mv.start.x, p_mv.start.y, p_mv.end.x, p_mv.end.y) - best_move = [best_move, p_mv][np.argmax([best_score, score])] - best_score = np.max([best_score, score]) - ###print("BEST SCORE", best_score) - ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) - if best_score >= beta: - return best_score, best_move - alpha = np.max((alpha, best_score)) - ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) - return best_score, best_move - - else: - possible_moves = self._get_possible_moves(init_board, is_white=is_white) - ###print(depth, "nb moves:", len(possible_moves)) - best_score = 10000 - best_move = None - for p_mv in possible_moves: - # p_mv_ = pickle.loads(pickle.dumps(p_mv, -1)) - p_mv_ = p_mv.deepcopy() - p_mv_.move_pieces() - score, _ = self._alpha_beta( - p_mv_.board, - init_move=p_mv_, - depth=depth - 1, - alpha=alpha, - beta=beta, - is_white=is_white, - ) - ###print(score, p_mv.start.x, p_mv.start.y, p_mv.end.x, p_mv.end.y) - best_move = [best_move, p_mv][np.argmin([best_score, score])] - best_score = np.min([best_score, score]) - ###print("BEST SCORE", best_score) - ###print(np.argmax([best_score, score])) - ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) - if best_score <= alpha: - return best_score, best_move - beta = np.min([beta, best_score]) - ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) - return best_score, best_move - - def random_move(self, board): - for i in np.random.permutation(8): - for j in np.random.permutation(8): - if board.get_cell(i, j).get_piece() is not None: - if ( - board.get_cell(i, j).get_piece().is_white() - == self.is_white_side() - ): - selected_piece = board.get_cell(i, j).get_piece() - ###print('AI Selected Piece', selected_piece) - possible_moves = selected_piece.get_potential_moves(i, j) - - verified_move = False - random_move = np.random.permutation(len(possible_moves)) - index = 0 - ###print('Verifying Moves,', len(possible_moves), 'Moves Possibles') - while not verified_move and index < len(random_move): - selected_move = possible_moves[random_move[index]] - selected_move = move.Move( - self, - board, - board.get_cell(i, j), - board.get_cell(selected_move[0], selected_move[1]), - ) - verified_move = selected_move.is_possible_move() - index += 1 - - if verified_move: - ###print('Move is verified, ') - return selected_move - ###print('No moved found, aborting...') - - def time_to_play(self, board, depth=3): - board.draw() - current_score = self._score_board(board) - ###print("SCORE:", current_score) - - # all_possible_moves = self._get_possible_moves(board) - # sel_move, sel_score = self._select_move_from_score(all_possible_moves) - # sel_move, sel_score = self._search_tree(board, depth=3) - board.draw() - sel_score, sel_move = self._alpha_beta(board, depth=depth) - board.draw() - ###print("future score:", sel_score) - ###print(sel_move.start.x, sel_move.start.y, sel_move.end.x, sel_move.end.y, self.color) - - return sel_move - - def _score_board(self, board): - score = 0 - for piece_type in board.all_material[self.color]["alive"].keys(): - for piece in board.all_material[self.color]["alive"][piece_type]: - score += self.piece_weights[piece_type] - ###print(piece_type, piece.x, piece.y) - score += self.piece_positions_weights[piece_type][piece.x][piece.y] - - adv_color = "white" if self.color == "black" else "black" - - for piece_type in board.all_material[adv_color]["alive"].keys(): - for piece in board.all_material[adv_color]["alive"][piece_type]: - score -= self.piece_weights[piece_type] - score -= self.piece_positions_weights[piece_type][piece.x][piece.y] - return score diff --git a/python/player/my_player.py b/python/player/my_player.py deleted file mode 100644 index 7aafbe6..0000000 --- a/python/player/my_player.py +++ /dev/null @@ -1,237 +0,0 @@ -import os - -import numpy as np - -# import tensorflow as tf - -from player.player import Player -import engine.material as material -import engine.move as move - - -class Memory(object): - def __init__(self, max_memory=200): - self.max_memory = max_memory - self.memory = list() - - def remember(self, m): - self.memory.append(m) - self.memory = self.memory[max(len(self.memory) - self.max_memory, 0) :] - - def random_access(self): - rn = np.random.randint(0, max(len(self.memory), 1)) - return self.memory[rn] - - -class MyPlayer(Player): - def __init__(self, path_to_model="", epsilon_explorer=0.15, *args, **kwargs): - super().__init__(*args, **kwargs) - self.color = "white" if self.white_side else "black" - self.path_to_model = path_to_model - self.epsilon_explorer = epsilon_explorer - - in_ = tf.keras.layers.Input(shape=(8, 8, 6)) - out = tf.keras.layers.Conv2D(16, kernel_size=3, padding="SAME")(in_) - out = tf.keras.layers.Conv2D(32, kernel_size=3, padding="SAME")(out) - out = tf.keras.layers.Conv2D(16, kernel_size=3, padding="SAME", strides=2)(out) - out = tf.keras.layers.Conv2D(8, kernel_size=3, padding="SAME", strides=2)(out) - out = tf.keras.layers.Flatten()(out) - out = tf.keras.layers.Dense(8)(out) - out = tf.keras.layers.Dense(1)(out) - if path_to_model == "": - self.path_to_model = "./" - for _ in range(10): - self.path_to_model += str(np.random.randint(10)) - - if not os.path.exists(path_to_model): - self.model = tf.keras.Model(inputs=in_, outputs=out) - self.model.compile(loss="mse", optimizer="Adam") - else: - print("Loading Model") - self.model = tf.keras.models.load_model(path_to_model) - self.model.compile(loss="mse", optimizer="Adam") - print("Model Loaded") - print(self.model.summary()) - self.memory = Memory() - - def _score_board(self, board, white_side=None): - if white_side == None: - white_side = self.white_side - - one_hot_encode_board = board.one_hot_encode() - - if self.white_side != white_side: - one_hot_encode_board = np.flip(one_hot_encode_board) - - score = self.model.predict( - np.expand_dims(one_hot_encode_board, 0).astype("float32") - ) - return score[0][0] - - def _get_possible_moves(self, board, is_white=None): - if is_white is None: - is_white = self.white_side() - - color = {True: "white", False: "black"}[is_white] - possible_moves = [] - for type_piece in board.all_material[color]["alive"].keys(): - for piece in board.all_material[color]["alive"][type_piece]: - piece_available_moves = piece.get_potential_moves(piece.x, piece.y) - for mv in piece_available_moves: - selected_move = move.Move( - self, - board, - board.get_cell(piece.x, piece.y), - board.get_cell(mv[0], mv[1]), - ) - if selected_move.is_possible_move(): - possible_moves.append(selected_move) - return possible_moves - - def _select_move_from_score(self, moves, train=True): - if train: - do_random_move = np.random.randint(100) <= self.epsilon_explorer * 100 - if do_random_move: - print("RANDOM MOVE SELECTED") - index_random_move = np.random.randint(len(moves)) - random_move = moves[index_random_move] - mv_ = random_move.deepcopy() - mv_.move_pieces() - random_score = self._score_board(mv_.board) - return random_move, random_score - - all_scores = {} - for mv in moves: - mv_ = mv.deepcopy() - mv_.move_pieces() - score = self._score_board(mv_.board) - all_scores[mv] = score - - scores = list(all_scores.values()) - all_indexes = np.where(scores == np.max(scores))[0] - - perm = np.random.permutation(len(all_indexes))[0] - final_index = all_indexes[perm] - return list(all_scores.keys())[int(final_index)], scores[final_index] - - def _base_scoring(self, board, game_is_won="", white_side=None): - if white_side is None: - white_side = self.white_side - piece_weights = { - "pawn": 10, - "knight": 30, - "bishop": 30, - "rook": 50, - "queen": 90, - "king": 900, - } - piece_positions_weights = { - "pawn": [ - [0.0] * 8, - [5.0] * 8, - [1.0, 1.0, 2.0, 3.0, 3.0, 2.0, 1.0, 1.0], - [0.5, 0.5, 1.0, 2.5, 2.5, 1.0, 0.5, 0.5], - [0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0], - [0.5, -0.5, -1.0, 0.0, 0.0, -1.0, -0.5, 0.5], - [0.5, 1.0, 1.0, -2.0, -2.0, 1.0, 1.0, 0.5], - [0.0] * 8, - ], - "bishop": [ - [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], - [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-1.0, 0.0, 0.5, 1.0, 1.0, 0.5, 0.0, -1.0], - [-1.0, 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, -1.0], - [-1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0], - [-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0], - [-1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, -1.0], - [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0], - ], - "knight": [ - [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], - [-4.0, -2.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0], - [-3.0, 0.0, 1.0, 1.5, 1.5, 1.5, 1.0, 0.0, -3.0], - [-3.0, 0.5, 1.5, 2.0, 2.0, 1.5, 0.5, -3.0], - [-3.0, 0.0, 1.5, 2.0, 2.0, 1.5, 0.0, -3.0], - [-3.0, 0.5, 1.0, 1.5, 1.5, 1.0, 0.5, -3.0], - [-4.0, -2.0, 0.0, 0.5, 0.5, 0.0, -2.0, -4.0], - [-5.0, -4.0, -3.0, -3.0, -3.0, -3.0, -4.0, -5.0], - ], - "rook": [ - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5], - [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0], - ], - "queen": [ - [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], - [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-1.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0], - [-0.5, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5], - [0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, 0.0], - [-1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, -1.0], - [-1.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0], - [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0], - ], - "king": [ - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0], - [-2.0, -3.0, -3.0, -4.0, -4.0, -3.0, -3.0, -2.0], - [-1.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -1.0], - [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0], - [2.0, 3.0, 1.0, 0.0, 0.0, 1.0, 3.0, 2.0], - ], - } - - score = 0 - for piece_type in board.all_material["white"]["alive"].keys(): - for piece in board.all_material["white"]["alive"][piece_type]: - score += piece_weights[piece_type] - score += np.flip(piece_positions_weights[piece_type])[piece.x][piece.y] - - for piece_type in board.all_material["black"]["alive"].keys(): - for piece in board.all_material["black"]["alive"][piece_type]: - score -= piece_weights[piece_type] - score -= piece_positions_weights[piece_type][piece.x][piece.y] - if not white_side: - score = -1 * score - if game_is_won: - score += 1000 - elif not game_is_won: - score -= 1000 - - return score - - def _reinforce(self, board, best_next_score, batch_size=12, white_side=None): - if white_side is None: - white_side = self.white_side - score = self._base_scoring(board, white_side=white_side) - print("SCORE during reinforce phase", score) - self.memory.remember((board.one_hot_encode(white_side=white_side), score)) - - input_states = np.zeros((batch_size, 8, 8, 6)) - target_q = np.zeros((batch_size, 1)) - - for i in range(batch_size): - (s_i, r_i) = self.memory.random_access() - input_states[i] = s_i - target_q[i] = r_i - self.model.train_on_batch(input_states, target_q) - self.model.save(self.path_to_model) - - def __str__(self): - return "MyAIPlayer" - - def time_to_play(self, board, white_side=None): - if white_side is None: - white_side = self.is_white_side() - possible_moves = self._get_possible_moves(board, is_white=white_side) - best_move, best_score = self._select_move_from_score(possible_moves) - - self._reinforce(board, best_score, white_side=white_side) - return best_move diff --git a/python/player/player.py b/python/player/player.py deleted file mode 100644 index 2f19212..0000000 --- a/python/player/player.py +++ /dev/null @@ -1,134 +0,0 @@ -import numpy as np - -from engine.move import Move - - -class Player: - """Base class players. If human player only here to ensure that right player is playing right Pieces. - For AI-based players can implement more operations. - - Attributes - ---------- - is_white_side : bool - Whether the player plays with white or black Pieces. - - """ - - def __init__(self, white_side): - """Initialization of the player. - - Parameters - ---------- - white_side : bool - Whether the player plays with white or black pieces. - """ - self.white_side = white_side - self.random_number = np.random.randint(0, 1000, 1) - - def __str__(self): - """Creates a string representation of the player. - - Returns - ------- - str - String representation of the player - - """ - return "NormalPlayer%i" % self.random_number - - def is_white_side(self): - """Method to access the player's side. - - Returns - ------- - bool - color of pieces played by player. - - """ - return self.white_side - - def time_to_play(self, board): - """Potential method that returns a move. - - - Parameters - ---------- - board : engine.Board on which to play. - - Returns - ------- - move.Move move to operate on board. - - """ - pass - - -class AIRandomPlayer(Player): - """ - A first AI that plays totally randomly. Selects one move among all possibles and plays it. - """ - - def __str__(self): - """Creates a string representation of the player. - - Returns - ------- - str - String representation of the player - """ - - return "AIRandomPlayer" - - def time_to_play(self, board): - """Potential method that returns a move. - - - Parameters - ---------- - board : engine.Board on which to play. - - Returns - ------- - move.Move move to operate on board. - """ - - # Random selection of Piece to play - for i in np.random.permutation(8): - for j in np.random.permutation(8): - # Verfies there is a Piece to play. - if board.get_cell(i, j).get_piece() is not None: - if ( - board.get_cell(i, j).get_piece().is_white() - == self.is_white_side() - ): - # Get potential moves - selected_piece = board.get_cell(i, j).get_piece() - print("AI Selected Piece", selected_piece) - possible_moves = selected_piece.get_potential_moves(i, j) - - # We can must verify that a move is playable - verified_move = False - # Random selection of move - random_move = np.random.permutation(len(possible_moves)) - index = 0 - print( - "Verifying Moves,", len(possible_moves), "Moves Possibles" - ) - # Stop only with a move that can be played. - while not verified_move and index < len(random_move): - # Select and check move. - selected_move = possible_moves[random_move[index]] - selected_move = Move( - self, - board, - board.get_cell(i, j), - board.get_cell(selected_move[0], selected_move[1]), - ) - verified_move = selected_move.is_possible_move() - index += 1 - - # If move is ok, break loop and return it - if verified_move: - print("Move is verified, ") - return selected_move - print("No moved found, aborting...") diff --git a/python/utils/images_creation.py b/python/utils/images_creation.py deleted file mode 100644 index 8d33854..0000000 --- a/python/utils/images_creation.py +++ /dev/null @@ -1,116 +0,0 @@ -import os - -import matplotlib.pyplot as plt -import numpy as np - -from PIL import Image - -black_pawn = np.array(Image.open("own_illustrations/queen_grey.png")) - -black_back = (np.array([0.4, 0.4, 0.8]) * 255).astype("uint8") -white_back = (np.array([0.4, 0.8, 0.4]) * 255).astype("uint8") - -changed = [] -for i in range(3): - channel = np.copy(black_pawn[:, :, i]) - channel[black_pawn[:, :, i] < 137] = 100 * i - channel[black_pawn[:, :, i] == 0] = 200 / (i + 1) - channel[black_pawn[:, :, i] > 137] = 100 * i - 50 - changed.append(channel) - -plt.figure() -plt.imshow(np.dstack(changed)) -plt.show() - -plt.figure() -plt.imshow(black_pawn) -plt.show() -# black_back = (np.dstack([np.ones((500, 500))*.4, np.ones((500, 500))*.4, -# np.ones((500, 500))*.8]) * 255).astype('uint8') -# white_back = (np.dstack([np.ones((500, 500))*.4, np.ones((500, 500))*.8, -# np.ones((500, 500))*.4]) * 255).astype('uint8') -# -# imgb = Image.fromarray(black_back) -# imgb.save('own_illustrations/b.png') -# imgb = Image.fromarray(white_back) -# imgb.save('own_illustrations/w.png') -# -# print(black_pawn.shape) -# -# # if black_pawn.shape[0] > 500 or black_pawn.shape[1] > 0: -# # resize_ratio = 500 / max(black_pawn.shape[1], black_pawn.shape[0]) -# # print(resize_ratio) -# # new_size = (int(resize_ratio * black_pawn.shape[0]), int(resize_ratio * black_pawn.shape[1])) -# # print(new_size) -# # black_pawn.resize(new_size, Image.LANCZOS) -# -# max_size = np.max([black_pawn.shape[0], black_pawn.shape[1]]) -# -# #print(len(black_pawn[0])) -# -# plt.imshow(black_pawn) -# plt.show() -# # -# black_pawn_black_back = (np.dstack([np.ones((max_size, max_size))*.4, np.ones((max_size, max_size))*.4, -# np.ones((max_size, max_size))*.8]) * 255).astype('uint8') -# for i in range(max_size): -# for j in range(max_size): -# -# h_plus = - int((black_pawn.shape[0] - max_size) / 2) -# w_plus = - int((black_pawn.shape[1] - max_size) / 2) -# -# if h_plus <= i < h_plus + black_pawn.shape[0] and w_plus <= j < w_plus + black_pawn.shape[1]: -# if black_pawn[i-h_plus][j-w_plus][3] == 0: -# pass -# else: -# black_pawn_black_back[i][j] = (black_pawn[i-h_plus][j-w_plus][:3]) -# -# -# plt.imshow(black_pawn_black_back) -# plt.show() -# -# imgf = Image.fromarray(black_pawn_black_back).resize((500, 500)) -# imgf.save('own_illustrations/bw_Q.png') -# -# black_pawn_black_back = (np.dstack([np.ones((max_size, max_size))*.4, np.ones((max_size, max_size))*.8, -# np.ones((max_size, max_size))*.4]) * 255).astype('uint8') -# for i in range(max_size): -# for j in range(max_size): -# -# h_plus = - int((black_pawn.shape[0] - max_size) / 2) -# w_plus = - int((black_pawn.shape[1] - max_size) / 2) -# -# if h_plus <= i < h_plus + black_pawn.shape[0] and w_plus <= j < w_plus + black_pawn.shape[1]: -# if black_pawn[i-h_plus][j-w_plus][3] == 0: -# pass -# else: -# black_pawn_black_back[i][j] = (black_pawn[i-h_plus][j-w_plus][:3]) -# -# plt.imshow(black_pawn_black_back) -# plt.show() -# -# imgf = Image.fromarray(black_pawn_black_back).resize((500, 500)) -# imgf.save('own_illustrations/ww_Q.png') - -# -# for img_name in os.listdir('own_illustrations'): -# if img_name[0] == 'w': -# print('Treating: ', img_name) -# img = np.array(Image.open(os.path.join('own_illustrations', img_name))) -# for i in range(img.shape[0]): -# for j in range(img.shape[1]): -# if np.sum(img[i][j]==np.array([102, 204, 102])) == 3: -# img[i][j][0] = 51 -# img[i][j][1] = 153 -# img[i][j][2] = 51 -# Image.fromarray(img).save(('own_illustrations/' + 'down_'+img_name)) -# if img_name[0] == 'b': -# print('Treating: ', img_name) -# img = np.array(Image.open(os.path.join('own_illustrations', img_name))) -# for i in range(img.shape[0]): -# for j in range(img.shape[1]): -# if np.sum(img[i][j]==np.array([102, 102, 204])) == 3: -# img[i][j][0] = 51 -# img[i][j][1] = 51 -# img[i][j][2] = 153 -# Image.fromarray(img).save(('own_illustrations/' + 'down_'+img_name)) diff --git a/python/utils/profile_game.py b/python/utils/profile_game.py deleted file mode 100644 index 26223aa..0000000 --- a/python/utils/profile_game.py +++ /dev/null @@ -1,28 +0,0 @@ -import copy -import sys - -sys.path.append("../") - -import engine.engine as engine - -# import move -# import time -# import ai_player - -game = engine.Game(automatic_draw=False, ai=True) -print(game.board.one_hot_encode()) -print(game.board.to_fen()) -print(game.to_fen()) -validated_move, winner = game.move_from_coordinates(game.player1, 1, 4, 3, 4) -ai_move = game.player2.time_to_play(game.board) -game_is_on = game.move(ai_move, game.player2) - -from player.my_player import MyPlayer - -my_player = MyPlayer(white_side=False) -game = engine.Game(automatic_draw=False, ai=True) -validated_move, winner = game.move_from_coordinates(game.player1, 1, 4, 3, 4) -ai_move = my_player.time_to_play(game.board) -game_is_on = game.move(ai_move, game.player2) -score = my_player._score_board(game.board) -print(my_player.model.summary()) diff --git a/python/utils/profiling.png b/python/utils/profiling.png deleted file mode 100644 index 58434c678c6e75f53732b66e2c8e2eaa9e0d13f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509497 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

    |rECxd478=2zq03_G>Vsr%lr+%|_O<0u z-o3H~u7N_MbiOID-OpMU;^!i`YlSO@mAu@F3AIa2#8Y5emWa8A^MrpFnMs)!qW`t@ zEaax8;om}2ZXfMw&}3g!U>=6RMQbPOB(WZREj4Jh>O9b%eEhnya(W9fSn#~n&GC`B zS@I}NI*_drji2EwCOdk#qj&sSpl6PpuE?68l1+96(k;*?Gh+Z-B9}bX`o}$V092ln z0kpH)(3_eJ%xp5&U#LO=AwjG?+^
  2. ZcEow|nCUa{Ki}`;Z(&=Y5x>(ajFlBtAG= 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ðPT;GeBF$; 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

    rRZPgZ8p7t=HxQFD1Lr`w6sh?1x6x5S{cIh8-iD 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

    m=Wxui6xd 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�A@^oiIpIrNCol7D*Ql9K9Ar{MoUp5Ab|Aq)3j0e#fsz==A}GDiwI zDLF*#)d%&7ikI^|QrO)-JIHfj@ao{C1k#VxhEPF*E^h&Z#g4Bg*)vxC(6lxoCk-@H zCc96JcBqY>5wI%U{W~Ms2On%Regx3%s^$ukX^bnJWgA2@pBL`xV?^kAqnCW(w1r;c zQ))^yE`=RyU3tA&G_<}KxRvGi(8x6y*_G5njR?A@l!(}P^cbFzjkuH;Vw?eRN=a5Y zgEJ#PAie)2T%XOqy_}6>E4`s88LRuDj?x#4&V8&hHZrK&Q8r7@(9Mq5Ts<4Tr@9C> z?WF2jC`C(@sxC*?1BSc}`DJ7%DljS`48$B*>1Y1uq%FAxDIa{&4DLUnM;?>^R#ob? zJI$k(bMG~FH34Hr$({}jsy}&nI^+zJcDr&q@OCQ4S8J<-* zza(NMRCj;){O5S<%(6V1Q10OY@dKpn0l?31svm6jCiZ zm|hkov&vH{4XjI`Jx$XK=PUFhISBh5S zUVlqmSw1s}${SOS`_H~v@Hi7~UEj?gdg22LW0Iz|hA>|cZ2}#^4m0DGgH8-XaW3sO z%|u~n6}i5L2G%cpfcvVHEvPexZ(n*_0pgS33`6VixZGkmn0`6b;K9YBdgmNws~pFa zLQHNX7jECaio|7}LH#>bI~v6uQ2r@Jl{QSizbj0PkRdOewb z*O2o=DOkcFm4|Z?!Tq zx;k(AwEsTN!RDm=0zNu)DUitdJoC1vMCWgWkaj**3&D3pX^lPzA|LqUQcEp5p9}4_ z{R$&+3(%aAC`ja5$$G&vdQ+g(0w;~0joHe0?i$;TEUVTV5$hKQXzj@9hjeGU@3vB$ zu};leEx%@6H7Rq&VDomq4{!d8Vo%g8{rxQ@32RDma8En}+=;0Pc&z`Myf4~w_aC)m zk_ma2XfnphKx6#`ezdyc?FUG2}ERNhYJpfdG z6lgE@e1Hlg~nh7LPnUX_t#U2f9;}wnTU>ZW@~o z13ZVJ{4a%DmbR{~(&OoolT z1yw5!8lEI^p#UXVwt(an8Z+QPy~M<6`mgi5(f9nJnfsN7yM10zb6QW}hzJoC)MV$) zGD&v?q7K6S-%Qe-odREM2efpe+;)tZ6W0_{wMRdK`57wd7rg$lFd!os{~x+jn$}g~ z!J&Ro=(E{2Kk-&J?)U&QSh0F`5MQ$T>DSw}J|akbRmP!27LJnqJA@x8COXY{ZfsR^ zenOS^UT=mpT<%?Qf!pySfqv)S58a(5gCK(bWANhIul&`69UUA)+8T!S`qn=#g%w4i z(Uh`wK~~&M&u;=~TyTpp-aS`5H`6zZkq>XR&t>OLG}_GjUoSwk2F2LVaacuw;r#$fRrtbx;2xPA~j*9%}SN82x$+7cvYqWBk9atG3^(HRrb>tt{gm)}~I2KvqFhCtv35 zZhJT2b+d{8TPhKuP}0i9U{=J+SUQX4)O(hd3kGvDVetf>6?gv8PHMrW8+S)S{d>iE zb1cunBC!^SEDvP%3q_a%-zVaL3f4BVvjZs#aH=)PFbd-QAJ%IEDpK@{Lm%)P}=JTc3S7Q zE<9;Y5rYlRJM#I=-R;h+D~A{Q?riDwMd0O>Tu;E#kzp(HuR{U%)u0E!K>6usl7G-g ze{ByKkG)$1&M;QoTJWStMCIFpJR0=`Tfh=U{|0cJTL~#FW2VpOIzc0g3 zo~>C+us#4*B;JQ&kv+xNU2$j~y`WFrQ1EqI)zsXAu{o((O5v$h^k|fkd0ajw4&FHO zyBga#I-f(-4nn$Zq?wyf>#^5AiIZkc>3OO5k zhZg<%Lc(b%0^!fqc)R`gkuK$O`+CH-x$%=H31xaI9Ju!i%3s)+l1-GGbkvkTQqq0O zUWguwrj^bb%Pyj&z+b9JiM82&4@ga0ieaPSs_JpPmeSLTtW?X21*TNh22SR?t;m>C z^(>-QM25-x@$QD+2WR3eJhA`$S#3QSM7oVXfv$d;62mknKVkLQ6d3rg*jbYVfQwzR znoF@}u)PZ-#6-2qrbu(!c_6KYJMxt#g=Kw?VUOwOd?_G;^hk+UH zFms->_p|pt_Y_4+cZJ&$Ck^X!jSv{j1|O0#rxMvj;|#odjdb$-R|wK)4`dQGBJ}z- zNn$aKV02mV>JY!dJaRW9WnWOSpff!>!#r?JWM>PKCbJ@D3@%Z8S-ip4XD{+1#5`_$ zT#-cWqP_k;KN6DZvwfWEd6gWaBf9#JuBg4R79eVaJ*OeLLb#= zB2`R)#{A)#g+eHO%pW(hU}i}z28>{&&#AP-Z=NGXeaF>GDj0n8#uNwXWrFQXS!7z} zppqfrPu1D9uoF+bR(QjwC9TVePRd9qjP#oFQvnNsg~EHj!V4dgCp!qgnsqyeH$l}8 z(Ek_OXnH{p{V}Il&>vzu$z@o;`;^;#u}}>%m}LpA?KG}jyfEkblTfk8kuSIxG?iNU?=--#X;ags;ZE zPpN!p{jNgd-J}mY2>#=7Ywy`sp=J16htD>X}p3hz+j*? z1MV$envgPLPkqtiFccfu#%Md4JMF@&_8#DZDMkX;*se{ z_M?8h7+#6mtYZE3+@x8u{~mg2)m@INsam@~>DPxuqQ)eKgw4MeuTr$&r^v>f0o% z%0=Dx_Ucn!CDRvZ3J5=OaI~gjY;&LaXAeBDf-braEcXuBAZ2FX;9J9DDTnmmPj$c2k&k%M~d% zOsLQ(CWmTQ%5<#I#=hz1qK!6NvZn?o%VDew(#D$yb1_B{3NN4bf|K*Gzx}}?V^p|l znC5$hq^zM%r1lC`R%>vFg-lslCQJ@ZOUq}UY1dGV2$j94Wcb4$%~$M2=K&E7^Vm_( zN(xe@-+gR~DkrRy60~lmaUDmU$5M7*&J#S3Es#axe#kxYM?l6 z=u2q~+8aB!zgu_`cOEMjwc=grP?wz;8?fp}Pwv*(KO$lv>-6$Px!NktXFz!PS$u`1b z^-lUYefIteVuq!hY{d_%iJGraiI`KRf#ubpYr$gv)|nEu6J}yRo-Eb!9d0wop9}sl z8S2&}^BwV$)s&%7iwnNiQtLOG@1%z5%jlW+M%9}zZ2Dg~<*2C=k=IF!so2oJhwMUh*R`-eqy?kdRg%;J_6bj8QqAokf&FXD$xfZx*QK;Uscj1LA!Sy&b{ zYP_^t2>7xcp;^f;Dq&Kvuy(#{d*=~(jLxPhws43vj%5Ss(Sm9d_1R=an_4*MP^M*e z@ww+DhuQ9BSfQ0#T%?gLTc(w3Fp~<#H%>{!8?LsBv)6`fqyDusy75{%;Bu{&Dq3B? zrF}PRZCVhuT`B=9#_#5ejUri3QIP&8yW#qI#DG{?i>scT%ur@pQ}_buUFF2Nxg9T# zQM{QZQC5KD;{Knb?@U#*`{LlQZav|cQi%a^%<;6l;w799J~B7?3~*#OWjcF1(s}I9 zhIIBj8&%lz4mZaJ%;cm#Xv2TOlqpJbMTx_o$~V-A!m9FU(^c1lfCs`lsyRDyM-#{0 zXNT-ITnH$LfFT(AvXXZc`|$zRkqLANm;p!I53$CN7lBIrZ9HE&F9{HPw{-)sWrSmm zCynpjvIvh#9dv1osQ|PQK(YMbvp>Yt1X`N2iQ2VIpHOdu$>2W?>s$vDlZ)$g&Yr=+ zqj*^iWXV!0vn(HI1g*!!@Aa(Em!9E$J1ZWG2mG@X17<{OD%!8iJX=avAWUxp_TzfQ zPglfvRcJ4hJI>nQjvt$`$D4DDEYd3w5XlzkT`;G+-czT&TqE|l(M>ocjR3|!F!*cd zSZ_t13gC+f^A_YB+1`>5)M1&ud}(zInVC&d?I8H?fAv*vBV22ICM@;7a=Ktjp*Do8 zaKeEQjr-kf(e%dj70^^-|SejO1?2Cj#_cmlkxb3OB=~+y*en2s$dahh>5M?;nMy0hc=`Nm#*iV zts@!>`MgrhC+>c}H%dM7>iQOZcnmEnl%x2vT7}Me^c6|H%4^LEl)m&o71nSS2!aV@ z2tYU13ktvDUM)SZ8Bj}jWyjr2+YD~4B4%yo{;QDwu8?nL+wmr2=`g0w@=H#Zni>%s zL)WL*uw4Gs=Zay4S&14%N~kU$rA>$2q!b3rckf;7(##;;2z#x#1OXiyYn7ncZL^h( z1aD37k4HFVpKAY(&gE*?&`>h>u?IcqG_WMV?@+u!Ni43$l)EX8i5H?rB`WdF2sGv3 ze$s&iS)Fq5IJy6_n<>oM$rrPY&PVP@9>*Ub@_oXlwq?{$Tu~gP#zsmM!`S5bX@r94 z1=_V=TC$_rA~A4l*0tk{G}bi5?Nn+vU1Wp+?;jqy`;^Zv3Z%8{wtI;5^6=>P$3g1k z!eeyP@*eJ@8T$&Q$}Nf|+6oowL~0GjRt0TMz~#)*zhi4$hnSmI{odzlk{4`5I6P!HTIxR( zccH1a7F^Zmw;c1t(G`h9WkgtLNNL69Zh$4JbGmD+Fwh|0*c&@B*D@IBCKA)X>9CK$cd zz1lTH#&4UR%0VMU3O_m2mDt#W|e#H`OF_DzZhkpofUGG0A&-3KWY{6`a`XV z)Zm?Tj5g~xBZO^}@Xz*d6q$Sfu4xsL`@`4h8L?CN1c?~lt1D45g)ZAGYfNYslT2u6 zHBwLn$JP`)`%D*Nxx3-=nN6cKQGhEJ8v&De&sfBxHdM4vjA{L~ zB8$}v&Zc)tWPFy6LHnX$erW-!AQG;JJ*`_n&N?!nAkdv2er3n~H^r%}mSWd+z54le z6GtsQkrqS8%;YyCBXwqvBA>0bpJ^t~(tsMniOzf@H2rH*iIQEFBc(^pmAN9SLWns! ztRf3I6lU$pa!>r^iMA_X-WAp2_MNKGRyi&rwwZp6F2@2r`=wXR?)fJB1f?b8c(fdw z7)t2-k80zwHRLStzG3-x)e%yR-$B2t`Ulil8<;Nl;H1Nm&X7I~yc?iJe*J3P3#Y4E zBSd+Nc$}56*t_+$R`H8gn11Q>UR5iVvc_9t8~~;q_2-%t$|=wd+S&RKKQh=a_Cu*C z2lixln|{MXC?qO<$k$vA^UH11UB``ql*#9^rZR0YKZ)kuhqU5#L7|*v*NdMef;t9KUj{Ov9~+I;bhC z(CM}F&?Rxc$_sB4S&h0_wrhj%*ox$a`ZDH>d2At#Qo{EcpK~4L7^2PilsA8;+8tl7 zxcejdaqiq37|b4bFxvc`dbw$)Z(`uLx4LYtMu(4dgSL3^|+0#*& zpDHwhzA4G~;$9%^Ds4<3H2-^3FQPKb&ODZ zVs&7q;cZhd(i%g3@yB`VRb|lLct&XRuzPT%gSJ_KXNr7${MmVntKZ@cF4I+bnNLsZV+=;1)iB{sjNkv5dKOD=d=KH2o>HXZ4 zeA5;pBg*-0!iF%EyD>{XS#tCO3HV&QxvUBn3JKqLlo=8Ay$4H^%Gqji#$yI&&@0rw zQ)Y-KT%+F&KiAY`z}YX5Y`RrgY^^D{S&FA*wnk}{K89EzPsYTN8zF?EA_Uzzh zJwQ2x6bJa+mFQB?T-@TMSDG!$m=%P3!6AYGgvFhEEYZi?^-hQ?+?~bkHmgtyC=izt zCVbCDyRJBj6EuciDUib|`(9whn09_BNMqKd)BW&`Sn8cZx=vAU!Wr2MqSWX5VTBcH ze~28kO21XiWl5>?{?Nh_(eKrE1-6>dA2!{`jW;U%p8iLZLUy7JS)59Cw5URes83SM zQH{q&5A!QqMXSGhy}tTaiaHJrg}_8_hE<%FP=QTz>bFY~hS&H9XLtpca&7hj4zvB9 zv$|v#Dc_8Z+0mZKhsQt~bNjgT8@JS5rxJ7Z5kP4)U!94*n>`+_oNm{G6j(PhAWK$K zpz*yG*>xOHpz~B2lGZ}Z9LHJi>6UbE<`-?FvT5qGv3Y6Q+nygUG@@;f85Zfmb#-m( z)GmC$9mNid2lsxzH_x{<$~VZ$HpoZ^xw#St>ewlLed(g(tg=f;{x~#(_Z|1D`7Y>sZ&pQGkO_&>L19p?0QjSo=K{TJ zjOzON{SOihrS)EJQ_?A$??JzSnRyu#xwSSM&|S=Z`VEQ6-GGiM=g-+Q;X|%CI)0J; z{^vR|Sj3Jf%39pj=Z)i&KmM61)$4No;j!an$r$>6YTAtdYGfP7%`m0x+f(1-F}>P@ za<>`*>sNgo8Mq$f1@>@*bk@UU2--|4X**K^-SsA_!)`NZ#U&B3MI|Br8+z}Ve~jSz zubKqBHt??&p@!nX0-)V--O!hA3#P|1jlIjOuLcILLB?X7+!D0C@t?h2%5!vCdRKm? z&_d(FcJ4dR@f)*LNoD`;9~xPdtk@6^ za4SfYXGKj88Zkviwgq*lFiERRYE4BNQ8Mk2rK-HVDA7`8$exgVBG$CD*`wc(GGn7t zr^v`z*S@mFI*@;PyMa^x8K=$0jGRnKqg0b`qJg}xJ;-twC>@5y_w#1XtP0PPo2CB7 z9FMx2`%P06bO3iM>i^hy%-VXS3;686S5E~1i@xjf0mZ2ZW0KkUdBgJlHR+aFMgkGB zSw@Vf_(*Ai+N9>k3ONN{W=jBya;q)y3mWz4(XEG$y}9zZ7W=T1Ti6 z5y~#F>`WQ`IQJE3X2XGnw9vt{=StHOv%CLeHCzs6?dwP!q!%GW8tz5=% zZJ1!hC^FLI0(kv}TW(*ONy9Yl&U*;etDi2r_M)umeO!}+E;ECPlm4h$LwIfBxX;K3Dl1#!5}O z4UxEl-HKrY*deDv{mLwGel#)f{cY$RbmQ94A+*Mx9@FmuJ`UHAxS+bHj(=%J^Z%&Z zU%AVc|4`y@r$ph_A?T6oaU(xxX~uEkQUtt=S0&`nx?kOvdH4j1(g!*~30(FV*^I+c zDzxyRROe^IW{_*huoYbzKZ2fC}~XUma5XIASb!iQoX)C#K8p;>aSELmOUt zSkk3z=>_Ksdf58zx>IUJ74>@k_E-oqoNgC(+*)S`-{@*|Ozm8gnhV zVl$>zBh6kcI9pRm^2(cwsQ(<-<)q}q3h-UK(S6iIps8Thsmu`;OI7jQmR0wg@~0Xw z`<9G$$dW2*IZ!y6J*NJ4yNR-K*|rJjZWs|u8Y?IM#Kw5bS1msU{XN2WZ6UXCdv@P@ z!fkT={jak*V3t+) z8gGL}KyNCyz4r0$#i8&;iCf`3D=GoX))>ujo??N z4+rb2F5_aU0eG_ijpj&ysmsyOm-=hTD2miE{p`zU9lN@{{7@q$lqAw>o5fnb z4gd+qSM1)+F)6gW3Fj~rbUML5eu)?uL?ZYx~7#>#jUt6*%tWn0kq z^w7W|ciZy#8D{03IqS(_7-;c{c=vaH$@?WHJ2YPn_@Px@vpbP z$RoxF+@?nk$<6~`-w1H9N1<>eEHWqr+wKXf#Mhgzeyws^8rwrX?(cVqJy`K;8|HDZ zQqQfMh|9GB-XvEz`_@+0$T%b;8^q&UJ=RcK0({3U0qaGC7@eqTy+T9BdYb1Q!01i(kl*KT|>pa^x_`+g6w@TCve^7bCW# z2K&L`GUYaFUnl4C&0)=&#HEVF#cPLscn~{omS)n~MfN8u%x1)-SxJqArG=OLonk?$ z+1WH+P{r9W9}o}P#MN`uJpH?wOVmLi!Phn!wkJNP3%@P7W3ihYlc(RkkS%Hx_3y}= zcn44{K>sUIsk8ZJyI1p&0}QFi`!yVpS7HPW^|p1u<@#L=%_DK=ZCe5$_L^Y=QdzSO zEO4q_R*}wszuLF*u&Sve6_G;v4G^u`2_ZK@*<0)jN2=P!Egi+i#^PQ6`_$fEIo5d{ zzafE(_xIG%|KWxO?84CGkyUu*|FQt2e~eD0g7fdb_uhr>gs6zTsXQKqhD7JW{bAlY z(5ofehdv2^cWA_$&^hGFT>YPCq9uL1`qgdttm9#Nt;#~QT9F-nVi%p3voXZ$0g5t# zmr;nCmKC32?SPJAc>0QJaImz)n1>h?blzh8)TiVKa`)5RPt4vtffKRAY#lXZVN7o^ zv0Hbr%+bAPes)z)#~am@N(?Pc}NDYsEwI^7-u zfLyMve|7j0DiT<*HE}t0k%s1+7QOylOABcJ5bi!eMW|1$;QLh>o3G*fLbQ&JJS_ROreAngTa!*Ab_*f)?iZZ|tU^Y;V zejJMB6l=V3%Yjkk@{Q*NvysFg`FCs03mu0ZJ$}o(a}4qOy-A9c0+B@vH3=;+qBPGT zVa&f~8F54$vd;e8e<7qtF;lhzD|wL_2FwMHl7?I(RF_jcd1f8@NW zNFoom*5^{RdlaP>^U*4?hZuH(Fcz zYQYMa~Y!mFtv8Nu0k6DS*x#m#=JF;Mh)O~HM4C>#;!u}?nb_6bGeYS3ouh;YppW- z?+y$Tax?>SR7x_oZxy%ur}dg2*Mr)~@Ex8S(;XvEABcU8D(QQGe}{#+Jr*C`JU5Ni zhfm&d@Q{mp^<-7TivoJb`k2b;w~G330SyQVb-uOX{s!Ueg{-vhD}&tTefAyb zZ1QMQiTq9o59%<&j{t5*xg&Ez>b=*Zrcn8z?!YePAVJu-UEA>T_Tz7{G z0lu|zE_dWwX-N_F43pMlz)W%+khJyD&b2v=LHBXJSK9j4z@9j$SV33<7&L@q# zG%vTCZ?glH_7Y2I=1IetYtEhHT-*`=dXSDutDP(c`mgbK{F%9v2ers;EcA`R&zdgu zwL12|of?^TfQm@im4vE^F;2*ch5zti$S_3d8@#|5e05x@14+RAX1&OLk)aNO@ABNrGw{zpZB&4mh6H;C zK1iXb25TOUsiw=WvMCUpyWfc@qI`9_qQ4i@XvOag<@*isqEl!V@=pJPt`zZNDyiEI zdkSAk_60AulKczaBx%;q-UFko)-PhoWnweYNx7Lwf8+An#qxZmGUE~%jO3nd%hkHQ z74a0nTEpdRG}>@j=d-3L6`B> z(a7g4Aa;1Rrr6N2Yd5`LO(Dzu1l>dG9&B>*tpy@X19N4ga~W|-%Wa@iq4>rEXMnG8 zi_Dr>m5hxv3O6(;=XrZX&$lqn*3L#1QY37bl=JfGnmGKmvf)M&G;?+C-o3T|Rm`R_ zz~kN@9+TZ_Ow>30<_lKi`OTSTob|X0q9l9S>*7;u&FUO+YO-wKkUH1}`>QK<8vN<_ z72(9@Qc5akrK3V`&%gLwN~v+7a4O2CQ5aw^fQJFxo8EIi^r5PK_2($`Zw0j!=|mX> zpfkB1&35$8yP{Jc5s>I61?^ep1;&!3uAgqvvV?{@b&gn5gFqF91qa!d%!UO^G18eb z0HaH!hl}T~zxL5w{C?N^x&U&I480WrSy))O)&@Nl1qe?#pK{5@dgJXK#?7X{4A zb>w*A-PPaHNlWQS!zrf-|7%H(3FEAav*m>4fyZ0Vad<08Z1PFo0-o|TtOq(z!bk*N z+(I+$-R1bbtE&I|@za6d>NwAz?df54J>7u9Y@^{SMm~x=YL#u(Ak(-tVe=hAQSF2@ zeqqbE=q5aowK&C>3NS8Rz8^}t1{^Vt*|xg9lVntlzDY@+hPnYlw*0cU@O5n2w4a?5 zc}}@|&l^C>Q8upR_kP%Hu}n&p4NoetC@ttP>-zQfvu)`35cotg(`@3~U!3z-FVN=2 zz=_s5{TJO~Mi$3%p|x_9)04Z+a+ECsTLbS3%j5_kH}^OWBC_1-jc+RS-cM5!y^AQc zKtg2*qTfxVcU&9Xe~7K12Mhf6($GBaKR)=a23z|{!D#DD$fn|Gpgi8F<<`hb)868rEl`~wchn>OG(PCze(Z40N|4~`5y{m#=}jM>!h91R5p#Dc5A8P&*diK; z$A$k1G0*XGj`hV&yA?C2lh-YYe^SCj^j| zfr=Q1I_Gi*>@si|8hvY|cTOL+%oO|w0F0}N=$c~XuIc&;leXw= zz|nq%uchj5-r7cX7$Go&F#sBW&o{VI2HAa1OTsY%^x!|+zgQK;!EnplYz4($%m#FP zuXq8lJI?R7@nLJp_k(`KrC<9OU0c|SlY#l6Pp=Nx&HSab9}FSZd%8|{w*kFlKK9v$ zZPyJj-im#1OBQ=@TB<2R1%!zYiPe;;#X4@%a4my+wmB9F$;Y-EnyPNd35$EW$tpt zSJk05UNN#Q%zv$;xpXB0xVfkPt$exH96HAe=m7`rB%EWs{8sQRP)ouS=&jt9=$r!) zgGikJrwaVf&@rO54u1i>4l~&4-50xeamxVo2Z;Pa$W%-dPiM`>aIm?hLv)_&5H~K; zHaV^d5^p-Ob@A~6=4DscGeSZ#C7A&*8{jBd?omX`dIcoLJN9jkV9l1zOwP$SHr+HY zZx4qXhRE0 zz4vnJNvBCK2t{s?=CNz> z`nL|}3GeaEbB!qun)@Ca#&|*_FK`;~w$)XU!~;2JUVgDQ{B1hB5!fYIURC8}P-cAt zJ|7T>WtPB7g#7|F#1{|G!Nz|aFC(*@_uV0n*!tOKtV!j za`Kb^U^|g<8ug?U%WVl^Y2~gbCYd1+42zq?M8JVBFF)Tt@qAnto#N$4ulQ-uv**#6ego=HzWkr8^ z1Fw>CEwB4>hphyl0)?YveRaedXmUPq3p8~Yw6Z80G+~Iyo7cZZ^L#cn^8GeKgb4dT zy`dK#>}K4ww+fN*<23PEI9#rI@|JcE(INNK2++Eql-8@*qYQS9frFzS;rKAy-HvhQXWajY5?Ee~7&P~xIhZzCF``P} z$?x!ad0|8~Yh*Po&jm=J0A9b7kl}5K)8~GxSSN?Dm3%NJm?XL| zR7vg-!S$Yo$OSEdl4`v{wSCZ2%)=NOK^Hp5=zGyS3RE-g5u@+B42aGEL$6W2PQE;1 zuetZ=<|G2zy|{8|hfB={SA^b?5Woq|Xyz*iG!Lf1QJcwexx~Pv;ThY}`q%(GGjxs& zcmM!ty)}Toe9@}fu~MRU;Y=Y8$dW!Caf`Xeu3`qW051zQZQt`?Q!Gs!PadZL3eRt4 zN5vX|Frl+wT!2k3y#nY7O+-eKg&Eg&F<})0fX|ARzLgm$jDtF3AQ9(Og})AfV6x+< zdiIaYgK|UsWMnKZ8=VDi0dEaEXU+VO6qfV|R0o&36eEsgp5! zd;M1qeAS^9!ewNoBGAwZV)b{o{f*kvT8>1UTj{e31TRr_Foj7bC5^YA<<3ln9>#=r z$##!fCet@p*R_Gk_Y^r<(t9W%rA?&!Q?GJ^4v@^ZNF%CyfOaT0(_Cqbamv>9E4TSU zQ$M?hPDW_^U%$MmIE|bNiJsk?a=wLaV|o?sz!AftiD61s(ZQr{?s#JA4Vwqjf#@e@ zSnCTV$yPnhH!`@zDfKIPuhKB&juNO{tni@Yeuncy53_|>^v+_04mLL@=-Fo%IHAj) zkw`zhUE2=ROA1RxwBRNwDhj?syMw_SgUB>0WqVYm0D2ntVag5f8Zlfb{QGYq%`b@x|$9m8FE`` z5`cr#;?Xg-IjjXdJx5HWXIuPH6qq(T^E;_O5jlSp0)!OY*mOV<5pw=zy7nc+5k?kd zQcAJ8$P7#mwcY?8j*Pv_sBH4O{+P<7YG?^006G_daINKP9?JIVh zj`0c`Sp3Kt;M;Iq4QODa8veNMV{X1kcz)gvgq)lW6RaAZLQ52mTq&{+d;Cdc=}NYNerXxV(;5bKpO*?qhmIZAR2om9l30g zMHYbYgbf0kc>47O%{^VfKBP0ht826`yzdfR+Zi~2t|ui1pTQ-dAFa( z5BGOI%vj)r9L7R{n`f!}RS?4{1Sa?v0Ns7y;+b*VYpHM@4&#=1QE1HQj@z3&?=6;N z|KojRUEPx#(Kocc+71_U@%mH<+5ry$-kUXsd~2m61Cko}ff);=-K)1avoG7Hi!54eOi6H}`}mx7*s|vO&fhR$3oxen9z*+t{rBAGNXE^QDs_-4xjXv}LHWnW#t=28L_jJg?Q^SNxC=faU}T_vhe zXw5kf$g;lJZkuv_KOw5_2El3hQEBUF^TVp3e7eCA(6r6n9WSyD*RD&{U1qC}{*dFXTFx*< zs#Okr{7SlVH$aOg-Vh-j5aZ--_WL*8t`63D^*c~oQ;Xgeh;H~2Q&#;dZQ$6@lWL&O z>ux$l^kHvkrJXC*`yp&UM@XQDN#cTU9O{+J9Lvp~D^DZztFDMn^z1|sCG`$B5Pi+b z?6YtL6S|~ie#O}M1xnF> zT;gdf)MOk-{g4KR%-G*ox>2Wfldb#gY(F!yJX%~B;vW1D_tTsGilg^$ByZH-3G1!> z3+?HO;z3Zl33~k)`9nosU8j_bQZg2l6o(GWs>THf@9cK=2s>Y9F39Dmc>f7?+x`Ih zsO2fN;A37_&@-7-(IOdHG*<6$^cS(%#Dkv+tQI+mQG!xGI_X37E4_c}A$QWKRTdZg zvTBIa2f40xQ#Mw}7bS(?P{i?%%2`hzGQZdj2rQ>~*hfPG;oOQ6ORm|PlW-Q;hSpCsGW z9$Za_?XJr}yzXdn_aZGSPQ?2RNma~W*6hEm(404uYB$9SQs8y^@b+WEBXa)L^SfVo z=hg<&OO`~kwDHATo{)O%T$;O;6u*=4&i;gsYpwrWt?a5-S9OP;PTuo&i_1GeCTXQX zF9%fJoDWc7`!U$ydG*XIK%TS%cV6W6%=$V(r+)&)s((EtaW4$=nPT;sS~urUuhj%v zjdQT3bmZvVUL6%g_(&%Huo-^XpwSDE;l;uK$~HM8AE;Vz1Xgfl*8X~{IG_|yUp%#n z%l5MufInQbKjj3Yq|_i{o?jj`n)t=BBv>8*FesO|vtsk&V)(Fn4-V(;Yh+-+D2+C2 z+OO0POCx-C5ibWYfgH_OHo%Z6^%e5^wYrKvKuS?ZM$yP!?|a9fPJl0K8+t4k3#y^m z%|0A!^AagvHw)0nV09`N6_Vo&c;}M1h3QbxYlu)@-oPVaW(gm z@!u*FVrqS!BL!OJpukwl%qb}NxoEoaspo|cr?1M9Ue>;cE16|(bA`X^Egj%{5*CzwVYgvY0uH# z`NuCnYuWjbG@+i|6M>c?_%CtjU>UaVA|&6Ev);8{WM89E?PJg^IB<;x_q%2#xrVDs z^i01^S7AChM30SIP*TC=@-FLM9YV%c5%e5=gkBo}3h;2(X&jZqCh$2mxR=yS10U?T zm_&~?^!yo?Q!C!QQ-oK5WDdP%4rRO}H@|^}+mFGWAEP^J_ybL(Pdet=l3VH9R5l<+ zrQfvajXYf;-?;EGu(ow-O5@#F&gID>5S#v?=BQrn^YcC%R*F#+>9_I=%mxTPeC|N# z%E)EcPjP^Y2XITey6&3%O}+p!io1L~Hk>K&j_&TJ_7Nxlen}|cLgxVpe-FTJ+j|_} zRWV74*Da?}mvyMSyu4iTINNxhf44F9e^xT_u|MbCwDIy?m-(>|N&CY^;^GP(DZccQ zlGdx_3vp7lrPG!3)(G!?=nZr2;|v`oWy-(cm!82FDjQ3CKuP7AbC*DPc9??1XfHd9 z@gs{jgbdDQlIic#AJ6D%Zs!s%x5OT3QcyimHCbIYv81wZ!Z85E+NXUT~|F2ouf%4&Eyv zmq%w%tHGG*(PUJv6e%F0S$K2~jVR>;#P&Mus5r~0kc&});H%Sj=9CEl?RNX>fFm{z zk)Y2b7fPyVs!P0?DNXNCawK!>O5Euvei*!WnHgpl%4tNfAJgMqXwwNRTH(@S2dpo> zlHiKewuz44ae}b5!`P4#_L>xq{Ze{N43TsUVNQZ3(DPg3b$^AWg{Iog{uk+VUfh~q z+@ZrszX5paQ!D6*3UP9mweHR`nfxf@55S!7X{WC%;?tz!BEMCgfWaAuODi~f>cUz` zD=>U}uT&7`6U5bWT^Gn;IO@U|7;D}~D5~ofi5`RJ+U^ysZtg%LhkMxE_x@gmYECqCM2i zG`kf4ZWvcN&4db#Hrl%vGBYZ)p8itLmO&q0a#hXr#nl#c`w{Dy-FCI?khiWYx~Fuq zGZdwju2X5m>E^Y%CYt{U8h5?^80WK${yKfwWhc*t^HMi+hpjpfyG_ojE=)r~Cik{j&jl!9?K5cZIpNeg|Y$&169=?L!1|8HE%2dUZn{xcUv(*bzecrstF|S#(D6Hs+K;O)R3O-B zVM-Eb)a!g|mUXrbMC~3-NXY^=bvo0>{U5v^cJ&{4AGiEr15t!+4Ue2oqa8N^2dAFv zM*ffC#|=hvs)d1OMIL)dhmCK7Tz*`QRcgA7jJ|uyT|A9!cIrUNm2<|cDG5XI$Kv#V z=>eDlw~$+2pe20sB3t54a_KXX>?&mCqT`MRdP?HAfg-_7^MfH&HzgD)teJPo=_iOA zt$D)nBfVPWp=;YXB!>G}oRbFNqWL`Bjpwgk)Jk+7^f*H|^>N|)(2GZf5mk);amkn2 z^tV<(4mYu3{HcdE{O65~HBF2)-DvKIg~i^@)w$c5R$R(0zF4TqQx~%vwP|k75KlwZ z2WE3v{BDu$k3$QDpfmT~x3;nk^6j6z)&swk7U1=qrUa$XOU?3P<8F{uZIF?1@TiS} zPrk^^e~!J_9JIJp{rf+qhDZe;O`~_>nL6N0D-nk4L=~}^a>)We4VzWqf4Qry^6e`smr%qIWcP_s~ciA|-0{DG$wfpZNw z+wyjk_s;GS&h&+?!9fl*9qw!D8{tF$UaG+SP$v`51dUuq7Va>|HD&Kkp@ zTdb~uL$kyWXq*eWspFH;?dA`0?W;Nu>$nLg{MDi#1L#cK0lM2p_E(=%x;aU5)sQ7c z-M8zfK>JbG${k>;jpwxfF5fP>;taf`e>W>LZbK<1+)alU2OsQNSEAejRcQlR&-J_z z%OfFOBiCH!=*%n+@9W8DoW^?pI3--8(>dAyweH%}X=#yCupSQ2<*(~fO7Pe3omn;X z45t%6|(D!0l~f=dng>4I>072|F%W-WX?PV$j|!eLnGW~b;n=OCy&gR_diMR z77uv9_E{wa15wW@fq{!rClatO@J}N@*u(ewF7Ot#8V3rUZ7-2nCs^YsV15Dk^>txu zM?B&V@cY2W=Z~wZdH;+b8U~&+>Af7z%M>)g%GMMqofu?Ci_Dj1$F8a!wVuALw4Kvt zffSz^L!152?l?RYiTeDmdW@e|9j;o!<>ehpN(4NdqF3RD(Hf}B!mn4&v^Yph4rG-WF z;2%j-_7Rb@-)&LKGGAoze@P>g zoMy4fl;W!nP9xK+Z%^i!q9mH$L;QfS#aBE(+{Rqs^x)*gcQblp1N}gx1bUoR{O5vg zD3Db8e_4QS=@60>0?tsfF^>fUT=LMN-zYXBl}<7`Zj7!eluyZz+K(7lm?^ z#`3kuk3(}}U&X}dfD#i_x>O7Qd5e=*;U7}Euev4=2{4$LW{Yq|fF}b`<*^2Y^aRIX ztR2Z+2Y)zX{oJ>+$4`2f0yl@@fnD&6+LS7Sa)WX3?R5M84m#QWU!5Q^YPdd`s~&le zK5Hyw;Vy0o$d&Nd=Y`%i85Sq6i*z0abgnNR9gkx5WNaHZkEN&@ZXq7vFtGdY;&}&N z@V60G73zOib@cQ!jzXbtQ_2~U-Gp1a*Mls<6aHJ&FnnlajzabzYsR| z-y@is-B&X7^u3)|CrTN%B%`P&qhjF!6c)F#!8zxo5OWn{6ogqI%afpMK8(QY$Onx7a73(N9ed;5?bUMR)5t!#5GktCvPS6`bs9ukNrarJNTBPL zl)H^u|71=H|0o>^mmjbmd})WGX_XTL;f@*1Z`rwlm4KsnZ))oRvh+LF<`&1i#+)$T z7lXp~g!G<*A$O}Z0ja=V0k25=N4HsopMqX7E}!FR@y#UW2e~Qqg;ap9>#4;mT|ByH zm=_?FuChKR3i%J;ChgoajBPGBT;a;Z#G+dyP6oFDUQ_qjbW>PoskszPS~Pi-J80LF zfC2+@IewK#11ze`L&Hpee?wfF9*(h?o0#MTY%BOVHhxa@<^&mF7gsh>$&Qz&BJ=I^ zml!>73!TH6a~NJ&V}xWHWpKuw8#2Avj_lt5F@!WdrZK^TvV657DbNoQ6q}2=u+=LT z$>oR;ISGBFf3ssiZvkv7u z0JQ4&(~%1=wKQTQ62JBMIkjnR6M5cnNV|b+)A(g%A)i9Yu^{?0!{E=zpZsvZePO+de zl1+{DzMIKS&uqa8f}h53c5+JB#pM4e;jFm)v0 zRpIMh;GHJeBGg@{DL3Q{dO%iLsQqUHsE1es-o3zYro}nxP!ie6tx|Adq!l z%HQvH|K*zJ>KsCV_a$WeT5PudPXGhw74_CF`omE(zmvbvqvq}Fi!@7;w)3H+AxfyI z$Dv$%HMBK~=eoNRkb|`A#MY53j@v+@w zOOrSjCVI5XJ-6Y89C3_$<9j`h?sc*n_dFQ?HARVrwq0orKgHeW&+1<+vrvn-v!rT; zD*r$wnR%$Mw)b)BwoN$2I(o2C>3Y}aU*EpxkuB))lio4*j-twzeFo|4E1j-zZaH&q z8M}Y?*g^Y6MyBY%35y!xYQYEY4)AD8y7ME%9S~8B=y@+C#s8IyQ*}&1dPLK8+vjSN zQ+x>0c`q7x)uYnsfp8~a5s#8yMo>aTJ&dKVdflAs$L0%ubquhpPOBIgG&XYZJ2`Au zR9Ym)0Wd<#7^RIRasSr9=Pmt;>*4MY(<%k*OKreAfksU3p0}wVc{H3{{y(n10;tXJ ziMA~TTD(AUDaGC0-QAty?yjYHvEmNJ-QAtw?(P=co%hk-`_G$sGntSHnI!Pt-93BG z*?TpjDBVkwUmrFf?}BVz(?#1HVBJgMK7Y~YNZJ1e%#<9F_<9OR>0T_-kW2!l3rF|m zA}&Am&ehEV5|Ot`zU#?9k)J45HdRW5h8&i_nEgJL*uNk0epdwu##kg6;R7%}J5M6* zANXy~I;mVnLk3J#1Ab=nTI8T^|88Rp*geKgJ5AF9m#qry0hh!)Co%!1ctbL}-|a4m zcs`$WPwCn!cPhVqdY7xf|HBuvdFJPmQD#nmUv#{J)~F?huYNMrqalNx!hmljU0eG3 zPV=cr0#D)x+^=6@xG8FJ;}-oiw)hLHG8Go&&A19?@M0-A&BIBXwU0jrP|Oj_Vh#w& zvJ}udC%QVao||G1+z}vGI+HxCsbo%P&$^E9V~-zV2N#E$O6JVtVd~HA%R9p#=UEvN zo;yB;fvPNyhUeRdg;v z(x*@;jE#+-C#SBgHdem=yyW3YaC3B7{mO?=`(lQ;!cFii^OJd8^kI>};Lrs*t&5y| zysUbmmxgB>yY{#)8S0Mh<2z`?>&yIv+sh6=>`wtz8K;gM@Nr-7l~lGBne+b?u|ukr zB9pnaS)xI(g!(>E?2#`KMUy{3bvZr?-aQ7fFXFBr)>PgM299F zQ7@aPkSN7r$pV2F`L&)BF=Zrp#2BL))2=!H^qQ2w7~7A(o3;I%hsEk}JsaO6am>dX zo>En5r>R7JqcziO4{O_{sSf!Q8BLy|(>{-S!CXwGT}|5UAW&GVVu`{^26 zo;-A3jBJ?u>lQ#4Ivo^GdI!z_DB0&eaQO(6GnobB(XQ9 zKKOHjSPljTj*%YSaED%E+shZIhi*7Hqd9m4fAPFY5d6gmBiI&g_eXs@%CM@=Zih9i zu}>YQe6fj)Nw#k%9rw$RCif4Hj{;YB0>EX#z>CO~Gh}oN6QMq-ImWJ{*xLvrH#{pFXU#O4g61u#mAxJ7hSJ-<+tc ztY~W`(ti{ax{VITC5mBpuw8AGD}3anxH=_IgeWu2T&S^lzG#D~w6iB=-f-A7ofoj2oXb>S;F z;WcS??Oe41?w4B0CDcqB8U@U(<9g|#B86%GMPsrYFA!P^eXYdZ{kR_Mh~pV*a(ULvDk!!?-EhFu=?HcY8P%4vn>=1p!B=J0ct&~se$44;VA%ID;cs^qro z6gDdrwyP9?$Ln;`U5sBgk1*k|;Gp2~A_E@WZ!wol7%-urMKLixF|x4%O<3Z~%a@yD z@QBPXJq8IEGQLf*9N9QF)AnA9ZSw^g8J(h>Uf02J_IQ#gf7|D@7Mm~M_u{F@wc}2FaTzQ$})PJ{$6+EV+%u4ro=fl1N=21R^)e-&24?w9SErIBp z%P@aT>MuD(&zLd)h7r8m^pA`j7J0prt#GDpIqNzHGh*J&gF5tmDa(hYtptYUByuv1kgGT37@)c1+ zi1My6gb9p8FOQe(Se|+Qh3O}uiUqj;!gSNKyfuAfkLBKy#GefXlb#r`y@h?B_~^^$ z&qw!b48Lm+_RA-cPanSnfC3Ia967QbCGcw`sU6zxhV#ykYRn3C_}JKa^{N861WHa* z)ol5lGfZtQUp@aDLcgm!!8`Y$>h|i@A0G?|;06q_V#Gs1MwuLr?lzqg-4j zpO6v{8InF0=0qAkeG2K3j}DQE4xx!Yk2qqOkft~oQ}>cE!lMYsj%z}SD|%Pk7cOxu zluN^x>m0r^X02EVYp=5B7(YNH*2ftl>Vks3BK5tA6MG$f3EJe-2q!vB095U4sD@^U zif*LJ+D{QxUlm^TxIXDXxJQwjO7e=3@aOVN<8_{!up@#b@${PpytJT3H-{vfq_LJ3 zx8b1_(b7h=aDleeAn$*7Kl`Re2*sU~lWLJ7m`FX*w0^vA%O{N4ns zq?FAmKmEW;gKY_6{M5>&?J>=KX(8}a`WOp6aeysy;Ic> z1I~8WD`^oCeT*=yH$6fSeNY^%-47z$>OI z`zOuA3n-*;Z~-9bIm~d47Hdjj8rWWIN@6^0Vm!)tu4f`{6oSz-fy{5bYeL>H3($%p z+2VnLBA-8soZknXUw;Hf>NEJhMYon=1c%j2=T2fsYj9b^TGtbMP)`{5Y*nt?tJ`vn z6euaaR>vYuMRoq&IB707=niz|d8iD!@6t|i7$D9^*he?nvlP5uT{@9^OtWtOcpu_m zS0yu>f9UE(gIhJW)3E1mY3Gh9e))z^g=om)0K&AwksOE3_NmSk)w<#R%bloNEd}fK zXL^W2C5g$xWtlL_ygUn)X*yJ_o#NM1;kI)Z)tx4Q{bXmG`a7y<#hcRkH{XKLPdp$| zM+U9TrKzKpG2mRgzfB<6!J%qy8P+X4e$K^?<)rNq^X24J#efAoI`4d*rLgM$_=%Dx zjq!8bX9Ak(`>SKNls3%CdV^gU37~xHqctaHly6rjA#F+#y>X$&nYL^Z04fFQ=mT`u z)-5y?P)z;Bi4;I1<7NzIk%`_G*ML1ZS7d>00S>Eio9L1RTdLvu4VbTQcl(h_I-)*J@%oA9F_lKa$kP;15jtX&LriRvekY0l8z z((`rtGBPV%qlP|dYSx*{`KZ@i_)Rd7J5#!4@wFWYMop+qZUD?GW2qUoNAEzgR!rMb zlhhu!;Mvq(#>0}UexmQ&s#~{X#X&zq|0FbDmmP}B+3fbjnu3WL@`J(5ELBy=AtoX3 zUU*wvFE;VLqXu&=vy8b#s+P~l`4R^w1R!`1Eu}OOKdo2S5xDQFrDk?OCq8h5cogQb^VDY?G-bS7{he(Ns!sS z@X_c!R-C;Ud0(zYPF`Llm%aABHqwZ`S+3vW5TWI66A#E>lq#v(Y`PW}kYn6yBtHOW z3cVoYzs2v5^qtg@2#~Lbk)9!bJV00Z>3F@!Iah%BZeGsB;C@Px_z7fom`-onCj)g# z{*O&o)^g`$uaN=2mk1M-7Xox==iNk`&|>)lF&dEqnWDLM z*$N(V7F=6HE^EAXsOYi`6Aqqwx`wRh{VbCQXZ|?4nd5(F-Q_JPL4uD}@4X%5&187? z*U&G|AJ)Mo*cu?PU-=ZvqzH$@;WzPw(Ov;?m!)Y&Z2)9EB%9Od=R#d6*)}!AB|*)3 zwB@e4apP6E5?+IMIr2vOIy!{XvuIe<)J*DVat39BomX%w2jRFIV_xkWZfkyyq6q0V z;R=~q15Lk&wCbmlU%kU9hKN+j{n^l2Qhb#ui_~hf%ssWa(l-IHS7#00KHxp-IYo?; z$WPKd&1@`8%mvQzWea03(FhLNxn4YTx6*3M+ikdR^&&hn2XBeR;#yEdmFS!iq)b7)V}tA!#R}CLnEYG7oB~F6fduLIxVK|)dK*&n&7+&~F<#Ttf={!- zU@O9)p{Pcpv%}oG&X7iF~iFPw$ z2JPb|y+rOWfqcwJ(C?+VpppMoljcjJZ;HXUbQnxez}6O^#oEV)=WN9Da^1$jUE|Xv z7htcoCs;= zC4exHf%N-QqVoBl4cR}@5_y-@A4yT|8&W1H12_2aGUzOP4W9(b)5O-CBCZcu>~@+} zeu||~<`!us_UZsEYe;pQqz|%8{1NGs7?JJgh=aR%7RApIfq;x)!WmOEBe6^ao7>CM z(#xWOo}j2@m`mrg3+FwMBMR!eM~DJCp)aT3lJ@(d?s_>%s8WxmP$eMDYoX)%{4^B( zHI7Ac$pyTq{>pCgm(mE3XUfM=#GQSKJo%2dz>KzBALE)6?&$6+5K*qQ0FV~rhv2tv z>d<0h-(22eNRCYAwXTMAw)-LTx@Gy50US76>0(HW$v|pVtWr?Opj^4!ma5`GNj-~p zm}j@1++dqsNT>PBrqaxm+Xj-giv14F@7#ClBwOCJV94TcZ&NVZkU(;2XaTSboPt#O z&x~6vaVXc)*ZQY{SII>IY?%j_9HoMSAx+?vn-sO2D zH({nx+B`d*FKD4WL2((pDISc5~C`- zk&`PZhHR*~Hu)1pXRalv=<4J&b@EJgj*Z*yMTu!N%_V`tp%V9ps=$HoD}4#=j$fht zNal<_6Zo@*FKUo_++N!syN=TKgJa+*t_<+U~^tOY+HYE1e(= ziuwz%OigS-;jnH`kxLEWbd$R=S{>TC#y4Xvu+;U@#E2B0ws>FSPrYxAYZj|dNedLn z2MmFKOSTFnt$qOTs?k|ri09=;T_63KK?;pzNt*p9oKIo;)#CpJTaRH39WdINXz2A! zcy$v#K7}$&<3;e~)qQmx@kb&bv}DFa0dp~eik584NsWq{sMb<}T0bP<-S*i}2WmV` ziYdNl577?D_s0hH*1Ey2T;ku8vgp>NfJ}d(06nLpBWmQv6W?-xIc!T&IK8eWw+5tl zKO%#m)y9nd#{I~0xqW$y)&k~*6cNop4Mi?zO2JZcfx;^7D~_H6VifKk5mpnMs3Qhu z{#Ra97;3B)oSFwHrUxj;KFEc~CVRFaK5n1kF-nN?iaHW>Hh! zShr7qNgn_?7)th;b}W~@?(=wyU3r<;mN*)q`0*v8$@8g`t;t5SnwpB~wp8Le6)frz z3?)Xwev0&nD!a4Dl55_RL)n!eHZbze)U?vUPC17U{;Jvah;^0fB{G`2rR zS=MROM#tq&^MIsI96HqRl4!5hh=d}UtMJyBJ1G;ew)niECMY%*t!f6IFYB^rScHDG8v zFU>UFTu|=9Sl=ng-vXaA}g z0WwsW!QaQR3G?K)90g>RTi5e)#oIH=!&L6A$kQq=2D=SqUkFO8!;W!Q~{>?rD@5i{1&~}BIaX)O|vg&|e zJU6e_Gn%%-#Og7&tOhXA!mK7TJgQnM3$C_*|K|l58Y(~93*z-mbN$}i1xZ|@t}Sg~ zaLz8h`UOtpJUtWfzbVT^*MDUI1qhs}Io@Am=v{N1VQ=KLZt&{r4=AW^P%SkTouZm) zUcW)Fx~Z{sD|W(=zz^Tgad4?Tlx?d&5b#d+^xnwPTZbHnV4?3zU#89J!vd}sk~H^r zn<&9{Uw3yJHbW9*g2a1nqJob}@s=dH>VkUIOm#V!9lzkKhiGhxlv0aklk=CJXHBBE zQ&xB+Y0$!-n_VErS3pmkRH6$akClofm4MD6G7_|LaK zTo=^XM-`qYvVbw)zxYzy!ga==>8CmHhuuuGesskC(LR15;jIQ3TQL5vhWm`lC`%Eu z$>)ln@?l}UOfi2yQL7>Dm6jq5E1@>8@N0#q)$b=f z6gQ(}bKHhBH4M=VfG&$M9F_!9fBju2ySo>w|eJpCXNBY+9wm^QnNKRcRf8w;B?mMUK z&n8l=ym78}=1P@+6q_uTb9OJ_=mdFi1XJN4$~wkfkKIlyL=nfI*$>sz#Etew9mI2x zQ98)!oB)Ve=7JGff0IgAr*pH{1WpJx~ak#$y+8YLTq>)AvSezcHZd6x}8GyI- zEqC|iJd6je`$DfzWdyoNo5J!@LDjE79Uq_d((dMP5#(|D@e}^=-YoGttAhFsL+yDX z*}eJAZb(fZ%UT>wZI0}u{}vT}fyo$!j=aeGT`v=bQdABK|p0u%5HKv#Ee>`7A9 z4koO$?Eq8n^{T8y0ST+oQbSYBw$SVuD@X z9Wb8w@Bq3EmR0Y3DROw(hyO&K>|)`<*a&S!WfBz9FPwaqj+dPE{b&pa{Q3k8jn)*x|&BpG9D z+O5Iw0~;dt;obEVpb(4!ke>ymiWoQ*Ax~#w#rhR zeMGt!<0=_Pg`2)arTfl-*O}(sKClQ)A~U3IoX*Z@Sr{0Q1&ies6}JpuxPXvElh>fA zzL#bOfc*mn>9sN`;wB=3D1dmfvK@l!T^!Hb$1Fi>0Kp8j5c5{KSv~aLl+<-2^A-%i z7n&#_Bd=7nPsWsp8DQek4ZgW~AAy6Z51y4-ejYIq919;CKM4B+TM++bc0aO^sgR22j(SJJ&Cpx+;zb7O- ztM~EPtdoLjyCU8{34A<($dz)Z>}jOKr~wl1=)mT^PTTYSThjL#YJK(OR?cO#$x{3e z%=;&fyj}{wJvgQ0d;GVMD(|mpT zU|by^M_JUcd9jG{(0~9Ru3wMsAYb<{@JdLs{r!=u6##I*#wi78#XycPJ9!6)Ur(*w zLf=0}gbPj`Oama_br~%+zztyI8x7Toh4EmGt7+G#(;B0K+FVnn9pIh}b@8*06#covfcIupX^%)fGPWj(K6FFHA5lmwD@?3z zt(u3%eK?1SeelE~Se}gLDK%j*XC6rQ)vaR}pjF-~6T>m_r6grzv?VkL^-iOb0bRk+ z+MQqcno_zzi<=TSTTNaO0VMhb`j&9V-Rak{kwY%5;Y&4h-BDx@O3C8{J!MVO%FTfU zf|1z{$~Ty=bLta)C;ow}Rsup2cg{Wu?2NWhE|U8v@|V85g*nx3n} zB>`YGm9~}$coOD!sPX6{vP~ttO=UPGO*yV^f>hp{jL+@y{B&_%|0ZynGW{p5P-4T( zb1@1am{3@xr}uFnhC8LlSR?v>uffONwB7qA+g=k|2hn=>7&u_qaXg&eHYg61g@8GJ zqe2MD)qCg;So*Yr8HpAhY@PDsoF$YH)U>qs91(Dn6FmKa@W+5WLxeV>13Po56dT7u zMm+@eJW@Ce0@n@^(d!SIn%Z8b=)OWCa<@cjT6_Jm@w$9gQbqp{@)$@N;{vqq{fovM zKv(QebNSWz&gXgVk5qcYv&Whrq3C*MPzQ%YSrV*WW#Np3LSZQ5eR*PIk;J9jIyS4r z9&7q0t+mdua)Q!c6A|zhQ)+8^iPD@A7x~xFccCfhjOB}Q;OIA9Qr%)GKAY>Tg9Fcf ze+%6a$4`ea1{x?WO!{=DYSm52%*EAn_W+aKazFb8?{2|;aS6I&DZE5OeWWN(`OcHz z%|W614_eVbiv99K((eoDi@v%t6nuzqhB~_!biDp}aEwb5H~3fXr$k}T!Em>xW$#wq z`11ZvQ!#ae7TOgDJF`p;AR<~lx-Ym?Byc}^oZkx?GUyFVDJm+9DGR^Hf6znO$whEn zOnQEl%@+VzonSyq2(=`^vm!)W5vMrF7zfE09RZ}JLA?Z16U_7?OidHibaD)0KR~@R zObA+DN$Y28hKSZ7VXsIqOgQm_l*pz{udesur1#-QOv6Wj2V}}9OY$74Fqc}V4o{=E zoI3kHzERsD@8hrn0#!sQRZ+D%lb@KGG?V2i454lo$l}B+32Wk<1j{S!OmS_XSm=;W zd5?L%_OVmdQ5%G`#`V@2O(z~2kG$gh)cEZ^Bc4aUet9q;O-Df`OSI4)RW9Rfs96`e zqWCR4C{ml(5&+mx00@l_|6O;l z)nNDLajhRMd&lW=efH4g_q1&S4hF>lZWw?JG6kqpMFT*f7=B{Ko&T@#P1khns_X0^ z3yMUrzuW&t+fo;KGs+(*s?X=#6$Vr8_gewlVeleJFsp1ykdZBeZ0M$oK%SZkH#dZ;(0bBqx4I$36$IK zIc|T%Wn%6u_kov;m-6-!kWx$vyD~xAE9Ect2^ zrArY}))7|k1Tm%oJzLaPneNy7ik8SXd#C-**~a^}=VNr&{mjVBl%IALkdP!m=T1h& zB+KUnynrNTp@frWxxC&bk#!b#*J8~zeolwCpVxasT&28dw~Bd2tuzov_21T9^qj*- zJwyaOVJIOaXOBS#=K(-O0M}=73z43QNrDaovcqs%VV`NsPMwU_p~6re6L2m8sjJrA z+5d4{;u}V$RYnF75N1nzAfV0wO_VXSobFau+2Vi^Wf3`LWwzY#(KA==eGA`D7j+RN=+#mIL?v@1{Dkbf=Jm6Cf{o=zU| zPH6hmIMAk*K%Yw<2UFIX2ROUT^p#a{-tg15d`!-#1WZ=UKK*Mvo z+*BB8lD7L8lXl9X#)wNw#v}w#6Em@(Nj5YkMgiJpS!)yUKGyI0j5|CYKb5yMW#B*U z1K5^WI=r`}spj`?p1x91lFM={O{RB5E9Yk5K zstYUCj3H8uaaafuQlbJbTS+ZL`=V=H5bXE+zopdSZB*vh(a|x%82Y{J#_pO3zVunM zggRn;sSedC&&%r*mkz)5w;C`^9vvkBWWC8c5C}!qx_1smAXDzI5(OD`t)l8)R@xXKaLpNogv1ZLgZUFVB_IXMJR@^+ z{EwJH5|E--)p}pvjxeVUot8#weY*cMj&dX2WBv5i`vQytlmVeq1^ZiIW1Bnt`g5PQ z3(c2D-BsCi@iO92Gm*k~DOgY_jb(=BlN1CzwGS=Quo93t#8kI6A~CTVBmOhvtQ-EG9kH=7aLWtigmvgH-GhqLF+GUttY70I5t-b4Y^-<7AXy;5@vnCtkj=bybVVwUKn z$M>2bsfjID?PH7AX4(~j!gIClxNElsAHM7=Nazbd;Mdz?_4drPa<6CgCJ%w>Sq}Bq zqU2elulv^w&i_=2P5nPE>H@*!gh;`*HI#fNsz1w4z5y^aTU#(Jf~2pUT$9SZMOcLk z(9aSAipvVR0THPJ+d=!K1o@N5{KBrmTsoff@i{#k({F*yzYYBoR&gwDZ_rDG#YAu(2pG}Zcjz}p!2+2grR4nCr9#E!qQy3RrKNnu7JQ}WQc~yNT^PtW zD_gfRy%v@<4H?cad2$qtgo`sCWo$F--fL)6lPRI7-GzKF{M3H>%-w!`PfdH>D#U~f z$Y9yIQ5G=e8yb7HR8=$rg^6wi#G6+#aHk$geER#b$JFMqfP6+(Sz9%|I*6=E={|D= zcm0VJqGkIPQr77ev2A|?rH=9|MRG}TL*J#D#^qY1M&ImlIBK2wtP6!=}IAhSLwT}1oJKly@X8lT{P_+0eW22d{ z7i_wu8Y*?IzUW?~Eil03J|bRKI%$%=-mfG8oKlazxP&Bb4b#`D?!J`BP!w7TRAd~zCd{4aLtdw(w=Pic;8`7i2ag+Y9VI9I$Rk}*~=^&r9KVl z^?&Su-gW5xTKjZ+tFw{Mt2x&Gyi^N#MwjnZDH}Gt!W(I1wf@SH4MN@o85pMgPk-9k&{%no8l0&3ViOkFaPY-jNBu@=MN%2QQw|w!OuXtb9j#p>J zY3D%&^?HVQwwrR6jqkg_bgto+IPb^JrRC$Yc<17CvJji4Wzj8H3jjc2=0T-4sNh*+fsY$JV1If8LWJpzY zE8Tdmn>2LJ!eAmx!TTCywfs14;U8%5bO&aAj}%IJaDbiH%qo;m+mD^X*i8I9$MM-@LCk`f^1k8OR*$cMIQY4Ho>|68C1_0yf zt5YnJtB^Hk49ePf#8Q%glnD6X$Fl^@Uo4-gVgd?Cgj+;0pEg%Aod!i3$-nD!sSWRo z&Y3hpmq?Mw4e5&^U13cdKnf=Tor-3Co;-k?Q2Vt#e@d7nff7m@=}~s7g9kLy6BaXo zd<*9e57lb?WYVeM_W|0p~62ueUSj*S$>JX!V=J=*3YvLfI@_jG2oKV+w$vInvi}19kGtL z5pU${p%vhxC@goWc2{Ojpeh$CZf)3#3`mq2-El}tY-DL&cyGI$NJ`J?){1iZKxK^h zCNN3;1|-ul-rb{Uf;X1!f_ewf?&vT9)GX<#Qs1b0PpYOi7z07&1rV2j@T* zC*c4j!X+MFO&3SI^|N;ahA@8of&;gQxDk+RHs9+ed-XH~>A@TEs8el%x+ zy(R5hu>Aa?BV&Q>3aZoaEcTfD;X938$tLn6OguYH?xY%X$c&7%Rc1KXlml=1H81~n zT+SaJQ9lso8hA%`MwcorwAl;JzMs1TV``22h>RF+p{yL%MobgzZ8W*T)%9+yrNp`| z`;k7gI(IucPdvuSzdoR3ygoALOkt+`WQMmt9T}j0U1+$hrUa;qy(TXDKEuh$rkd1Q z7bmv!TZC%2A^CK#w(!&Ev0|a@&n>+-=ika7nlK&PP(H{N#xk+G0Tj%Kg^1CV)uZ*K zJ?BgO+tOasX?t-CNL4_ru$yRvjFDnBuZ{kn!H;;!3}A(;U36)e>RisNgILE`aD@t$ zrg-ms3<16ApnW72${uUI0FRa#~GFaSPZ**u!1mjq(Q!H{N&IbDuwc2NpR6 z#YJJU!^HAYZrv=ifuKR}HXT;2=e?w=-8vt>?#tv96H^1QvWL{GTRVh;G@ml&1J0?DPQMCyGK}AA#Bg&czIuYN!}b%^($3>5L;~UDB`5l zUUceP%ab(AEcCnU2)Dq1<721Sc`$VCAoBJ$qhY(@8F>Kp#rF$`7k`t7;MEnp!(WR( zt1n-o3#VNuZDZHP!ZvJy zTkM8yD)3-jEEafDj!lHZ>EbVEHh<_sL9hPgkGg$Z3^>zi3c#_SN`OS z|GXdn8U6yIpxogy?bX#xAd=je^uULpXWDMNe_b3T9hb0oS;%>DKaD#imOFVgKQZzq zX+(*#d8r))K}50$_XQu%)vjh%*SZva?Sq82}3X%<$wQ~fJEqf zRF==Tur=P{jfnRExo38Ykpn{iz?ZAAPBom}GVHq)C#q=h1(2zDa*3Vq`B;Vh1G6nx z7DmeI@SN-JKLvgV40A;ku!(@4A&768RYm2a;!U46KolZc9|?I|N{H+or&M*?5}B{G z0FYA?*nI-?j@PE}BV=(Xx58olt&SA2@JFyVL}=bI^ZO}8DBOEqT;XLfX?9;Y3{W@( z88rkMDV(g0M>v?=gGHP1b}Gw2rja%H_0qn-gzJQt_uHZnn|Q?eJR=*gmDo#_1+O%Q&eP4w4%x(q5OqPw#UryS{~96Z?UiY z`pf`Kb$DK&NUFD1nR}|p(>nn?p_Yde#GK9wU0WFlUB5fe8Sm*{7fGupC1oegL2+6nr;{8dNNMK(D3P@t@(CBjH@5M;ufJ}_-g z?0~&IY-Q{4IA8J;pcJ0}$2o0qnPt_k8y5z!55_TTIX|D6r8w87s6>V+V&~^sSSL+>Lg(zxe0End-tq!_PLPJ$-=f8D#miq%US z_j?wPx& zs5CW3NqOsp9*A0l6bkj+h8p3G=L(cvwN+ZmreyUnaUwRs_<1&DQnEI|Bh5``*OBY^ z7zD`Sk@bqjN~mm74HqK~u){$7{)0*o0SG8))h{jSDM%)iX`@Iuu!}=b=fa=ETTt3= zPcnkKNoBSX7G8d!RU=f(2QkY=_Lg)5`K2C%{Cb`~rABSUy~NG^LW*O$+7?H(3=>`h z(DzgK{-jBfbjy)-$9A88I8bUPR)|@i3#Iev+odR3{ zw9xeU`(CC|>dhNO>K^l?60O!U8u zHGdU$NPbFdaV>O!w0pWzf+MWI1G&Q05z+PnbA0s8nrxyKwpwFq+4wPckiJqlBioT= zBm??&cr4;6EdNP1Y7l3wvZ+U|D~KC^HzJxd(I7P@n?jhTg|p?f)>jon0xrF()c-b3 zhi+mF_9e)z3G9Or?2=Kjl4ob13*OS&yN9D`9X_&aV@M+6d~%tZbvd;I$HCyjhPFxO zZYi=CNl69f_3589-;(_5{1nOaf_D3Q2Vd4!6rssmh2+O?e3~{0cxhR^|3+c+j(;+2 zC*wlfzOJ?5mh=F9LuifyYyqZ#`ZIYXOp6=c0|(e18y^PU%i5~&egd8rw~bux<<|~u zQzvtk@`BC5Aq%@^D)utR3$i#Ezz8`#%htHl4f}Iz40i2hH1zJ7K%tQ7|0zcHWf?y% zhB=b=&?dO*_x-JaLA4|H`Jr^bR<8Re8NkiK=R6Bu927V#N>y^jomOVwxfU3v0LB>Z zFMlWUp5C>m0FssS$>ERNGQfKEWF^o^CK3}5j4!~V#f}s0$=Su1wbuF06c^v0xajUi ziLP#AuQjAkPA==rp`z#g?HKMx^hq7_+?8*8xdsCu`9JFVP3LsXmFqxn|0J2vWmWGx z=AxfshF+0 zz8XWcz5IB&iC1a!1Qlr|FqMk!5BAWdIC&nTNH%V5NxJULKzJTd$^w>``(@oyz13wD z(!VGuL&*v7G{xJGQCI)-0+f<*Sv4C{NCSlWs_z%i=We)d z0$QHp>lVMq!Z#jnmFfu3l&C>uXfy|w)G_l>sPm8o@l3fe$nbQpGYz76Jv~!Y-B-G2 zgP~Fn_kDbrDOL=UBu^8#$QAP*?LWXEQK$AF(aNF0-*L(-xzM7S{#XZi;WvzZKnt= z%Tt?X^SXu(wC5#S^1X4Y(;L@|G$ITCnpehOVG1Y$@BRQf{UYYyR)e2{$9@3GIll1q zTioF2i9QRM?0S*xe6g^EOm8Mv85Lb~!fc0$VTL%y><0hP031P6ceLLH@S7ZInVGY~ zfFf+&S_s)JZ5%d~BN`G`M#|6uqu0=aJ79g@W3S>;Cj>`KZ34d9sMNPDTCIwNEXq_q+?pzGOp%q&}IC$Ki z%PgUbUDsvcd((4K^|W>kfd%6b!YF5*gI5$EygQU~#Fu}}iK z6myK)!PNvVd&g) zU-Hf9N!=(Lt<>zn9>Z!4c+Z=1l{3|h#@PRl=4Tw`A8|8L2?ip@!v7vruC zjHNoK%UMm_rz;aMCT{qKou>L*TQ&Pz{a%A`Gy)g}7}9O~4Xn7koA!1-^(4Qs*KVWz z>kF?*N26-Yy8&72J;n^T*mAF9cPuQTaoOO)e$z>01Q6Xo2OqFJ1*DvcRlDn~&L$$e zBx%!HMn=;BH?zwMr0yfu{x)|6(mRf{KvO32IrSd@B8ri{%GZ|gQ|_vWG0*GICyn4_ z2N;|$n*vT(AMYk&QuYtw?dC*jGYd67ObML;*n765$atj4900a%XB+UIJ0~U$JA%}n zce`lQ=0;_bsWa0Q#OYmJTmf!OcFucYz8z$KofDNtAAMdwH6vazVBiq50XJmgw9(Xx z43*+O^H~FIM60PEBaC5??+(YoOc>W#K>5DnV1`PQ`oj_h&=Q$ZWD~B@z;p%~4k4Z_ z0~Z!4vNS-weD?p|gHm|@vu!Hi>^;y#02QB#1lKqQK{GwQrSe7R2o$I((gGdZiA&vIsf#wA5BmE?hk=(7AEMTP0;r*5apM}yr&=d%IDU}`?LF# zL;+3=xjwGyJ2qN%m}nvbK((zs?K%J>w|Jgs2I#FBTL30xv0MY~gx3xG&nF%Ujuic3XW}9s+DVYT!=-k6)aPG#JzVh6m0Mr!o|q}C zJ1S1U`ThO{yFQqeWm*^;uS1zINX%H>s{2@KU9Y)v(?or{igr3uH9c9i6TgsWypz0{ z&iScofa8d6=oIl+qFtb{FXsBACzmJN<;rNj|Bu8=?$fPcp)Au+M^hx(vk}6%;zA@g z_cXQww?-vnxpn4<%KzM!iWrounjN8e(X2K>S@`oN^I+SOjL8hc47;!! z3H=%uhRP<_FBkhiAz=@QdCvwGR2LL4sL@JT-;?K3C_wBo5N@k{uklM$G8(flv!`4d z)sn5HA1hjsjS;f%F`u@#BXGANijxpa;RvoN^qa4LrJ`-E3W<)UKpU3T6Oiz+n>)1b zTUiOu`N%E)`5~`vnG53JvFiTn@;Q}FSL_XV4`Knm@wd8H%KM zmP9i%Kl-HMqh+r^)z@c2(a7DH#J_t*N#{b>r>*V9=Cu-iB)3ME_G@`{4gp_}7E*da z;3;)hpR$ z_M}Tr$4}@30e`yCE$p|Z4Bm<74`-8wX-ci%9H~oZ!?(A^qGJeC7B4Q~EZ3qsEy`^O zD2qP=zmU&cagyfx} zJ-e;&;ybV|t-+a|9e?S!1}ras#H1wR@3x9aANi5|PYAxfW3l`xiXX6-4&gxnD?-Ti zNacC`wdER(h{V||?bo_~OUra@yz-ZvN%m&c%%CXo+~rn1D(J|)>g@^HhVvr%oLo3Z zXLSKYmpjMzuNw6b)xBLS4j`njC*Y&#kDWBY=S9BmFqoT%m%KXStByU=W{Zkc7}_y- zw`rIpkk&+%CqU`a!pna-PEpk~$tlUoBRDH>ff5v^&fS?YG(m6v^c){F7-PlWni~EkWFFj_iH%4bgs$wV06t69uF- zjQW&2hfAFD-xvV`!Qv`}FD>Ip9HG4e>W$Y<5KbZ}$}_XC+Ho^Z({m|U4`6AfS*9yh zrCEKZq!fX>zZ)EN$s7h#i{YJ~J6~%PsnMv=V39*|4o>?xh>$-ci+B5!4@yT!kc;k> z2^9X>D3i}prj#c$-0$|ZRqPk~lrau=1y2JvxI>dxRRi%=^K>^othP1{^TV)hG>m?3 z)zPG7g|-L!NJe(x48#nDLjP|*h*t!wSD(+nbIpea>(O#?_q?#13=LE50%PtDL)7Fs zc_K~&^jrFZu6rxETFe$|2{^LAwcOXrmqpKg+3<#h+F0+}8F{>gT4To{)xlwCDjP=m!6TK!+$YVmn=v6bXln#VQS?pH*bfxI=uZsD49k z>|m6VC!VVjd&oAOOfUW3TR|P{!in5O$mlc^R8V#ol00ZNt@PqwN%QziC3*lt-b{2e z4>Lf56N`03EQg^Sp{(8jw~(zXG+)QiYE&Z(%|NkPqDbHPOzI@8B_H{26mAMxaU-#=x`hOK$kdrg<}db#G5(0RE-??4_X+ z9#{FAI}c54j=xw-i;!5%IQM|zWFDVn^+MN88YY!)W%v}PaG2x?Xr_AeGjayX z`svSJti=PD+OMgyBr#ct zm;Cs<-P^J6RlITo%_CCD*84*~@Z3LqyWblGa@d`_1-8J;12obU@6T^OUyvxTJo))K zjI}U_!YB>i7Zep4fFj^{?)1<>5$NkXxdcX9ynT_8--(1gohg{a(vXDh6^P1P+X4`I zm%FngWxl%DpXPCKV}E##r&1p=h|CS)$&=56*j+g&!Q8ghp;-q_H<;ezN zTmQ@!J&xqGeHR_G(F9(<-y@)_umGceMBhBl&CAKrNIm_+G4iK?PoKxhY{MvtpSD+QfC|+46GX}OLE8P3w#Z{i{?9g%uq3|30Um38{PaJo21kk zND>truQ`vo55c{j12i)>3`|k`6_YX%tP$jLFzE?UD1nfDA_uLfK(U~ zd@59gN)mgGDVmeyCuRq!r}tahgJ348qVduscE_OcT_pT;aSa`V7uz@cprCq*jg?2D z&sMk9WkgFiBL0b3Y0O3XTORQT^s}}p^6%19swV}_>tbefUb)TdCd2vbPR!&nW;T;Z zB6)ZLDaN1Zj!ZWP1=8egcEmYzFBU^~ZnIYrhyMs3yDY0sCZv#CZQoZOj1TnW7p2n` zY%>UAdUf3d5I{6)lk9T-9&>RPg?>F@4Zlh2cL7NtUE_vASH)yAhW~M^PkjhR0rQDD zT~%G&i%cs>BesXsuJ+L6t?#&s6#+)^Bu5NLpj_F!5js|vh)#9|7+JO$I8i)3-Rut| zQQrim0pxZB%}S#_IU1GOO7nB%sf{&|y&QaceIA->#GvGLt=GE;gzHa+SF^-GnZ?B) z>O_SW$K=;HI&lRUkT~;h;beAoauwkRLSiVWMSpzOoU5XbGts?`^tH#5Zn0ot&+iM( zoLCt!RQ!?sE+piGg_|}FU9sV8g~{#ukVxz4IZD5wB5V&dtD7=(j_BpzrKPfXm4Nha zsRF8>F3=KPWt?@}Y4ke{aWI7Zu9096|5tt6E@bjYkJ|1_6umD%i_86c^j&HuI}A6b z2vG^MeJDjG0$~;@sS-%@6$NwqEkAdY5fU-xuu%fC@mwVf1^U^YkoER9)y}dzRg7o- zZ$J$U1|Y@5aT_!VNkokl#(WX$*hw#e+F1f9m(?&B?h*r9Eo=6n+Il5mDOK`yGl2eE z6dR|1qT}*t>#_#J0)bDhRM*>*R0k0QG{^I!iF_zQJ$zeKLqi|{+)NTkFKr|P!rxmF zf{RLj9J^k7hvVg&>>Wa*)st)0TD~7Wy*6n%yO}uO`Gx^^jm0^*FK#8tU3VoqW%YyP zi&}6L;znIU1sU^72k*)8Dg*~)aK9yz$m{-9sW9o|T#f?$cp|b8QKul)olIY$C zKA@tlQ~EwLMMEssHlilKx8189HyZE(r(ER?nMaFLB#r&cM#c|3jk{=t_8QRP-$+FdJT>QwXPN&C$ejFh z6Cfb7iajP_0&WI2e>MIT%buainV{OpCkpvG@${C+&dko`zI(E?Uq>Hn9cP2M>*eZ6 zupGV#w&`oD(cw>NY>f9qHy1L0)jZsf>8}YUs<>Pt!sW$c*Ha`zPrg#!YlpUIwVs$p zx!E(WV6}pi*}*pDGxx%h@aXGpicMsf*rE?wRK94u>JnEvUfk?aq0N)3N5oc762~?8 z%+vDJDpU?Q05$@k{ww15d;p(M(5KMQ7XA492u+oHi9>+ph8iF|gSlB}>h*RE^=plZ zHMXX=z(9)iOZd1Unc~UNZVXyDJ|rmf3z{8+0}1e6|0)AFI{Jg#L+|&Ewh%MlxBQ8m z?iA#KLA)(r6E+S?jP^Hi^JOF7;9Hg3+ye8a4u?0p>fBjy&EOC(sJK~UbHBFTT9hXs zoZo!xU-5$vc`BVp45Q~hckf@pSs|i&(c(rA@n8Ky8HCt^ZNQZ3@2mB+1csZj+-!JWAFEXUN}-NFD_1axeVpl_iuE3C+INwzSvP%Jv=N>O0j({}|=WC-sW#+Pt z*LW_eUJDmVTqjtbolSaaJ%aDDg_SsQh4UHFm)+IfoQ4q#D28Wu368r4O-wG13)~Z( zPt1thjL`ia-t)9DWD(3ets+%aEXlsG=<2kxBU_`O=}qHJSs|F2eM{6;LqwQ58+%Gn z)HK;FK@R%vF-doSbMcz=I)&R(wbOwM8ABY{QoO%B+rB-s|N8AtcS>WV>$x{#EMqo9 zO?`BLy(e{$>4&BpRT6g|t~bj4#f@!&btB5t!!6sF6R`|bW<$ljZ_|?)@xPVNo*!D~ zTJN}kymY&pLl8ZbcJm@paRU@azXd#7(^UOlzxLS&!hZeTXjGE~eXL^>wj^$wk3lji zQ5VkJwuJBy(C z{Wi=k0cn*UXU535fhXIWW>}O8?!r$wP_}lNeN~BtMe{O_J;p%9W#_Ns3~!%1F_8%s z;Rj2mgb%inw#u!|fRqM-bE5Mlmxn##Oyu~a0*bPWJPZ5ekAqwNAfz=h5?}R9M@_bG>z*yYh`MpVt6p?x2}9u^q^j^K-yiGbPuG9`}MNb+EZYnn^*gs zs*)j1M&0v5R}K$~f*birtuj}WM&lON)^wv^Kc!I@K=)WHT7eRrgf6rBgB7OA>{poOlxf@PG^flEB4djT*g{x^v8BPK3Yta zPU3J?BEsr+BIr=Acd+%A;ME>)3o`N?xH46V!NzBb$QcZNmM1Is5x@sSVBEpjf4wEKhQ9H!Iff^bLk zoAZ5hORRP!bFdnIwmlHWpT4+4| zjy+IKH{L8uAmO|j_g!@m`bE6CQ+M;204zM+t-wzSl86K1B1VbwWXTX|lKWMcv#Hiq3d%5Ga;9>s;O#8~6QN zDxXp}vpa$B^RO{HLO|-Xrw4B4jfu~46ipjRvFseZii(PukPtTqhp3s^eo=98K|REs zGC(-ArG)@J1lrn~V|f{$k58FMCy0M%RHf2r$hQ6E8JH4wrRBV2YSqHnLwPOL-4htw z&a4TPn?Uxpe?Zw}VV$n?!igWq?d}UgBO!qW5cu}$-#{CXn(hl)k#cA7nm&M6KS!Xw zq6neg@@^G<-!T}w3#3PEq-$HzdKOLTaoa5K0=DVdPH&H3p^E$ooT zNqDwV%#EWw{l`SFSAe?Pyz94`-fcmb!}Ve-8TO2f9k;}a9)b|jN5R)xAyU%vHsq_v z%GIZZtGr>7%b-`ZOw(!ws$<{6;HAV+s`Z8sh;)V7f zD&5I|J1h_X!y~}|z(ZohFBdR=Unj<-U?;Kas72(3^0&BMwz$%ygfqU1cgJb;x0m5G zQ%pY|{;k@N$CEc_SBzTFa&jC)e-_0in%a-TcDa0&5k;?wd?U6t3GA1Cic=}b9AI? zf4oOUwDQO(e12wVvqd8Pn?A|}-hzSIPyW2|PFZ=X`e2sb{>RLpy5o3HQajR|Wmo%S_*5(I;;EysY(_Y`k_0S+UD6Ko6sf zt6K^B%Y2PTpXZt;&*q{8e6J4H@>5o0#6Hp#9_(X6Q=gtI+8?U_su@CcBPEeT20yMS zUlWaNT~iB^la`}2j7ka93d~|z0MPEUmEhH5_Z9))GZv)tZXMim*NVLDQu`P=Rwudpw^>ty_{k;g_jdB%t4mr2$1*Qo&tFmCHbaMkR_Tw$=MJziRZs5%{VeY8DD0YkZ;r<>r1FOL2d86TZzEwD z9ncOpAsTp=FL~wB!7_t*ZEjlei==0Jrs2~D3>mVUJ(QGuGOCzrv@a;pITvelE*akWNFS1t>B~F}0fkl5gS?DjB z9v6kvl(oTXT6JNT-!F;^c`c{QRsEwEciugIk^l`Rs`LaGkN0r}kMv zQL)GO4qjS(kGa#y4Zco8NYOVv7ur)v(<=Sfr6;8IV%dp}EwoCVq5JFmn8ZwKR-q^j z%FkN}jk!n8Y8Cq4l2i%WdxK!?9|HHSZ+P&6r|ezCyI z>p=$L1O>RVy4bKJXt70WTFdPH9$VbscMA_qT-UC+S+0{I*J0T z!?*?pDkOJ}N(*?1w+}5jvkz=`hS2ug;T_BM88OA!*Ti^nhw6)97;)~sn zx~5Ej=gJ0?ISO}~M11=ef4CSwu<&vh5FSnj0FZFGkRKkB-X0!q%Z@9rz~$p5L-kY% z-2Zq1mJZSqKQ{U#YrM)I_CV8u4b~4Z?Pa%#k5XZvJ*I5u)sf4zqG6oVPG*k`;BjE9WcjP z&~0dqru|MRHM7;y9zjE>PEd$$L-Kj9a)e5qtEk1FowJgYGSJj4s9Mo+m+HeDHL1ca zDp`JUcUeK1QnvW}qp4DchV+RubArm=EQ6W@OHkq5-5sPK`645Gtdb7Q_gSt7JEiq{ zxgRkSUHtG=ImHUQVeHlW1eN)lu1Uq4{^q77W7XQP>0nG-b%TDA?#-Ch*t}&!L0(l^ z+2ovcMO&T$g1kZTcHg>;hteq)0YZCbs#aMI#OYo1E>|&zipo$^>s6J}m>^*`9f`vAi(z8mWQ=YT07xeZgAaXF6odtZWko^+6_=wLB_!u^ok^cxUQ-9dQa36ks^Lb%vI1126BdU-E+HGfDXj`$@obN% zGVRD`1EvJ(r>5OH-Z-X??U$cIh=M3Y;dPb`4XPWs3s;VBZZc-`Rq4g?7NUMvJ^2K- z+!1pncA=z10z;cLqX+VkqEN_b734g$)TLfrh2Kx!Ek$Kj#-At&@~(t|z(0#BTtP>y z^LC4(8WFK*B3-zwQ}^cN4VkGcKu*0VM_PW=?OMtMw}qmYH$*}nX;MK54zmtk+7sN@?DM@K0ax?1IP2>?m9Da zF5kX!UWy+qR6rYLf`>{Q-FBZEyTAD(>wMz6q4A%Ut{F)SMU-HrrC1#x@ZkTAEA&1E$X4w{^LU3~i%JAAK4iUNCJ+VJ++LZV+B3X%F zAoY|oZQqp-;?k=5-y-1}nvV0e25=xJsWIa`^jcgaT&No9Yp9ns0JUBJiG&aU%;iM> zr$fql=T!z~P;&^NxFVL5j7$x%uIE>Q4nFLh!2t3=9Hb`bVz_3do_kns$FfGPq5F(@ z;ZJY<>-$)?B%D0qN~Tkjb*D^?KXG}r`W!8=&(+b#P4?N-p4xPA&Jl$L5yltr0y|@9 zJk@BD8Mn52V2bR(mp1R96+N{wRaE?a3DZK8pz?!aLpIv0E93vLAzJ>`)nh!CqY;CqB~AEE?!&Mv=HaN5}5;!3VjLusFTnMM;^Ms9ao#k zviW}NiTPQg?-+hs!U*xiMEw!swCj>NNBw`7%vGZA$3|GRZE85i{t@=*_7?^a(a27B zkuV*d8EXn7Qs@T?H@%Pc6?lI;3VlAjWXkPwSKANXt{?av-d-W$NBHh3!Cu_k*T~ni z?~dz4r{~zTz1|nmi=9Z~mgMBYi~+EQxTp5EtEb&JmiE8k^)(KH+l_}>SC{m*kNje5 zZvS?TdOmCo*1{zv`Ids!e4?Hr2j>!~_Upg{ z$bq?KT0P&fDK-P2{W{*W*ZN5!BQmv0pzDW?kt}PrIRl$XF85!q*S?p80S9%TfNwj0 zu3o9Ctk&P_`%;y)>TN-L|4ZZI?ysI%QXqVLTp~V81nrxIjWW|Ymb>{q98IL*8st6u zPx*{O9@jHw0;A&_$DO_b6?QAzpaPPtdFACPrnvqlzFVsD2p50Ig76{iHUx3P9i?tRUq@+5F^%jI{YwK2n^@IUu zkVsq1?pcj5y05p|8KzG1|3O?%PPDvECg=AAngfGOLV1cTb}n4-Ib^{^_@P=%N7eWK zk<))>e~9T9jVuthl{;;j+h*8U>$n)hibY|aJ`M?HMoYP_E=$27OgZk_^7sPJ$=$LH z*xVzw!9@I4A<|To0!*c}jTHchKjLLqe}Q;CKOZ&#REc8mmC0btTX-Qk7)bYHq&`^cvV*~t4Zwqdv7u*`p@TJXH^T6=f`-ymq#RD-{$L`NZ@6E zI&U=y%n7bdtW$IP+P<3xQ!}@+#Cbl9+RZK<;POj?C-MwhmX>_o3F&tqEcyU{m)Ha~Q4$;!L!5tGnJFhTGr&Nqw>FaI zS`T6O8H9zc{e4g1`vQ0#f#Ii%%`XAwzEFT1nV(zxaB_v}23sfjcL}lAuD+vV(%MS6 zMB%)D1mkQhbart$v${F*rhR_Mxkc7)x|Rq5$2js>Rl;v;c*RJw7pSKOf}F@+dEJLZg=fkERQ*5gay z4MZTKvsXV7_4LFmtIamJ8Q8h6QANI$)4*St=V9c3wwWeN_qr#LO{2>$9~F0S_!trr zGn}+>+q)kaiZ5$~WxuKX#=L#85Ayci)m46=r;?js_5&>H(rm^XH$g+iD&~eVfOMvz zp`rfR(e>YwYIR3fmNh>@zkLZXro3l2>1MMRWq|rWDSDxvflS-NE9OkCXYW)QK=r^j z75Y(d?FWN;r0vhH5BQbhHcTpxu@a>fb;^o2MSX((J z_VzdRM4TGq?l-UM-`JW~{ZapF*~_!Nv*9PymsETHG^gaQS8(MAry-obp)SD@7N<{78~d-v^y zlaXDuBReBWV>u%o(nJuPE!dNOan8JukNL#so4e-iPo<(fW4CHbyccA5>vo|ai9C(W zSrmdm;bj9y9vFzWdT`ub958A_y5>ei)bCuiX-6w%CA}Rh@vdoO)RCcyHA#v&!pZ5o zQyq5mEbj0Q&6u32ww4wRNh>HCnc#!{($xu@=R9h8o6~PNkdwYyoo~ZRdLJ@pE10n% zm&Hm8G(+7K+8lh-V<=m$`cIiy7EP@}bHnn>3REfx z{55#*vi^hMIA2Ru zb)=Z1#dWK0M7rryGQgK>woMwz&5V+PVzL3kJ)kI?n+^3d7%yB;@;!9k zZ0-=qn`2UhPsDL)$N{$>4PnohXZ`9_SVyg8zm5w~FJ3(DiCb<`*Z%Md{urcWWoWee zr1%s3s4)ezxRM{;Q6FiJD5%T$AIctxXTCIr?rjpeQ}3IKg8CV8fafVvf*t3aXb_2< zCBQ>ixVD~lsrusnz+~7qx?b+c%e-0vFx(=2=MZO#Amo(xoXTAEI>`aRVi+EdOwL3F z9iPHwG=;GTD>#vr^}u*R>*E<1#Ex`4CXFz zsFi1`dwu>ce_0y6@Mw;S(w}>B2_gdJ%pNelZq+hSa;bcM=g#%^+rT^sFn%xAWZ-3} zJ!#t>U;9TmVYQYY_wrUvN8|-Tcb0QDiGZLA1#D$7XJ^RnMj5W#lAUD4J@OM(4{q@Y zc&wi9g7*lZkgUuqIFq?jtXKO7-hMvf>sc^&R!~qu^bwdM@GRsU2VO;h>n~b%IF{TT zN9yNycQwln@GW*uv;dvb3De(CvmejtV?q4?7a;Lv0MNA;S^Q;czKY)Nuc7a#g&g{0oNkMwbnELf|j zbqOpyk0P9!Umk{-r1(BM*byCwl~a%NjvuQZ!5(A;rD0{yK5~sjDI}>vrl^5SI^@i) zVKU*!*e;_4eLiXRYRhM4_p4Z|_Ms1+t~=Q*wrpGu@ZW_X?wKF(jO;iiK!HRl9q(E_ zENEM#K5NuPT{nd<sL9 z2ogqH!EZdx6jvOA?BV;ytHE}=LnD)vuOcP~wQbwLVuV=3UdLOr>oysDR0;(upW$1T zgTAfHC@4q$bac9o`Ms;s&EqLA06xR z1k_v@iMd-*N>;QxlIz?X&6d4gciW}#II^RZ%=XLzeRsxy{p7N-=G(q!$kanMV0oa5 zOG;}QJv|;I0*G`B+(L3oNhE{V`)uXV78obkG{7VBqekYD@d^(i!+al@Dez(z?;BI4 zA0GZh&R4%|x;{4UQGYbBx#ZYF%TP|i^+jyGQUItRD4R1tbG7U14t^v*-4+#rWn^0x zQAae()ll>9(E^b5pU_>t%7khe)qepcS2xlFGS~IyAxwnDKs{ZM2AG>Pk5@8?PLU z_}(K0;w0Y#%WxGzSeWl_D?w?LN#sAWj=6ZA&DAt86S(pR4BtHsCMFlLt~y+l;0NY5 z=!V4!)VI5n4@{;QfOcq6l=HymWk`|nWRv*axfL8P;g=|Az{U0xjFP(_QjIw1;(6qB zjxf~Z=@h$!3L4FodeWRU00WE~Y7mnS=5b~)LC*49ABgBw=sXLrD5@ZIIfw6#qWRODnmhVc({I8a51hNzZM zfHG4%prT~C14kbON_K)iY*kw>{B$}I@cTPf8MLfdXncLR_DUQ%EZYm#6C6c(@ONRZ?Ns62ocR#Jd6`4!`Z6n;rf*NGyB(l<+diRt&l z*Ts4Zc=@X#M9T+Ifjquh!LlX&zP+u?htdZy&tE^}HLr^HXL8^Pu@1ygP>G^r5bbW7 z1#BZxf?v*_73tREq9#+8IW?|02&}Ek;Z8A{-z{W8bmfS{6%D$$;Y1RGfZQmb4VXaHfzD4c2<6YL)?DA+LEJdS`Ka49EKJZIi1$+dY$H zu{CjJL6}Rw)vC_L7Xf#$X7a)Ws}|{IMZFtJ6COM3%#KE#R4)Eo;g^7*n^x?d41gFW z$Te9wHr3LcweKEhbu;MK^&C;4lN8LVcHpm@-m^?EkVpPnk`mZ^!KOS>_AG!u`C!L{b!?AM4PH|i$xg)nD7 zWfEnnyJ5c|-!UWnHl<=RP57Asn;eAo3?!B)gZe4WtG&e^;>R`Ua?{cI^(ZKXrNWo^ z84IwN5X3|K+Q6L8VuwVavnoq(waL2`Yfk7v1$Xj=%A($#(GP$2W&dvqlQ0dTDRFPX zMO#JBj%Cs;k;pS3<;ys)!xmO>#@H(4R+f6f>nMVNBEvap7y8k#@TK$=1qsz69 zc}hdwl*z(L>Fke?ubqqLqBfAxQ%L^&?hV z!C1^6 z$z3NiqfG$qoSIAIiw`f%&b-qk!+*3+Vv!>M6f0lgSTx-i--2}CbGyEcp`kU1$*Yd# zda-)kLdw&8u#e>*wh1sErKR|Ca%bPmR-1um#?Fj4Tnj&5y5Qo|bW>`4ymdC5_(}XQ zY?q47PRhmpi3vf9zG-J3s8Md62W&0hJtPax<~<*^Mhh&|Z%3uvTm?o8)}^GDoZPRr z+VC&+_YuM#bK{#^M_OuL^o=}x?O*A+IF+vgk_Tcr!N{L7YM0eDaLhpNVm(8^Uq4^K zyQOsX=i(N?Gemp)C4p5=M>1;ID?&m~DH-}}`X0-3CX14NaRJKM|9Gn)Lypy0TGu3D&2H1~zy?%Y%mbM5 z3`c@McAMhF8fCG+ZJ(MhV@*3dTT`_xPi7vU);b9U^?J_DQ|6OzAOtAocREVDo(?)U z^T-?K#4{!*t_CS>j$ivT0F*^GEVru)bU0AUVxJ!@GkD2>si+H(lB9)S+Ml~WAnPA< zkdKK4x8xxZfeqO%j?t}7m_u3Uo9(EwpR>TrIi%USycj=i^}FF>m|_f=w#k% zfQQCiWW|d1TSsavk;e~$EBQ6+v%GNZ!yo58{t&4L!XPS!{C??vD$o}4O4|~SG$7cY zReJYyjdxwmb|6?fq%Bf6z|%b{Q%u&w8E-CJPRXc;k5F`;9k~@s>KZYR0Xr8@7m@dP z(Vb=?a1*2Qpbkn}oOy9{K=_%s9PSluCsF6ewKJyxX3k*x0_3fEZt~P-+M^$Sk4)Ez+KwJThf&xzbtSNpRa6`; zAa1@U=?{NO4;2GZ5MOc7nXP`Bj+or^1l1GbQiruWs}H>{94g_ekjWFuQv``9JjZLbn{6H_uTo)gX*;`F_2lLoskBw?KG@~rj6^faH0h;Bo7{#_QAI7 zV!*_?(h3^}qo~y4oT=+R7kCe}QDl`sL+{ein36XB*R?`@aq9D)7-)`L4ZvBA;LNNJ z@T9`RI-Sw1^x)QVH4-UYX|&Z=tN5su3DA>3{sr=|10oP-O$mMM=I8PPw?CNePri@% z;*pC>;q3x;viBb{m{xTUob>9|Z$YjGyCmBSTO1A!tLc`7x^l>uN=wf1mGpIp3gE$#Ql2t8#~w}Y2N`uQK|#& z6HcJ)Y;GwNOk2Iy?Bi`gN+=kodG&SfpKum10=D^`a_Qw~Ff-7YvUXIa?;(k~p>)5o zkz;FD*V$t?eUmJF;y|kJ0jzbhF#yKA2X0?u?Y|a5FyK>5!6-lgjBWs`PXS=eB8%X! z#9zNgnG|-{LZymboJW|vmTi-1F>+k@2I$YGiZn8IJLmCxcS^?u-06^YV-vXFhvm%_ zYi|gIWCl-*8ZD-MdTGeIu!@}H9aT3dO}U0bIr=O_#J79K+)Gh z+>A3V0EP^`tLPRfw^xkEp|Z*8-9PE=yY9TxqOAp|lLsF0d0)bwo5^z4{WRpkzIo#P zDHN8b4hgWm8f(A!&h`CK_j-FdXu#shFRmc(>TYgG?)K&Ap<|d1m zbh(NzNd)Opo|HEdJ3Dh0OpW7xHC^c$H~qcnsYZv0Lvh+mAb1A+*sgdcT<(tb9p{sd zS$`P%Q}%`-H~)jFqpUNf@B_43rs6(N(*0x}-5x~Tdr66`n`hI%Y4UT|g3;nr?3s`;vOKlP0T=v+ zcT+fE>o^cx>YKiJel^7})^g$L>XreUw5r>ns|S#8>tiJ;kwW2tW0|x9kv>?>E&`?z zV0_<5xwZ+=k@7W9F*>o(WHc46yBnG#!u`-%x6WPA%o#=TY@#S+wkRYDzRIkkgfm7- z?|--x-UIKvDS4T;aeq)0?|97fYr`wsE01z;jCMk>*9Y`6UE*+}1NzXeYITid4~IBT z$E=#v{1jk4AcFn^BnQx=T{3n0V{+*sy0A!FB8xz%1jhT!gY7%?wr|ef6|@ezJQeQ1 z%Jf)Vh7v%Vr-oa~fV;rZ5;Za+YPm74vUjEmLfHZQWoYQ@1Hrd8<;i$*FJ4~j*-BYM zgo2KdFRdWIaP}UCME1}YD_Pt9SzUMED~rBnMVgg>!cQJXoc(e;{3I`x-sCY3N4*2f znBC4<`0pO+BxmGx-CJesF|A@u9TIY`S_$LbB@VxQE-p=0_-BQnNmB0Jg%O42( zaBE&-?UY&-Ui3*t{R-$=Ou}jQIq0&^jM7-4?K=rQSb2e*A#>T9=o}P)`pgWA`H^P-OBmGgEPN?|*qeABX`1 zY0$H?yL;`_00TyY!=9O$S$J+9vYnHJCDq&ef7~U|LPv0M6##m!BTYTInq4D#@yX8q zvvatFh=|?Mh0=A@(6!!!d;sT*2>)RwCdI@Ch+-R|T71fzrD)-ADvb1k3qvLJ-o`VV zq*`&f9dyo`C)lPIzHO$CPe}!M zAr|LrxL2q9U$OSr?|%`?8cvM0c6iPc&lSZCv@@&$2K2v!H_qpqEBV}nO4{0TZf>9V z_8^BV8Sj8bCktv;)>tu;w9tkISS~@_Z_s(_N_2+1-YEN0Qh27*YG#Go{YCbVPQ^aR zg2a@dNmb#>CtWnS_BSAHBr zwQ2o%VN3jYv4e@Ff(~d%ulL zOjGw)4^WBR?4twma5(D@qG-I%8TvcN(&y(xw$5s7WCE$<al^oJCn<3wbyt|1&Pz!{%UBwkh_rkXRLWAI-up*BKe@9zdeszjS38K-8 z>W?Fl&eQkxZoBGtK6)ZO~E=)8J3!wGq$y=QhlaB%gUp_J0|XUYjzh6KFL_J zg`{$?p|CW7MZ_tO+@stest4Xm3#)B^UO!8x#geGrGvY#v_7Uuxq||c~o&EqNTI0By zm$DcYll4L&?QB$X;NjB26FvC31FYk2kdae$-Mf%7siC`(d<2iC<+Aa;I}F3MJZ{myK`wd6tjECTH zR*TvF2w=ErUu1>>(E8zYG@84r^_r?*yV`&_KgFQ7XBOAg4NEaM*ER36`P5$WodH|5 zba4P^fPQ?ko;(G3jS5Qbjwh!Dg03eEzh{fSh3h(O1XFA2jpTAdn#6dO&X;zc?wJg^ z?8%}=yL)+n@?N6%dpfk-Y_OcXgLtIXR#ns)aN)0D7#ZT!9L-ACpYV%V{ra^EMHJF? z&*G#^u|}#h%2XjX1`q=Kt^moj;3FVrV7YKqW@O#AZQsHJcM7!Cvzv^H_YvD zuCA6TIf{R$)h-NU(#6^zHFsuqzOFxjJX4>Z($dpMZc-v`!AlsgtxyiX=XuC8Jlvzf z-dvqn7zT}QW(;=UPk5cTkQP3qu8qh!v9WY!q?knXF63-nGtMKfPUdO65L(h!R@}{9 zmrnlKxY^X}$SDAy4K%!Wy)PS4JsNrUVDat|uz;D{mgWeE9dKk&`@U_F1$@asm7oU% zc6kyehHY^?vuNE{b?pl{|kfI# z$L6uy+zyRAU^*%%lQdf+k-JTp+kq63ah|%_oKwLGRG#Gu`)j2{lJU@U1XinM$*!%E zqDIdhZn_c*8*B53XkyFpHgiobo>PcbOzn^CY`e$W7oPR?m%l#!*THxTM8+ETHgTUy z8}$U)GJ1UUyB&MWh_Jing`U6Ve{JcGFQOTJ!OLDGDl8UPHX|}n5==xC`(@3KElMST ze_ZLt!LX6A{#dvOfhK_!h~LFrdiN_-|Cj z9ip1V1}@9((H*RX)E%74L}m2tcJm=|v=qp$j5xg!k&D5?a!^3`f@+Kq$yxn%da z8lI1w8k@&}gh-D{k=CzK5TnxlgoBG0k=0!lchP~yC3QCn2aimvIo3BUK`}as_APiA z4(NkMo9H6)!t@bVzC6v4_Nd*2qmo1D&7_&%nWp^t6Xy1*pFdR~1v)D_D9evGYlZ$u za})k4cdLJxwl~84XQRUgEqW}QzLjyfz~6MZy+!PH9j8?rE{g_njo{8swqXx@=Ii66 zVJG@r7;!23j(g;SGcs-en`L*HU%!|v8m9Jv^N)vu z$Lai9Bn~o9s7VwPGt6j)<=QTvuJSA`f;`b+=;(j7xtEAM9WVa$xC7>ae6e6)F@V*} z)9u^ay{f>k*ImI&BJ*h5r%?6a2(KfCQ)r;8f_}e#y#8g8{}S;^^zgKNHEACl@xd`b zdGO=0B3b>D7m@Zn@5a$MDQaR$I*pjBtB;xR&r`&R+um65tjkfZ@7EOo=V!qopM5d(M|t~B z`%`n&bZqBivaeS=hPFJ$Hm3*f)_1fe(Y^=AQ7@5t-jDZ1rKJc76?yBA0n{$1EEv6_ zu)8zU$owLUXEVdgEcu8cAs<{)Q~jdNcb359SpvallhCh4Kx&RBQ!cS~*X*Q?T#yrdKg ztk}2vQikMjsc!2%)X2;|JFwf))f`ND411pCKM;o7;Ug-&yILCg^GVL>8-BajCuC;? zSrFldj~`7RZQ}7AmNfG4_e0qii6jKR{(A&?2>nN+;{B;`B!+RwPj0@_AL{#&s7oDN zcBn*KQM)wWi|rSLB{SXRf*?%RIA65!z7(%0QnQUsnvPS_H@E^6P*BlnO5suoN~arg zYSH(fP_VJ7;Es%C55Ri-SLNHo3#w<>2wWI7Bj$Rgv!++l}v~I-ck!tr)+6g9+!X%BI;^R(~utk0+($lq|4jf&mjovpk#&3iil)hwp zUORbgZerFf!IGL88Jhao`uVa@@u1r75R+aDKA>$L_l+e=WotNy<1;*H|kdWkNSm=3~a2QyHB%#yZi~N!Ky%i?;Iqrsu}=q?I2>< zh_Y~mCJZ-Tjl=x4(Sa7PK$dd72NBJ}VmKx>Ic#Jl;#DQ(w`m?#24&>zTf+-ap zpHzSm`ljmN0&tPuA)Fih`t=4!NT?hR!43xMcf8u#OxdUI49V_hWRs3Ho3WCD_kcvY zx^vKB*YG;OdK{Yv;eRpqmO*iLP1oo^aJL}AA-F?ucXxLS?(Xg$f&_vS+}+(>65J)Y zyTf;J-_LWtx9Ze;>ipmbRWmTxp55K6*IK=|_)KnH9ol=O{NBO%%sVWongo&YL6?cL z^j@mK~bl)M{mgEmQhVp6*BZf!BMpfBD6SEc`yE4`IZ zy{VEUm=xTbfI~L}C3=5=;V16JAb8~~6b+4-;AZ>J2r=pPzs;IoK_KttSM_^V1d%~*!F%?vaSE$?_ixX4-;ljw`Xp+MsH+i#ughpPkczrHZik=X( z4M(^W6QIC)d=8s2{`%EFjt|fO3M`3!$VJ86B@aiq5&CL=6GJF9O6{<7%Yw&!gF?fW6<8e)78taYEnh|P z+;(#C^lj#1H_Z^6-w^uo<|_XMITypri;wT&D^X2tRJHGmg?Ifk1Sb7{7`-m#OdKK< zluns0H{4m96A0l00)b3`Z*WmUOg-o2CFNM$`$cUcRPA2s`~-Xu9S=|o&FGYLs%>(L zs8t?LH>95-Qh0E%S)i(bd+8?gX15(Vze!*NJ6eRaNe3zSsZQKE>o&ae8Qae9mS)Lo z!EiUlfMY?UYE>^vnJRhXN5Wn8+nLw?dM~^eAK?ddQZ6?|{R{cMmQtA3JH5dIx;>^1RsLxF)sP7W;DB7-r0?IO?(ao(+JC~u7vW7zB*P%ybZzxd zS5-4XgZktaA#)a3U}hB%hlS)Hg`Oc$Xhls!KtgJQfnCrx zM+xmZQEFiE#0JEMSae+(R~LgHgOsR)LCT2O+(w|;G(4u7u>n0E)Cb{5&1_liEZdO8 z;*O(fo=Fc{w?B_Olr3Q~RO=g4QCY+lA6+f_n1t$j4cc~I>AAFBjjM%8n9~#vu@0h?!s$Z4k zl?9OUoKN;6r|4}^X98^Trk7HGej=eBAq?|t4?^wzuxJ}rN95{?sZsM4#nCac+GG^6 zOv?rBtOGZ~c6F(0Rjbt4psW8U>#y_E)=qyzYy=#kr?B9nsH7yE%d61^+o1OV$uqgQ zf$Vrfy5E8~_)~Dm&+j#N@A-pXm4D3#3!4)yJO+}46pUVdn=WB4#t;aq{mvl+1`#N) z&87A)&u-&cjLcuUqUXJcrsg9~=A89JlOS5RZMWl`keLpXVi!7{@euY0I6No&7EpFR z#;lfQ)UhGmdXJ^y28>9-#^SZcrP`f^Bmm3QDY^FpRY*db{9n97uO~B5ZzUg}rXAQN zfCZT73=V!1SJnL;*0o!h0zKb8=>mh8x}*5$HcV{H{#k{*&pb!^f9^-U0d@5C-f_Z4TJ)uajSMNxq&=24?ZWJFu zLthaKs$!3D{)BLv`AnhD)Z&fww%E5?An*_A-J4TjdbzFida~W2<$D`DhEYjbNCB)b zLcbC|Zy~fv5FkW+t^@$q6&&2V(A2!aaU45S}a^(~u#`D1JS`-ld%3YJw_9l2`6TQ{ zmVL!(7uq)pr~{KY{n%6-7{=KvX%TKYlj_m_ zxk&R&wj4RbV=u*>6Zvh|Jz`a@w&Jt&BU2>1!}qskJ1fy+wl1PkJ{`wS8MuM`HE8?W zpAN$LGlJ=s>9cE;qLF;%U|?OvD;4Ciah03&txSQmfUiw%(0|zJaN!8Yr_J*XoX{nu zH0u9BRRA&#^J@)aNPdl&5Ug-FmQk;>u^ILkp1~lXxj;Aw~;wYHgas^L7TxT;tT@=0jweP*@Y!7gXvuL_YE|jHfg-5?q_(q zVt);LW!hS=mQOxqce?UYRD@!Dy+2{yC=#w$RkKCR-k18_s{=l)4(!@sjF`y#pAz45&aJx~;A554(j+bTopZB5`O0tS*$mwSHr4#s1v% zM;uPk1>f^ee0pzK10v7{&MF{;gW655NNJkts|DF-pBvZ#amcN%-|PZ~(RBpm1EED| z>@|}@T6D(79}oyX`ELq;c;)RZ%SK>A_nLYz2}b!14zwNbXhx?cF|gI`50HieIy*@L zG{flONGT(m^t5Vk;0!I3R-M-KtVKn^&6j?BFMvGBwH+e5BOx~`e0k-K$LByODSt(T zDSdveh(uuWH^*-M_WY(!ywDY?ijl>z*bB%Bh=$lusi~s&4h>&hKjuPcYdawjV)}3P zf`dS*nxaki#5h^Lu6XiUJH4~2;Xp)O`{d(8fGa1rk^xI6p**eV{X6>_D})2}4aRJe zU(CYdBbTea&{sk`8N7M?&`{^|w0*YXM8TEeu!Y+{ADvz~=FSX_`nfcT!A$>t&f>A=Pd=w3DvmP+zS|Q~$EY)JHv)Ak^*C_6%)}9qd?E5)%L!-GGh6*ph$>+=GtS3 zo>RZl)b=>mmL7M*d|I7!dChGe!Qf6A<2F!{XW-*=X0ZgY zeyD65W_+<;^@60b@TjW!OU%;;zuBExh1oEc)(pet4Ke*PnN$JG<*l;kapI|LS+jjP zr`kZMYAI_1z}R@wz$&*hmuS15h+Xi}2bat!IQ1H}gz{1)(s5&B<5%VxyWUWig_;L& z)3M`_sx^#;Y&so!=%cxqfk4PG;v^}+XrrFAhXV6ePd_(FYSxm0lzT0m(`sI|7&Vt( zP0e&@gxa(f@f}BfOO6?Ze7q_3{YiSN#)Gaj!R9f)=m?`sMRIeMqJ#WadyCv$i8;Cu?P3uFlKkiI zAv|g2RYGNu}(;QNpc13!!oRIh%Qf{4!&!sygEbw^xm$7VYTNX7k(T?aNSojpp|vpp`zE7 z5>rxQD=GQBzp{u35FRPKt?~(W*;dxpAY3b_yn%@%TN)KM{)zGSMw`2Q{VyLEBZYhOPm})sM{{ z6_1%oZ>KP!yD^^8a}43dcy(cXOsZY|L@ZTW@|}_Yv~>g_t1f1-dJj%nk;=4{EdPAj zdkFZ^u#;JH94{_rUen;O&!YL`6;v7P5C2~;K%NmfuLos<`*P95w&=(aLa#((mUwL6 zvKV44Ydtx)npa!(&DW!mxi5m$R3?#^$c&Tdzf$sW2V{ODl7_@lG~%a>C2AC?I0qVH z7mIoQN&eZHcAV0-^HVuNUA>_oddev$dQp)@%wDF8hrz4j+S62g{1e_E5m{FmSDopr zf#lgxDM`rMvj_Tu`9-3ESB}bwUr!c(rcNWC1u{A%Hyw#4e(8nR8Yd32<0V)-I~8hW7nwXpSqsT4E39Resrx*}ZuZWYpH6== zd7Y)qcpSG{4Xnt#`J+lpeQ9|4X)_!fvHy6%&!#61BNZU&OA*QgHIKt)+%F zR~IcJk<;^-kA-*_+H^BlKNZ;M8b={^y!x9?qVEA}+OcFDnXKNx{@WYqV0I7dRd&-{ z3R6;wTT?Eo`5C3vpZn8W&r_%>i;P-%lg!`KkcRPDA>B*+ounfYi}#q??!dSib>(Pd z!j;`^XLZ5c*TJuY9|4Q9rjLrAVm}_QZ&vEdsV}+f620l&nw5-&1z9QYg$*X7H}1pR zZ4Il(DDVhr^3$F%Eh%#gXv4cf|Z z>u+z^9dB<`x(SWe;~L6VCDH72@+W&E*J~<9)xkJ?M)1mtIZJ0Z-rY}#u@>vg9pMr*sq1eeQGtTNK}24L68Oe^a0!M#xrpBFnB#qwJx4`bO3 zo63TCP%Um&DL8CprgxWVoGqUSq&8H_pZr0!PH7j>Ayb9mwSAD{N0d}Lbzxf zP^2hx9EYH+*v-iQHpck!$b=Bq%jkcJtgIaBal#t|Y3aOq^Rhib zBeRkPYuzXab40%)V^Z*ThqXH{kHmybU{WxNw+rRndb80Hd?*8=C*jB$EV*>fhkW6Y#)MC>Gg45M5ix{=)*^M?90~yPx zdZu~R1lEMveb2+qz+bxgsmBpMbyMzOULaqMjcI!A%w57ur^2%dGAFW~DN)XM9C^b%|?!*x*#ws>ry4H7+>)J>q&TDnt8}WrHd-vv2y9t7ivef*EanY1BCti*N&p;+@`KHqqn2}*LH@)@!W-6y zW!Eia(}-_xG$qAS8BWzX8alzelYV`niL>sCnRAY|f4aJ{*bL(- zjJU#=wZ!{@>+}B%eI6P6VeCq7`>tznY2E(5zlF}+*)-R{fyz{!)Xk0yO)544&dvGu zy%V>Q1v5t{UA5A3{3x_yqSVl4PS+S8$TE>k86(wa6~$V+xPOXu=&rtmP-@q=c9*p9 zOv?j>d0O!mXj%qOxF@SEWqB^Iq)}O@uu*;5TrTf?6)U#531F=;1rl4q!EsZ$X<2Is zrV&F!b)1iupjKNNz(5k8l~!8czyY{AkbK4o^;IrY)U(<4XPj6LJEJ#)=0ZL)V2 zin}u_eDUhmcmw1YO|YnW;3BGdeKyI4ZY(T%Mw* zigPIG1oI=>4&^HW+5&wrr5Ptg1AH1U)-;kAE<6I^6lyQDGX&@}|7dUOsC?DND8GV| zR)k!K-2U<(TwSh~t}cN_-;V#l8RGr(_}{DmuE9;0SCn1H#&+KTL60_ko1xKfojN$)5k230Av@MqW7sg-* z4#_XtidMq5_#jNzlc6|2HBB__FQFxKk+g)4?zHjTW~C&?oVn=;Sy~d1%kIY(slU{{ z`YugXdvejs!%R~!=!M%KC@}-Hf|#i(s*G$53ffjIm9o%uLwUVeBR+s^E7da+wb3=` z{3-n)A=H@n_ICd~G?&MxrZP!MQU9F_245RpAGD;QD-|)aq(@VBvj2N6T(;^0T%QGj zhXietQNFQl`+;BHtM0Dq!}^K{t{(vXroG(G3by&9^h{b2bBRw+*;4SVf`+S!0qD`> z#g2bbh*oX;f}_)Ug;3fVA^xwb<9vIiAo}z@(vmb3+Ap!_ah z63M}I2u}enjAK^sPF7Q1u_>D?2%08;XCd<$)mM5Q25M~dLa#xXX?{=p9I3y zy+*qu1RVV6yI5KV@Ngd?zSE)GHQ@wU*ErBPkB#3GBM#8nBLOq$5+UgP62 z)i!@{H5x7$>6QyTTH@N zz5UR>zbx&XVww4{J?IkDo)I$OrGU{u-QKLkfrv3jN=+M8fIP$E%B@GZ3JD(I z8Msm}tEfQ)30u<(s5sjLF1;yCx~Nz`{38;41%6D}x<8%p(cM0kkpbfF{b6a&{dw0}01z)}@7pt4z*^k&P1zZc2wU_K|#C^TJP=0vLgRZ#2`v_SL4I0h%C~#3D7u%KW zRSuJ)*9W@+7eU;;VnzIWT?K7Jg9XCs@yZH;cY}AKcG}zx+LoA#&qnq05cag~FEo$&#p z9HE!eN3IZO5<8$n4(8gWgoQqd+5IsW6sP29|0+h^@wW3RQkuGJ6J(QKzHwv-?Pupz z=hhh1oO(HLfhHtj^&>q!s==mQlm9N$JnVm{R5Ixe=s-_3yXlKN;orNNtuBu&B6i=k zx*ED;%Nlpf62Yf{fhGYK7+hzKu{$r7$IH-lCVsa0J4q!a4cGX*EB5}i)q#Ug%wk6yAzt|_l1_S_-K)*#!iQxc<$9$ zNx%KhNKA&9`cMYrQ%)`jxX!sPte+l*^qTaAiG5fN{Y&OPU6oxEdf(WiWhSn8aGH+o z7}h)$VjnWMN;)-&e3-oagmA8`Vpa0Jq_FA71*{U>t-!4ra+om;;Zf@TeigPDRI=r2 z1^trSd|fw)U$lN;2Fdk1qOFpOvWun4UUw~KCFmN39)8}zBgDz2pY??suQe?)+egGz9#oqss)M&i; z(q}{^6vT^ya~k6>N5A2yeHLKm<9W7Y&!JJ5&F^~J5s71W*1M!i+RZX+J!I}Q3-Ma4 zWre7t8=S(<4t_R@ck|BT>shx;OrKXcl~Wo<5HH%Oh|q#bqc)^?f1p-BcR(=_5>4WpiZy; z>epNFev`!Pc-djjLkPNC+lRDMf9b?-WE1>bhzNC0Rf4($)8g}dIf)o@4Zww!yiXR* z_uk4fnHbS2u)Ow<)@WKKRqMh0uI2&M36BG7Gk-KyvPFK`cB9d0-VYxHhemWVmT*w=9y<6etsRj9v1IF(|odTKbo&G?&+!d`PdJ&_62jx)vq< zyMwrl9{*-Ce)(GikR0P^e)Odq~Ig6>7Snv9+()s#=3%Bz}_dtRlhMuN3{0<)l8?(xnII7k)o`cENa@f?6L ziMU1xfga=CNv2jFA@1u-Wke1MjBGS6$r;&E;>o*~{^631U*|ipB{(udR1=sgnYd|KFGQD1YT+hy)zuTONE|GL9L_7 z08*G0;0FXNo17eichUM}dGccCheHvXG}GHl$N6QANh@o6@1}i~vxQ6c`dm2{qm7n) z{=BN0gx-mVO2&`CXP7jgkwsCL#MS@yEAKLfBd zgjoFX?CBG^qhGiEGXMuT=m0&bbVmOK1!GYmaX?6k(jedD@}gSU$jG&}_Zh>XX1jMd zHg1R@(`CR)=+%}i&-iS5nGz)_r$!2#odWKGH2B*m^@@V6mpeT}pkE*z8;eH8*$f&A zKeWnra+I>aT`?}xb^8P`BrqYS;V^fCB2DaNWp!^4Ma)mJvWsSUFETw)E@4NC-w25x z#qanKNyY((dZ=*cy6B2Nti5YZ-;iNI%99#lM(0K}ib*=x8}_;_cib8=!NSd|`?-5L zOJ8LubB@PI=n<7PJ`k+m5?%?YM=IuVYHQMv;YSU}PpgR!fp7jRq3lU~eDW_5XNcVN za!Q)V*7*G9jSJH5MgnA~O?&(1U23~H%7Pf8PQS>v?zQW75Qxx;5b!)M)tM$`Tl(uc z_1xCs|5Yca>YqGlt>$#${Vqi?TdawrY3!JmnlfjKX&rrY6u7b*{MVv1uHaUKgud@F zkCP*#{cQ&u8c&2%t{b6phjFtZ8l6eC+x1(PhE|}T##@>;BVQFzr%@lPxajE8Dx5X0(!0fz4h(gO*U^u(3f$`|!-+d3W8Hcd=?{+}kAN@2W!zJG|Zx{VN%MI5)1TOfdZsK)~wmm00EU(nE)t1NFM z84-dS*AIh`@Y5G;Wh?CgK%mWrk>%@&pxvO;b$t*6{dgcH0lW`YS3r~D-4jJjd-Oa1 zvD%Z>{(_{+iK5C3SwZD3rA23WxGVDGEHXR0!M(k~wRyHW!_p!tg98Vsm$7W^IPzO^ z*V+>Jm67LmMnt>)qZTvY{UgU`G%9kW6D0;(A$6U$Ck$=hb|~%~PQJ`JtXQ^@bqLuk zg>QsUltXbdy9b6rWKqz$O-^mvjA-l1E2-q2x3F61BxO&Nb38 z{FSFR`F6=e2rFM>ziCR{fZrB+c}e}=e`l5PgZVLd-Fqzd0uD2=P$;dlR1~2)Dk>^m zzyo^yz-aNUyqpu5lkGY;1Oxd;%b)^OLbq8Kp}46Us*Xjb=FQ8SjXaqr^#H#JXd^Gt}`oOJ}yuXWUEXSSE{R5rMbD+ z)FPbA3h8ewd5++TmMm;Hkn5gkv}J?6Q{nW~GZ?DE4?iuZdqux7qJg^nd|u&&V@+KT zW^l62e8<`*)LkYkBg-OXp3kjmI{Y5#01@TlBzk=<44I1;s3h@~Q}=0}0QB_WV~Y zi4iP^vxv>R=hdl@eox2-Lp!xoIi?oOiE$`w09s_UGQ|cQGBJRKnbCNT;J+5;l`@sg zN=`73L!?X6$B01|PY-B&5G6JB;6v2#Lh}=K=I6bxr4fWp!!?+*ZA5YC05MMmGylvk zTf>aX!_3b7^XsbayY<*!?X%;-u&XCx#;*KslUbZ>iYk4Lz0#IFidpZr6X4cczwmyg zbdCpP%-213Y+PJ}=O)|zkB2#zlJ7F4OUK-^W@4?5VR_D8FaVDsTUr+c5;OkWOtd#fWKPxK>(*pLj-Lb{E zlVyr7iNQBNiP62iy>P@MeQ_-;i`8<_CRG&TS=*Y3UGdAXC+gi&OgMVxPM;@-PXiX!Z36iZV|#qF^q2R5}2b)>JWe|CQ`c;i1CDV#wdPqM_qz|6$YC9FUTXnC^EA_V>5_WBFoX%+FwGz~cH(VTncBeL3CX z0ZOc970N;o4}J` z<-|I&;)JP6;;K>;ZI~6DQ#TQebz#7uA0$Xuphz+X@&S+ljwI$#`%DJG-rHs4;6E@s zX=VAAdtj@|%#J!BalkYlM5UfOp;#;<?F0ocB>!knNNKLaE4<-aHUH3NaqKeeo)$$Qej?y0!oMkd?X zbSpppe;{AC+90Y=@GAgx)>pR5+u691MZGB@%+gkkVQ}Jny&O7SB=ScdNedF-fycMW9jY42^5gqN#U+H$%<}Mna4VpyXtkk za4*U+ImCB6N31lh*!(BWp|e)6J>b*-JQ2tUGC5Pew{z;4OUzH;T%g}Y}M0U74#j?ke_bB z;E<>bFYRjebDF1NlC}0_N>+Qb}o~bchR0)sKc2up*)WnInVbRUs&8_$Fj)vvotr*1#JcgeZ*kJxJzQE#0a`ztGG3tt>F z)to-4V3bRD)3%I{j{`{f!Mbsp5-IFMB^%qhrEySqyf4FGlr+t^#Gg^Y6tl#Bshpxk zW#7BTCBr8Gx7ekVn3o%O`74qH4Dq4kjwLnV?*+KQJV+m6Bk z*?D>3x?HWqpZo9u*~Vh->^|m1nvG)Uog-tjpdON+PRGELkQmJ;%p#~KL5slfdwoIn zUGhQ%c1sFhJ_Xl3XU!@mv8Ae#Qbc{)Ti9hn*bTWneW8Td)pKhgfkye z!M!P~lv1{%Mij9B*9!oqc&di6cM_md!Z9pn4^ZE3 z20oR}MzgC_7PDe3&1;|-#PpO1wYk0VfdIfoo{>FoiHJ~R6%xIXent+Jz#+^`A7Y6IT73N3mtLXq>~S-KWC2?e<2h~R ze;0(cK2+%G6FhjL_=w7uMYk`{kX~eNxTfk4nlR1=0Uph&kfxy)IH2~cTOh63cgY%nsKE0DbnZbnckX=!^; z+vlrHSE&&8&!QG2WswU|b}Ib4OaO~aMF{<2M8dn5VXYDn`XQLywjrDDJKT~nG zpU&30((jP6v#StDLtnk_1Oi@qxb&^wY5K%^om2Pm`B2Ld1q`C1Q~U0@zO@PPt6i~; zRnAQg7joDrzDImOp9RJol%>PVc>aY83cG*bLgy4!O50aM8@k1sh!iu-aBi81Wt zU_>=NKGLsxN7^-H^aqKjp4;vD@5AU{pPnL-3g76ZlSn(iIlZF>JA|%L2M?FUn;D#% zLP~6f#VG-o{pChpIJnXC+vBY2-84lNEQPs@0xryxAi|_!7dIrXveUom z?E=BTf*^)qicGF8cYAsqi9c*tdb_aNfB z>c6{ojl$eQ!bu&yEURjHIOjBG8r)aKOnb zZe%eV`U8F`pta2nc~MlP8t4{oWHRkRaz5M$2Ke3X#bG77e=ubGo z!kuf~byPWUKhSq7{ktrIjb*}0ksVSMHM%1}V$tk|TFb}+T>ZrYIF^`f6;MC|BuQI~ zQ9_@2CVDo}?=Fa_;6JJwX~2%5{ME)k$C{cz-8CKWG~@v6@*}^*HTO5p^5U;bC683O zSL8|Jw@z1`{~12HF#|l8D4(_hhF}OGpjwKq+Y14!lBtf~%SO&J;+*A_FZncPfW2=< zC94P|4KcL_m0R1cm2mx%6FbIIVKGQhD16reyI^N6;c4p47Y3P-U}5Mx9dHpf>MhWb zs#o%hzIB{1nSM1(nT7@znN*1&Te!J$!Fzim-kpFEt~B5pmdFaf>=0L5D&sO%yCv)z zxL`@<`t9>C+pmyPkF-OE1#ovemxhMCP~N2%jP?8Z`A88BvK_oQ{Dp4_pp->daSA2*eS@uVjmCp;hcqNyW9?+F&*Lt9dyI3RCxoh-Hg-~e z6+`o#zo4ExtZE#~bV{Vcecn6k2`Xby)Vk3*Wk$k`hjD%eS8Jo!I<2?~&$vZ*wZ@+W zv?0*_y6)ziOc#(4HjZigjx`PKoobC*>4biMCSyguC`5MvYK4gC&i-6JB1vyMDt7h~ zm{_hRLhnYWbZifxF)14hE!c*cORBjt`7Svj?$PrIo@HjHeChD|ln z`~y8!<@KeQN)to+F;Kncs9#?0_!p|Tndi!J5p%xH-@^r)ca>{f-1{zz0$zc!RD2}< z7D4S=I^9PKS~?H+qw=Z&Eb_dMQ8B9#_}t_GN+te;%58$>YMs{Qiu(z@^)JZPnN!efTtz&xju`1IBh)@|64g7Oi9RCu++kj{d0?fEZ?8iOYyPeQ?JdIE||iwig6`dL%( z@88riS!j{p4BUX(rr>Ws07wrH>tJ^&TcJ%-tr3|r%zg1^0vm{EE^DP@x#I;k!Qw9S zhN5k)sN*)Y73s0A6F?nuW*L6Qm8rm_f4 zEEwy8?jBFtCLMS>7m0a9XaVSv{`aZIAEb1VUfNdgV#aVnATg%2!StHgmUA!74<)NsiOghhxrRsymJ0qP; ze!lt*%kQ%Bds}yEJa!NlDa9nG=NWz1!4(LM|DuPv3W~VJk^3~LYw3j$ z#;$Zll*awvc@%drMV8D6)DfCK07p9u0ovYNIYG!+83`~QhreFN9RgPQXn1_2+r^T9 zrYIEd%8IeZ?rJ@+_Hm73bm|*CJ3Gy1a?{?y!Ppbm@K{IJ29d`op?3bbxrrsb_-?&$ zgx9<0T;Kzt5twaG{6a{--^BY}E5i6?Bey*apX-V9S8XQ?p3MPyWiZM~s|O8Y6rXp} z37Z5>4-2ahAoU0d^MFAAxNdK#8cv#mgM$&?=aAas*!6s7k?ALrY2BoORjZ2Yd3K)Z zAEjETIRQUDzSn4@jC9orUu*H8KpdS*7g@I_JYM8N6$_0#1DDn!p{n^^08Ev5a`tRu zcLV+~4m@Sdr{8o4$|2u-)`>?Jqib^AK{7$3j)-MljhUc;6AbJ$*D1Y(VAgrKO2gas zMG%NI7PSNUnE(?CV@-p!`Y*AscLO4S;hB)2s$j;?DT#2V33R4m8|t?4%ORXbdMIz z+(O|Mu>TuDt91h_muJHKGEbwweG=< zgmW?=?@yz4gvXvkf&rI>RbLooOw!CW3drk?+)!1k{BOXIsOeUmh2Bxh* z{^{vx>AZK?R&$v`rUfuUIXHl)8~8F20fyk;xstlL3ZyAwgkGZ4KH=j94@kiP`uoRH z!z#4jNO05g%^qYL^%q}8MoOz3`Xv@L(rQ=HroZ*9&{5Lx>6(o#ZFVwlx)>IdA{u=L ziPsBANzTFpwk9FN2{#mVKIQ+B^zoW>Jjd%WCr2_3S7IEBzNvvg$q#hG$cD(ttw#DG zb$AY%;?*oRxD&erLGiF%2pG--B8|n^2VbB}p{_lrp(&W%47a!46zQovICpJOgOPpQ zdQ$hsjm#d2TmRw#iJwIF8W&sa71k#f^JT;CjTqSdR{w1K+Pc4nb7PES>1((Se&hxN zWxV#Tm`1l{j7`m&)vE-=vPQPH&&&b{piI6|abQG!O#hljN}2{0dn3>{9uS@O;pl%L zg<6fKH$HAW5z;GW>(lJ)6Lmd%R0;qC7tF7yYZ-nhLec~UeWAI^;uHxl6Ram38&KmP8S(FY1^0bIynk^64+j0Rk1`|KJumI`}gEF|E0zN{QzOXW~(Nq2FIICPOBvbRSJm{VbB*8_4 zIY6Ictw99%x0S;F{|F2FE4sjPm4oBA&!b{76dK&LCBskrth>jYpi0tZI#k5(;VkiK)lCyAu$Az^u4lC~@w<#Nkj%>DLgsILGUGwG zx*cWr2ynIR*>&f4P{Iiy|6bM)>y`)*4J?L61z}*}A~}I2;0T>;cyE(yK4Idj1wMFh z6M2o2&`J_Q=CEXtC}@!w#h4HfAJtK4t0-GeJB~_PD~#s*>sym`Tf;{xa{aT3vQ-Y+ z(ZTZsJjrg+;huB_{`}v!K<012^xz|89w{vS7}de zax#Cq^XKa9YCOawaW3)8!d}kpSH~X~V^Mk%f#i}o!98mwHy_)a9w*D1&jo`{5?WUJ z&syKm+3UlEhL<`eBNDZRGDU_;4w->M*S02a$Z3m%WOVD7JR{uCV8HUFp+gS7JB&o3iUF{)~l8Z%BM$YZ+?)F6E43DM6k9GLq(CW3tK0h<>j>$G( zTh#Z|KojDPA644@?Z=wGJn!93j3o_Lc5rbLEG$h5B={%vPU3%H$z)pVTzf9G&TGur zEi!XB_BC|W)NJ%3Yl5a8Y$W7DtBqqu!%;Vg?~FNGGkJwMJ*a>9`s{qL3pSS(Mr&dI zoI_LZ$=i7>wP#oPDiGfgh$}Y8Vr}q6dJb>HUJD6%<@?AlCoyV#b!Q@i(+U-}viw$RZS>CN-HJ6s) zU-a@myOL4yr8n8;IO?~f^q4{g1pr_5!;>+3QY=ZZrY@J&CyYC3`AM^0K(5-1(^po| z5Hk{j_$7Ax)!dT3xls~0KcMyV`YML&p)&!)vlD)|Am8&-x%Tic0|tah3AQT{kbk!Rg<>KnTd6CemKk zR5+5D;YzMFlV3QcnfbQv?XDE{1IZ(nNp|g(@5{|~Sm8cn#5y)S!!Y1w^e|E%#va|l$(*)e?E*GDcFVc!aIG=joGyzKdp?-BVQTzN9RF22#8Gp`* zh(0*TV(QGmv$AtpN;;Oo8yv^K+?_?JIkB~8mzegGtLmK5kKkpLqol;@-uDJ|ccnd; zU{$zjuOdfDN4XA`p5F5NV`#z*JD&e_G`N}_$Hd^z{nNj&++S|8hDT{kwt)D}Tp`rg_Ylyn>&VNK`2L+_c${vhmW0T!0TP0*~J}KFg1<|MuiSMeT5Zo*{a(w^jQ8aP}TR zQFXz(sEQH<1qCEX5Kxk2Bqt?G5($!FKqTj!XGB0UC}GH;AUS7-C?Jf)kvK36AZdo2 zh8*wa|Iaz^+*9{ez5A?^LV?BFd-q=5{e53|?@CL+mZ3LWb`}gdFl=dKb@orN2r5JA zw=e!;)?~E;M3r}wA-n^9!_~OA_^P@ai)xBDoyvLkSBE3Ue%Rn2#Qf~nzLX)CO=+;j z*`9#8Q9n{r%rHYlR$Cbq`+j(Ejit)KGn%$@J5o!_cOg_?{jOjU!{EM}LTe(7YPtG0=nr%v zmmJM3GTxa`d-}wK$rNmHgG2F;=ITAaEfj?6F;3(b8TK(e8L#b^_KYh7dgAfE1JC4d zJ%j9;g#{6v3EdZy6|Unh7RjpvYkpJ_X&*wh?kb&fSQ9yC1$^WTJjruxy};jfK^J)J zMr-ouKh`k}{LHnkwMOkW?ZZiUzY9x0dHW)3Eezm-~qC-w^&D32xbKI@Ay!1hFGGs~e#CHMIu zms*{j7Y06a<9p2scaG*{;u~g9L)o(QyAw1_3q0tUGCrl3RQ>y!ga9z#Vobjr=_>=8 zQjjy(R)Zbo2P@Qso-$FuQKsunLgL{0F7pk2YLWX*o;47#d5!e0iT-IfPo4$g@b}DK z&ZPt1h8*sag{jcRReE~aSFU1nmmVS0jHjP?n80W^M`n%)ljRG}c^6X#Cmmf?ewpFJ z!f{TZoTKXpQJ|=+Kv=_7YiNx%aZ2FXJ2g5+-Ydx6;hQFn-z=x=1szZxX;D;l^76O8 zq@iMvrp-h$Cw%hF#OpcVzkQ32yqig(M4{*6`A*x&{`7?0ymjXdtrOj7*kkzq&2Ra- zi0|Z7lWkXYjDa=jeVp{e^Fbu)v8>Oko-+kW-(`CwE1J&Rj_$IEQ`ZsyOvas~TM{0( zt`=ZyjTut@UayPj2sUt-^obXlJG}$k*Rez=p!ug6AN5ii!19F)D|6a${9Sh@-RZ8D zI=>hu+E3Pyqu5NT{}GQhHBj>P72@S-3gXE;PmFzP7}4=o-Ki(= zM7*)J>Rxf7h_ybJWD#1sVN9Ex%P(S`#7i~TEu%!riW|YJ1Xji~%zr}AF|5aLjL}PH zpFS$ZN%bMA+VGzYutYBhL&^U>`sPwR@zo@?8&Z?J*L!j#ruP-xeJQUlP}4Nqt#01% zcazy!tyXEd&d^lGm$7~6@@Pbul9M%TuHU2zu~-~05m3 z0Pl~PY!2wR?1=C2p5~)NDj>v-$WeVGcLI%zrxqNh&*dGc5KRY2H9@*cf8v0{iMM6WzB2pTqyNJQK ztqQ>)5LVvymf7Rx(F_X3n8dkEHQ07riSN~gqt+jd@VQ1<^IH?{?(=`(Eb$kNjE(d7 zi?>{kE2}E!nmj9AS;i*ySJ)&TL%9Wc{!}*3g%FX^J0g!e#jC11GL#W|fJxDh%-7P* zUd~ml+{3@zuAldaBWbGT{XLfs8^!1MMm>3xHE1!F7Tj_^%o@Mgl`3A&yIYk>p~iy} zB=y$gEb&l*ljSJ*9c=s}Mxa0H8uiBKHK+LD&Z6mtgJCscWMof{rU-{kmod<4U!1M5 zlccg&J+zYVUasQ7(l#Xfwb{3ZkzMhS_43XB;_R3Jc3BVVa=z-Rhg`qs3^nL*RrAmkoFk_)!fGNR~h53Z%gGskX=^Fcl4~dBvxqh5$&Zor{|e3 zxq@Eio5LcamEs}estVC<`o3EGKjXZ6$lIjbH;==3eu?Zn($UILImgrqR_t1xrr$V* zo$e04oBK0f5_lzJSXS{~eTcKI&#?2fg|Wy{=e)W`iOT8z6@7bDhMdUu*4;dcvU&Ml zCsR@3DB`5#E9V1m;`uATtFTu=

    UFv#P0!rEN{)gnuKFfKw6jXXUCsfTon=vtJ)Ku_{ zDGsft3bhjD<#t+OzrKh+#s7$I(Gqr6U+lF;e)(!351c%#vD;l=N^CSC

    HqO!ort%i$vz+dQ?J1 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≫fZOQAnh;RL^J4>VjH+!3Hi&lL@ifDs$f~2n& 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κ)N2V}?>d&%d&8 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

    ;L897##I;y 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 diff --git a/python/utils/training_ai.py b/python/utils/training_ai.py deleted file mode 100644 index e492ac5..0000000 --- a/python/utils/training_ai.py +++ /dev/null @@ -1,25 +0,0 @@ -from my_player import MyPlayer -import engine - -# ai = MyPlayer(white_side=True, path_to_model="./test1") - -for kiwi in range(100): - print("KIWI __ KIWI:", kiwi) - ai = MyPlayer(white_side=True, path_to_model="./test3") - game = engine.Game(automatic_draw=False, ai=False) - for i in range(100): - print(i) - ai_move = ai.time_to_play(game.board, white_side=True) - game_is_on = game.move(ai_move, game.player1) - game.board.draw() - print(game_is_on) - if not game_is_on[0]: - print(game_is_on) - break - - ai_move = ai.time_to_play(game.board, white_side=False) - game_is_on = game.move(ai_move, game.player2) - game.board.draw() - if not game_is_on[0]: - print(game_is_on) - break diff --git a/tests/prev_engine_test.py b/tests/prev_engine_test.py index e641acd..fd7a42e 100644 --- a/tests/prev_engine_test.py +++ b/tests/prev_engine_test.py @@ -1,7 +1,6 @@ import sys -sys.path.append("../python") -sys.path.append("python") +sys.path.append("pyalapin") import engine.engine as engine import importlib diff --git a/tests/unit_test/engine_test.py b/tests/unit_test/engine_test.py index b9ec56d..718143c 100644 --- a/tests/unit_test/engine_test.py +++ b/tests/unit_test/engine_test.py @@ -1,7 +1,6 @@ import sys -sys.path.append("../../python") -sys.path.append("python") +sys.path.append("pyalapin") import engine.engine as engine diff --git a/tests/unit_test/test_material.py b/tests/unit_test/test_material.py index 395c88e..994334b 100644 --- a/tests/unit_test/test_material.py +++ b/tests/unit_test/test_material.py @@ -1,7 +1,6 @@ import sys -sys.path.append("../../python") -sys.path.append("python") +sys.path.append("pyalapin") import engine.engine as engine import engine.material as material From a147b2f23485a36d39fae1f6597338f256069559 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Sun, 29 Oct 2023 23:13:44 +0100 Subject: [PATCH 04/15] ENH: AI player small optim --- pyalapin/engine/engine.py | 74 +++++++++++++++++-- pyalapin/engine/move.py | 9 ++- pyalapin/player/ai_player.py | 69 +++++++++++------ {pyalapin/utils => utils}/images_creation.py | 0 {pyalapin/utils => utils}/profile_game.py | 2 +- {pyalapin/utils => utils}/profiling.png | Bin {pyalapin/utils => utils}/training_ai.py | 0 7 files changed, 118 insertions(+), 36 deletions(-) rename {pyalapin/utils => utils}/images_creation.py (100%) rename {pyalapin/utils => utils}/profile_game.py (96%) rename {pyalapin/utils => utils}/profiling.png (100%) rename {pyalapin/utils => utils}/training_ai.py (100%) diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index c180810..c5df05b 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -413,10 +413,9 @@ def __init__(self, empty_init=False): True if you want to start from an existing board. """ if not empty_init: - self.board = None self.white_king, self.black_king, self.all_material = self._reset_board() - def deepcopy(self, memodict={}): + def deepcopy(self, light=True): """Method to create an uncorrelated clone of the board. Returns @@ -427,12 +426,14 @@ def deepcopy(self, memodict={}): copied_object = Board(empty_init=True) board = [[Cell(i, j, None) for j in range(8)] for i in range(8)] copied_object.board = board - copied_material = self.deep_copy_material() - white_king = copied_material["white"]["alive"]["king"][0] - black_king = copied_material["black"]["alive"]["king"][0] + if light: + copied_material = self.light_deep_copy_material() + else: + copied_material = self.deep_copy_material() + copied_object.white_king = copied_material["white"]["alive"]["king"][0] + copied_object.black_king = copied_material["black"]["alive"]["king"][0] copied_object.all_material = copied_material - copied_object.white_king = white_king - copied_object.black_king = black_king + for piece_list in copied_material["white"]["alive"].values(): for piece in piece_list: copied_object.get_cell(piece.x, piece.y).set_piece(piece) @@ -442,6 +443,63 @@ def deepcopy(self, memodict={}): return copied_object + def light_deep_copy_material(self): + """Method to create an uncorrelated clone of all the pieces on the board. Light version + where only alive pieces are returned. + + Returns + ------- + dict of Pieces + Exact copy of self.all_material. + """ + material = { + "white": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + "black": { + "alive": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + "killed": { + "pawn": [], + "knight": [], + "bishop": [], + "rook": [], + "queen": [], + "king": [], + }, + }, + } + + for color in ["white", "black"]: + for status in ["alive"]: + for piece_type in ["pawn", "knight", "bishop", "rook", "queen", "king"]: + for piece in self.all_material[color][status][piece_type]: + material[color][status][piece_type].append( + piece.piece_deepcopy() + ) + return material + def deep_copy_material(self): """Method to create an uncorrelated clone of all the pieces on the board, killed and not killed. @@ -498,7 +556,7 @@ def deep_copy_material(self): ) return material - def __deepcopy__(self, memodict={}): + def _deepcopy__(self, memodict={}): """Method to create an uncorrelated clone of the board. Returns diff --git a/pyalapin/engine/move.py b/pyalapin/engine/move.py index 235e6d0..488000b 100644 --- a/pyalapin/engine/move.py +++ b/pyalapin/engine/move.py @@ -337,7 +337,7 @@ def move_pieces(self): # Sets the different movement related attributes of Pieces self._set_moved_attribute() - def is_possible_move(self): + def is_possible_move(self, check_chess=True): # REFONDRE, particulièrement, faire en sorte qu'on ne vérifie chaque condition qu'une seule fois # Why castling is checked here ? """ @@ -439,9 +439,10 @@ def work_future(curr_move, curr_board): return future_board.get_cell(king.x, king.y).is_threatened(future_board, king.is_white()) """ # Checks if the player's King is threatened after the move. - is_king_threatened_in_future = self._work_future_to_check_chess() - if is_king_threatened_in_future: - return False + if check_chess: + is_king_threatened_in_future = self._work_future_to_check_chess() + if is_king_threatened_in_future: + return False return True diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py index a91d186..cf59173 100644 --- a/pyalapin/player/ai_player.py +++ b/pyalapin/player/ai_player.py @@ -164,7 +164,7 @@ def is_white_side(self): ) # Keep only of possible # Test letting this test in _alpha_beta - if selected_move.is_possible_move(): + if selected_move.is_possible_move(check_chess=False): possible_moves.append(selected_move) return possible_moves @@ -337,21 +337,19 @@ def _alpha_beta( best_move = [best_move, p_mv][np.argmax([best_score, score])] best_score = np.max([best_score, score]) - ###print("BEST SCORE", best_score) - ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) - if best_score >= beta: + + if best_score >= beta: return best_score, best_move alpha = np.max((alpha, best_score)) - ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) + return best_score, best_move else: possible_moves = self._get_possible_moves(init_board, is_white=is_white) - ###print(depth, "nb moves:", len(possible_moves)) + best_score = 10000 best_move = None for p_mv in possible_moves: - # p_mv_ = pickle.loads(pickle.dumps(p_mv, -1)) p_mv_ = p_mv.deepcopy() p_mv_.move_pieces() score, _ = self._alpha_beta( @@ -362,12 +360,10 @@ def _alpha_beta( beta=beta, is_white=is_white, ) - ###print(score, p_mv.start.x, p_mv.start.y, p_mv.end.x, p_mv.end.y) + best_move = [best_move, p_mv][np.argmin([best_score, score])] best_score = np.min([best_score, score]) - ###print("BEST SCORE", best_score) - ###print(np.argmax([best_score, score])) - ###print("BEST MOVE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y) + if best_score <= alpha: return best_score, best_move beta = np.min([beta, best_score]) @@ -406,20 +402,28 @@ def random_move(self, board): return selected_move ###print('No moved found, aborting...') - def time_to_play(self, board, depth=3): - board.draw() - current_score = self._score_board(board) - ###print("SCORE:", current_score) + def time_to_play(self, board, depth=3, draw_board=False): + """Method that must be called to ask AI player to move. - # all_possible_moves = self._get_possible_moves(board) - # sel_move, sel_score = self._select_move_from_score(all_possible_moves) - # sel_move, sel_score = self._search_tree(board, depth=3) - board.draw() - sel_score, sel_move = self._alpha_beta(board, depth=depth) - board.draw() - ###print("future score:", sel_score) - ###print(sel_move.start.x, sel_move.start.y, sel_move.end.x, sel_move.end.y, self.color) + Parameters + ---------- + board : engine.Board + board on which to play + depth: int + Tree best move search depth + draw_board: bool + Whether or not to draw the board in terminal + Returns + ------- + move.Move + Best move according to board and parameters + """ + if draw_board: + board.draw() + # current_score = self._score_board(board) + sel_score, sel_move = self._alpha_beta(board, depth=depth) + return sel_move def _score_board(self, board): @@ -441,6 +445,15 @@ def _score_board(self, board): for piece in board.all_material[self.color]["alive"][piece_type]: score += self.piece_weights[piece_type] score += self.piece_positions_weights[piece_type][piece.x][piece.y] + own_king = board.all_material[self.color]["alive"]["king"] + if len(own_king) == 0: + score -= 1000 + else: + own_king = own_king[0] + if board.get_cell(own_king.x, own_king.y).is_threatened( + board, own_king.is_white() + ): + score -= 1000 adv_color = "white" if self.color == "black" else "black" # Negative score for opponent pieces. @@ -448,4 +461,14 @@ def _score_board(self, board): for piece in board.all_material[adv_color]["alive"][piece_type]: score -= self.piece_weights[piece_type] score -= self.piece_positions_weights[piece_type][piece.x][piece.y] + adv_king = board.all_material[adv_color]["alive"]["king"] + + if len(adv_king) == 0: + score -= 1000 + else: + adv_king = adv_king[0] + if board.get_cell(adv_king.x, adv_king.y).is_threatened( + board, adv_king.is_white() + ): + score += 1000 return score diff --git a/pyalapin/utils/images_creation.py b/utils/images_creation.py similarity index 100% rename from pyalapin/utils/images_creation.py rename to utils/images_creation.py diff --git a/pyalapin/utils/profile_game.py b/utils/profile_game.py similarity index 96% rename from pyalapin/utils/profile_game.py rename to utils/profile_game.py index 1a886f4..618389a 100644 --- a/pyalapin/utils/profile_game.py +++ b/utils/profile_game.py @@ -1,7 +1,7 @@ import copy import sys -sys.path.append("../") +sys.path.append("pyalapin/") import engine.engine as engine diff --git a/pyalapin/utils/profiling.png b/utils/profiling.png similarity index 100% rename from pyalapin/utils/profiling.png rename to utils/profiling.png diff --git a/pyalapin/utils/training_ai.py b/utils/training_ai.py similarity index 100% rename from pyalapin/utils/training_ai.py rename to utils/training_ai.py From 0334dc6b8e869fe2cc6602adbc453715e444b76a Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Tue, 31 Oct 2023 23:20:54 +0100 Subject: [PATCH 05/15] ENH: can give player as argument of Game --- pyalapin/engine/engine.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index c5df05b..9253de6 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -961,7 +961,7 @@ class Game: game_status = [] - def __init__(self, automatic_draw=True, ai=False): + def __init__(self, player1=None, player2=None, automatic_draw=True, ai=False): """Initialization of the cell. Parameters @@ -971,14 +971,31 @@ def __init__(self, automatic_draw=True, ai=False): ai : bool Whether or not to play with AI. Is set to True, AI will play black pieces. """ - self.player1 = Player(True) - self.ai = ai - if ai: - # self.player2 = AIRandomPlayer(False) - self.player2 = EasyAIPlayer(False) - # self.player2 = MyPlayer(white_side=False, path_to_model="./test1") + + # If ai = True and both players are None, AI plays by default black pieces + if player2 is None: + if ai: + self.player2 = EasyAIPlayer(False) + else: + self.player2 = Player(False) + + if player1 is None: + self.player1 = Player(True) + else: + self.player1 = player1 + + elif player1 is None: + + if ai: + self.player1 = EasyAIPlayer(True) + else: + self.player1 = Player(True) + self.player2 = player2 else: - self.player2 = Player(False) + self.player1 = player1 + self.player2 = player2 + + self.ai = ai self.to_play_player = self.player1 self.board = Board() From 9fd66ef32c5c007b65bea0da5b281207fb7eaa60 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 00:18:50 +0100 Subject: [PATCH 06/15] DOC: interface --- pyalapin/interface/interface.py | 144 +++++++++++++++++++++++++++----- 1 file changed, 122 insertions(+), 22 deletions(-) diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py index cf99006..e9dcaca 100644 --- a/pyalapin/interface/interface.py +++ b/pyalapin/interface/interface.py @@ -12,11 +12,14 @@ from kivy.graphics import Rectangle, Color, Canvas -from engine.engine import Game +from pyalapin.engine.engine import Game class LoginScreen(GridLayout): def __init__(self, **kwargs): + """ + Base class for a Login Screen, not used yet + """ super(LoginScreen, self).__init__(**kwargs) self.cols = 8 self.add_widget(Label(text="")) @@ -34,14 +37,56 @@ def __init__(self, **kwargs): class DisplayableCell(Button): + """Base class to represent a Cell as Button""" def __init__(self, row, column, **kwargs): + """ + Initialization of the representation of the cell. + + Parameters + ---------- + + row: int + row coordinate of the Cell + column: int + column coordinate of the Cell + """ super(DisplayableCell, self).__init__(**kwargs) self.row = row self.column = column class TableScreen(GridLayout): + """ + Main class to represent and display the board, as well as to play a chess game. + + Attributes + ---------- + path_to_illustrations: str + Path to the images to use to display cells & pieces + game: engine.Game + game to actually represent + ai_playing: bool + whether or not an AI is playing (only one of the players for now) + cols: int + number of columns of the board + rows: int + number of rows of the board + to_play_player: player.Player + player who should play next + first_cell_clicked: engince.Cell or None + First part of a piece movement, used to memorize the first cell selected by user who would like to move a piece. + cells: list of DisplayableCells + List of cells constituting the board + """ def __init__(self, game, **kwargs): + """ + Initialization of the board display. + + Parameters + ---------- + game: engine.Game to represent + + """ super(TableScreen, self).__init__(**kwargs) self.path_to_illustrations = "illustrations" self.game = game @@ -60,9 +105,11 @@ def __init__(self, game, **kwargs): self.cells = [] - for i in range(8): + # Initialization of the display of the board + for i in range(self.rows): line = [] - for j in range(8): + for j in range(self.cols): + # Alternate cells color for better board perception if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): color = (0.4, 0.4, 0.8, 1) c_img = "b" @@ -78,7 +125,7 @@ def __init__(self, game, **kwargs): path_to_img = c_img if piece.is_white(): - piece_color = (1, 1, 1, 1) + piece_color = (1, 1, 1, 1) # For text color, could be removed path_to_img += "w" else: piece_color = (0, 0, 0, 1) @@ -93,7 +140,7 @@ def __init__(self, game, **kwargs): piece = piece.get_str() button = DisplayableCell( - text=piece, + # text=piece, # Remove it for prettier results :) on_press=self.click_cell, row=i, column=j, @@ -103,9 +150,11 @@ def __init__(self, game, **kwargs): background_down=path_to_down_img, ) else: + # No piece to display piece = "" - piece_color = (1, 1, 1, 1) + piece_color = (1, 1, 1, 1) # For text color could be removed path_to_img = c_img + ".png" + # Unclicked path_to_down_img = "down_" + path_to_img path_to_img = os.path.join(self.path_to_illustrations, path_to_img) @@ -114,7 +163,7 @@ def __init__(self, game, **kwargs): ) button = DisplayableCell( - text=piece, + # text=piece, # Remove for prettier results :) background_normal=path_to_img, on_press=self.click_cell, row=i, @@ -128,14 +177,25 @@ def __init__(self, game, **kwargs): self.cells.append(line) def reset_game(self, button): + """ + Method used to reset a game when clicked on the reset button + + Parameters + ---------- + button: Button + button used to click for reset + """ print("On click, Reset", button) self.game.reset_game() self.update() def update(self): + """ + Method used to update the display of the board. Actually redraws everythin from start. + """ board = self.game.board - for i in range(8): - for j in range(8): + for i in range(self.rows): + for j in range(self.cols): if (i % 2 == 0 and j % 2 == 0) or (i % 2 == 1 and j % 2 == 1): c_img = "b" else: @@ -162,12 +222,20 @@ def update(self): path_to_down_img = os.path.join( self.path_to_illustrations, path_to_down_img ) - self.cells[i][j].text = piece - self.cells[i][j].color = piece_color + # self.cells[i][j].text = piece + # self.cells[i][j].color = piece_color self.cells[i][j].background_normal = path_to_img self.cells[i][j].background_down = path_to_down_img def finish_game(self, winner): + """ + Method used to trigger a display of the end of a game. + + Parameters + ---------- + winner: player.Player + Winner of self.Game if the game is finished. + """ popup = Popup(title="Game finished", auto_dismiss=False) popup.bind(on_dismiss=self.reset_game) @@ -182,6 +250,18 @@ def finish_game(self, winner): popup.open() def click_cell(self, event): + """ + Main trigger when a cell is clicked. + Works in a serie of two clicks: + - First click is to define start cell (or cell of the piece we want to move) + - Second click is to define the landing cell (or cell we want to move the piece to) + + Parameters + ---------- + event: Event + Click on a Board's cell event triggering the method. + """ + # Reverse the backgrounds when a cell is clicked, to indicate it has been clicked. ( self.cells[event.row][event.column].background_normal, self.cells[event.row][event.column].background_down, @@ -189,57 +269,68 @@ def click_cell(self, event): self.cells[event.row][event.column].background_down, self.cells[event.row][event.column].background_normal, ) + # If no previous cell has been clicked, then it's the start cell that has been clicked, + # In this case it is store, waiting fot the click on the landinc cell. if self.first_cell_clicked is None: self.first_cell_clicked = (event.row, event.column) + # In this case the player has clicked twice on the same cell. + # It is considered as a cancellation of the first click elif ( self.first_cell_clicked[0] == event.row and self.first_cell_clicked[1] == event.column ): print("Selection Aborted") self.first_cell_clicked = None + # In this cas, actually move the piece. else: start_x = self.first_cell_clicked[0] start_y = self.first_cell_clicked[1] end_x = event.row end_y = event.column - print(self.game.player1, self.game.to_play_player) + # Try and move if possible the piece validated_move, winner = self.game.move_from_coordinates( self.game.to_play_player, start_x, start_y, end_x, end_y ) - print( - "Validated move ?", - validated_move, - self.game.to_play_player, - start_x, - start_y, - end_x, - end_y, - winner, - ) + # In case move is ok if validated_move: self.update() + # If AI is playing, then trigger its next move with time_to_play method. if self.ai_playing: print("Time for AI") ai_move = self.game.player2.time_to_play(self.game.board) self.game.board.draw() game_is_on = self.game.move(ai_move, self.game.player2) + # Verify game is still going on + # Actually we consider that an AI cannot trigger an impossible move here + # Maybe should be modified ? if game_is_on[0]: self.update() else: if isinstance(game_is_on[1], str): self.finish_game(game_is_on[1]) else: + # Can we be here ? pass + # Verify is there is or not a winner and if game is finished. elif isinstance(winner, str): print("WINNER", winner) self.finish_game(winner) return None + # In this case, game was not possible, reset last clicks so that the player can restart + # and redefine its move. + else: + popup = Popup(title='Unable Move', + content=Label(text='Your selected move is not possible, please, select another one.'), + size_hint=(None, None), size=(15, 15)) + popup.open() + + # Resets values befor next move row, col = self.first_cell_clicked ( self.cells[row][col].background_normal, @@ -259,11 +350,20 @@ def click_cell(self, event): class MyApp(App): + """ + Main app to use to play game, by calling MyApp().buil() and then player. + """ def __init__(self, play_with_ai=False, **kwargs): + """ + Initialization, with precision whether or not playing with AI. + """ super().__init__(**kwargs) self.play_with_ai = play_with_ai def build(self): + """ + Builds the game and the display board along with it. + """ game = Game(automatic_draw=False, ai=self.play_with_ai) print("game created") return TableScreen(game) From 819fd2211be85f345756f437ec7d523d50af031f Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 00:19:41 +0100 Subject: [PATCH 07/15] ENH: Game can have players as inputs + changed imports --- pyalapin/engine/engine.py | 10 +++++----- pyalapin/engine/material.py | 2 +- pyalapin/engine/move.py | 2 +- pyalapin/player/ai_player.py | 6 +++--- pyalapin/player/my_player.py | 6 +++--- pyalapin/player/player.py | 2 +- run_app.py | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index 9253de6..b62609c 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -7,11 +7,11 @@ import copy -from engine.move import Move -from player.player import Player, AIRandomPlayer -from player.ai_player import EasyAIPlayer -from player.my_player import MyPlayer -import engine.material as material +from pyalapin.engine.move import Move +from pyalapin.player.player import Player, AIRandomPlayer +from pyalapin.player.ai_player import EasyAIPlayer +from pyalapin.player.my_player import MyPlayer +import pyalapin.engine.material as material class Color: diff --git a/pyalapin/engine/material.py b/pyalapin/engine/material.py index dd68c03..4c06f49 100644 --- a/pyalapin/engine/material.py +++ b/pyalapin/engine/material.py @@ -1,6 +1,6 @@ from abc import abstractmethod -from engine.color import Color +from pyalapin.engine.color import Color class Piece(object): diff --git a/pyalapin/engine/move.py b/pyalapin/engine/move.py index 488000b..718cd65 100644 --- a/pyalapin/engine/move.py +++ b/pyalapin/engine/move.py @@ -1,7 +1,7 @@ import copy import pickle -import engine.material as material +import pyalapin.engine.material as material class Move: diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py index cf59173..11705c4 100644 --- a/pyalapin/player/ai_player.py +++ b/pyalapin/player/ai_player.py @@ -2,9 +2,9 @@ import pickle import numpy as np -from player.player import Player -import engine.material as material -import engine.move as move +from pyalapin.player.player import Player +import pyalapin.engine.material as material +import pyalapin.engine.move as move class EasyAIPlayer(Player): diff --git a/pyalapin/player/my_player.py b/pyalapin/player/my_player.py index 7aafbe6..b9fc20b 100644 --- a/pyalapin/player/my_player.py +++ b/pyalapin/player/my_player.py @@ -4,9 +4,9 @@ # import tensorflow as tf -from player.player import Player -import engine.material as material -import engine.move as move +from pyalapin.player.player import Player +import pyalapin.engine.material as material +import pyalapin.engine.move as move class Memory(object): diff --git a/pyalapin/player/player.py b/pyalapin/player/player.py index 2f19212..d775a02 100644 --- a/pyalapin/player/player.py +++ b/pyalapin/player/player.py @@ -1,6 +1,6 @@ import numpy as np -from engine.move import Move +from pyalapin.engine.move import Move class Player: diff --git a/run_app.py b/run_app.py index 5557084..51d23d4 100644 --- a/run_app.py +++ b/run_app.py @@ -2,7 +2,7 @@ sys.path.append("python/") -from interface.interface import MyApp +from pyalapin.interface.interface import MyApp if __name__ == "__main__": MyApp(play_with_ai=True).run() From 6acba1b6f8d8162b0c006bf439f42e92c6e3782c Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 00:23:39 +0100 Subject: [PATCH 08/15] ENH: deleted profiling file --- pyalapin/output.pstats | Bin 103993 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pyalapin/output.pstats diff --git a/pyalapin/output.pstats b/pyalapin/output.pstats deleted file mode 100644 index 7bb7d6796e469f0ce97991d029f4da1331d55d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103993 zcmd?S2b5Gr_6OX+ByvXGm>m5yPshn8O-I z7j-c$?y9S*<+4FwS?*cRu%QQPZ#L)~#E& zZr!?d>(&qJJEV(iRlLfoj%EV*FI{5(QUeQB2mFweB!lZasP@k9@3V^czheARhW{t7 zKoSW=+EoV@=zrTSXcuj_xP3#1Nc$VxwbQ>9)D$i#Y!`?YE-s36h!jK$f7gCNakL~_ zytrdSryB!jqMZ4wbM~(WCtuvq1tq&iiXz34l1TB5g(tRO&}~6?{MMtPCt=*!Zb7eT zaYOGY(#1V)Y`>sSq}`mrz>dyq+=1=W-NN;C@tSa*RT+w?@bYx~u$5^C z{4)hiNQ8kqr3)(KwJXyd5-Stwg4%H1qI6NXwl*4zq`O9A3$0jmkp3rKWd1Ff7_Nz? z3l=ghtW{R5E?rm=535MJTRavGEsEELqOr<&B$_U&i-)SBvGh(g@nz9am5SGdD&uh# zv0~x6Xad7i9bOq#L(<)rg{!Ryev5=yGF`OXip8SJDKIqMrOv8}h5(H<(#2s*mn)Fc zorp=uN`&IE^#QdHIwi^0o$BkX>cn6(>LHdIgpQVstcgeJtD~bxh(tdmC4rK5UD|hP z->s-yyKe2ewCjhoTf2hx;FC^-#>5Uh{pl%}_55~}eb>;;edA6JmL(Md$VYHaTC>xt zg6N89rKy-%$%+lN{X71!Y<8*r<;WRV1zB-@hpl^z1T|JgWBsj~+PJE#wkigND&q0F zM4bxPj>?c>)4PN!!`0QH~1!;yi78P12y^+@b=LU zI)y@d1VW)qDSsWpL>JpSxwQyjH0vwt{3wu_(79H_uC*$cRFk1SgzKzfADtiXSwePD zKU^KIwPM+fp4WrPT7Gzj4x@Jv9>yE&Q0<3l`d_+ZFpWgY*XvMzh}+JK39Bypo7!;Y zlJLT4VsNa!rgr6Eut&_Q3x)iB&~#aKa$B^x4D-o~$MQ9}b!KZDT%3r<1}7@Rl&=03 z%&^S*Ra$6?YFpc8obr;*bSl!?PUYi_%D9R)!yaAqG@RPnX1OAA;q#AF6B*X6QbkcR z6j>Py*I1Q~_>8u;`DS|!IiZvli6-(PwzZ;d+O2_V0+Ds-5`Uv+h!?d@qZney0Z6gR zx|OxL{WZgEwOP|4HX4Fz6i(!}ZMxltZP!=T$10(&#j31@ev+G2VMc5F4cK+j6?MzP zDuwPv7Zx3)u?`I`}Trja)39F;|x z1C@)SmH8)rn@AhBo2ay~aa!bOeZ!emt)*x_(JGx?9*N>+{SSoK0^ z=KLpbvy0oJzo4$NRU6Ajr4{$n+4Q!$Et;&2SFeo4Yp@F#oXz^1H*=~@cr4pye(9Ad5>?H!A?(8a zyQ4~FX!Q9tHfx;FhY!o!?^bW26H(}YbvYbtbdy$Zp%>MJEB$C2ZfP~zi^7RTmoiwJJYN zrnOdpVg-&?hN0`^C3%}z8*0LXxslD=;P#qmv^96I{--HK$JCg)nbW<*u@S&jc?5ot z#13R$KlqUQOH18MQVnxHy7kwye#a1u%usqmAs>M9@OvYk-08SdyYZSA9(e2P)us6W z{DlB|h`7#4YwW}I%!_1-Ei+4W7eKo zf&Q=+`RK>AD{Rj3O4<_)QAUy|Ozg%_-hcCh6J~mQ_D27ucd{t>G4GQ#6}0yW zq1D4)646Yai6FuGgC0yD$26{aevh99FE6!M{C0ZxPE*eCa*X;j>o(9O-gNc0Lj(kYa1Ks(E4n`~Od3Kmu> zyiyK=FzcSH%@51|kaTpU(6bkcm*8J$qCu(n>8^skGt zvNp$k9ndIx^bb_DnAm0U^OpX+|6ELLlkte6EN5ZfwAzr8fLy7J*VN*a1p|;d4rqgu z%`eIv3ba}kjKUJe@#PsQ_)AWTV$tOxrPUmTBh7&I8j^J95NR8(tAljT90Y8@wDR>Y zB>c`HW3Q}DMC&8*P))R^0&?6rbZNB|AvJ1YQz9*_2=OTnMPc)uY5M)o+QGF158yG)kGuVB%`4#**!X^&cWx913xi-C^#FAFUz$(pj&d zP*@-Uw1%Y;z%sL1@W)|gxOy%un1a8vK3Q*(2m1OC8qM+<#fhT;(#k;U={G{lX2weG z{v)k-|9qaDIA#wk)nOzERR_O#>7+3DbrwmE>G(ZbvzXW~9{AW>XZFDPrISgjJxT0h zB;e1_0muqqJDBb$oJ}P%(_4R&1JcXb=)~24qz*$f_WZl9-{+ijlcn~aWB*a{>b>`2 zkzps~V^IAKn#OUnhs| zp+z`G^D=zqc=ll+8pjZ`E4n{rLq`u>@Bq}c{@qLNJZEsFK~VPx1kNf@MN~?v6X>4E z^f3To2WI_k)lR$Y0d3J_l8SnY;zvJI6jj9)OiZXf5#KB(c4}sq_6MJHY^j^^)JD@X z=ww#47h!5Cs(;;squB#}j76%oTSGNEo*6C!{wp2QX%7njAzh}ww4gWzMMBA0zd>zl zn^>##DOWfWp%93~E4gX2!jPlsemJ&=*oIGrEdL>jd#j?pE}Egn4(6(Dt?bNaByECE z2$H?J$q9m4^TKU`0u6XI)(Y%1x!CqVXW=(d0pqD!iM5R93Yk87oaPJTAW8RwFs$N2 z01p>`(QetInE`~gGmQDzLRCg{3U>7rJd_2yLTYB)6fRKW7sAe~Gnp8swUD=>lq-9N z^sx>`GL*0u!VRY$tEHYCP@ytIS!)WDOOap}OvOJL%9V7dkrAANQK=ZEQrVB{FUYGU z>?y^*f7%seIU!$Q-t`0!i;3Mh>BiJ22uIq%L|XWspfMC+x`-pv+` za1xnSoRA~gq|wVnZojH0B-K8TbalE<)kFOOb*Pxsswj(?^-KluEn`5jT;?9a?#JBT z$o(3-8Zq|9~yEBh|3&|r4x*JESaD; z$E%0;92QDXOkIF)riglsMRv{B=X5esNe*x`{ZIgf&%-~N(^%M;I;r3#64gFaXDQXlVlC^~c+C{Gk zS{jO6K>y|QcVI4=Ue2yTemw<(3YE;XAQqYK0OnMhjcr$&vZN-QSmLXAFgQ3}u*`}s zcjSS=jpdH$kO`;QlXxxVspm80rv#ceZY zc2gxZuzcp)H$EK&bIWsGc7O5Z@y#oto#13@4k-M%Zk{*2NBv&F)nt$^QL8HTyS&6oZsJjZFAAN`AIM>MXTM$tAuYXE_*=^y6q zGy-j#Oj14Td?Wx_Ag`q1!f4;ws*U?SSAM}HSSThOx$|4=Zn`_SZK=APldq#}_4Ibc z({{i2cm6UlHi5P~yteemSp@L1x9zO@4$47cstdzS6vKA!)S`gJ#J+Oqf(QCu^+u_i zf!PNTG82$s@$Kc9eO6hu+D~&-ri`@X9M1G)j@vA;^EiFI9)q0j>6kx46)WqaJjO6( zwvKP@vL@DYt3Uhs3$eHf3EKV%|5!`dc8Qh1(G|>?8TKEaWK;hx@>=wm8P8u`wFI&X z-iI}?mwX^SmpWDhScd!26``u?@WO;6E5w!}Ml5X3>8u;_eo>31w9=bkv1mX!pTfc&9ObqLQ~ek_#s_L@8yJ95?Vjvaf)o~ zOO7pk;K@uGqgfxzCZ8t`qB35KKhY=o^>yf^KJ?_*ePLnnt$*_C^+XyhOD~sD-6|_q z#a-1xt&?>pcM+tH{p z-j6@>&cQE^Zgnp5VkJ%Y!NxKgNrb3Baet{N&MIkUYpc)emWNdgj3bK9 zA3(TtmjuK}brhFEu-$QVhP9+?ik}M-Kt?ku?L9{S**dAUGDFS{IUTs4(z~VoH6>3a zCEh`j?pUqr;qeb9a2T4R!0O6xMaF7OAbR8oCjBN zvvW8qV%(_dTf5WB)hD#D9#=N7AH{}9apr;aYO^l37sqRNHr!29%Auq1A>f>aZ`QH! zju2rdJ8);VwTW$#d+w|+2WMj=P{jQZxR>DWh%=BU0sYJ-BrN*C(IAMwu#pZ{)R&YXE_* zNP`Z5D+r*M>3)Kzthfw>4NT@Gd{DIHJEmGuSw@41=}ux`WpfEx`u)mOK@&WB{55>j z=uW4V+D;~^jt72%sY|;PId%F8WRgy{dJ}N$GJ(EiyjPYbWZ=9)0_f7FHr+5d`O;Bz9oKy0Z@t>;}?IJ!8Y1J4OHm6$~$F#AGd+oy>ut3ZVdi zRInTqyX@>oulmjLIQgA5^`#Dbommecaeg#YT?UA<1G7T<1$oXJbC2RDx7)9QWkh%J z^)NO0t4B{f|8Vs1AA8H*nx8ndFlA7(a^eQU4QvK?@dMR zB=O=-0^=^~6jdY`TFpro)<+)e)ak`=3?X$wVwl9DqN;fQ_F) zrU?itl_NK$R1humFi0PwVg17%ezk^89ISf?g&d6bLy7tdBU4tj=_;(vUwN;dw2g6w zQZ{78>x{9=dW^m9K1Y`1vGEwZ{ymH4ejF^)KWj9~S`J;#`45Fn$C0p^L|4=*?C>(@ zvdYD%Y^N@L|J-}O8wU0^nWQ?6K>5)DpjHtFcZP&3D6MK)iizDg?bS}Nd^@Go-q`iD z^*0nf@n~630}Jcy8i+si;2DQ z`bjhPk6|J?nWVbRLBwh6P|AnSINZX$JrU2DeT0j)p5Iyx!fy128 zkM#9AIrWC;GPG1&9Kdi@g)8eqLHuusoVe**KPRI*T4rc-lkCN1+aSMYEWufC7Y;!l zJ>rU}tYxrTI`f9d{Msf|usCkTG%IuYN0(Ni%H{4sBlRL)?QFkaVG*{mCS$mWA6-VggmBFw z#twrwQebY2i9PbF3qB8jv%1v&qOtRai)LKs@F5}S_31(`?1M;yAQBhqJ|F{3>pVY_ z?U)a0mlsA(-1N6KunkmQcmM8xS_`Q6kZf!+r&o%Kb1iCr0S(Y%Vn5w`%g}#JSXt_3 zlIlU$-hz)96dAvAHeZZ&hX;|4-25Z4^v`U6Yck+yYfUlQVgkawblVkmb)|NB{i697 zJh;q@X|~r&wldmUxOK^|J0m<6UTU)3EiQ^yq$L@s0xXEIsD0g~TVF~@SC z&F}F~<|riTLVW^%0m?eR&*krZXsmV`(hEv7k(s2cbN`fo|{VDj8P7`b4BxFqq>UCcY|~cN8B^{%w-x0DKLx$dYB^_ zF&9f0$VY(Dj_6RPX!RF2#45p+b#ay9-aKn%P_6|)&EW?QfP=!#tllFlu89k_YBEMu zPGNNsb26&WxH&PZNjcdenXw#?@0kTiFlO|Lk_*(H)5>e^0`+8$f}?rhZ!xhC*?CFj z|JIySYQOj0=B4i}z7rfRsx&_a)eY#cPZtUt^_zXp`{z;cE~vhw?)gniP@HP1R-4ha z1BoS!8G%*Boa~?fiLP{v{@f8+Vh-rXE^<;i!YwlvzhLcvlUjHM_gggmWhorEw(RTf`@r() zWHia71VNDBGG7ryj}TOkia1m+cuOR3I~Q;|fEX4NyZ>qJuPND$ZXzaQ;7o$V1sEaS zeY7KqTbOGKRPO;*$8hK}zxsgPzZ|VPRj=S?qN{OPGX9;rdA?uI@15n=fc~m>Lt{a; z9Dp!Tv}8zP2S(N1ZQVSp)PCcQvhMfRtl$OutlNoRk6GFwpY;R8yePB)a}B{Tu{ZAZ z*ZtJrj|bT{Oxb(w)Kf6t{n4O&bgTB@YO@YlqG}NTNMZ-B>tA;Eg-4^R$t2a@tjZEW z#kucm>BX0yg?TtqYM*=ArCa}ePXaATaiYPNvYb^^mEhh1!y<+OCU)Sv@qeE9N8)KR zNohg%#9av06YQ8wO@8GI|s5z@WLT*F=r0=9PJ1=>pQW;}o$ie~o$)bCWC16qCJ zk-W7>|P|^!uh%O!qI+;vT!0SOlf5@70B7&JjM=Z@` z05OmsnAm}1>;5%!=}3Su83TeJgK8h8f72%!wSPaL??81g88p z+A86OZcROIjL5kd^goZ{0zD_7&Lfu0t?#g^P254`xU9bERYBpa6Nv(I7)Z{FEOwcl z_~{J(rm@rKXfhK9@KcIOITL|&CQ4>X@Fz&wCbs~kA0g-sbmsLFl4FTx+s?rV7XZ1p z&(pM~UE6GTrN;_~Ln`+suxYhT?v_fc@OiC~?Mjv*BnLL3Y25Rx%%fTSEk#~f#6)X0 ztJ=gtLu>$fEe|(xCRKad|CPN5wFaNP73y3N$;XRrV|XzaVViGQEpxiBWV@jGq-_SG zs;bWGKMJ6xOpy?j0@Dc$>^Y58-hb1#j@2`(ght4Z3MNl)v>h zCwq8dJ@%dX8*dY3#<|j&SNd|3uP)}4OUab;Xy3Wj_!{-5Jx(loou0htPsRqU!f7bJXBcRxtj8Q#B3pcv4bq-+^iM5px z%V=$}nAjVyz4JFC2g6`{*%{BjAH3=!qqs^5S1JFQwe?K~2ZU#{)&H@5{u7ytP0V-C z_dR*?7Z(6TE%oT8Tc8rmQO9QdCk|5*{GNf$0T=p64hq$v zn8>&*05X!;TTWQ;`zOCyRcc={f7d?Gcen}-v!dS2?d0T~US!q)3VNZBylQdK;R9B_ zc=7{3>>et$*Z$$-n+LY%meJjS5k!_#I@E+$fQH`?y>r-s4YNMD^6&kyu~~7|Xa5*I zrVdqkQBIIVP4Qu2Pi1qx+=}2xG{qj_8#msWvk7S}Itr*8IWkP_wd3Du+%y4D%Qk-h z+25Be1k|$uL`wJ(Dpb6Ufy#uYE+tBhPmCD;#_wUXa571CfrC;v-bF`6gxntN%bq0{!_uHf=kjq^^2v}T~yD{Q_S45SPe7ph0_okNFa z7J;#$2_4f~v$h;UhT+KGY4Lgwb#+F8CcsTjDnI4VMf#*t-3dg^hs=#A z#LHahF#JJQWWUJarur>@P;}ZsdG|i~l98H(2;E*U*boFiGDj;J3| zP@M*9IWQh&>0;b8pwEpu%>(@}`~r{GCAj4Px87REu|x#Q`9!ryEbj?LfuS}rIYHN_ zk=dF7#M0gMEi&Hp)b7eDA|QTY93o)BvMPxLZQ%$jQO{#~RhR{o*_mz0$4K^LR*V=J zR(np!PN4{PiwM|>n3r6}@KI>aBWu-($!a3725mc=digGvVEXZxTNS_36(J&n?m#KE zrU5t)z2pbc)8(ke9Pf!4_kI@X1@1C&HL&8wm(O<49U5rLm=TQ!L7Tv zYQn1~E)pf->@C{FYQt@=K85k?^o9h_qW2aJHn^h+2OyAucN2uLucP0YV>!-mGIuge z(CF}C$Xk!Ig7_p=S#^%tXDLC+F<;R#9O@XaGi^9Ct%(i&6U>`*cRB^>019$Yp%+ti zFTO!aQN&nG?9{YdlGnY88{${({maoSKB2dBu9ULqjR*2Op>;!yB#5K!np%oW_Y^X_ z_IHxw9JT5yV zBbm#dxas+&u{kg%{^R~9e*90ZPcn;1-Y3XY_S@|{o(IjP?(-v;|LtU&DzhsW$ezVs zyL|d8KiB{6w~sEnveb4m$*j%azYO(&Ai)U*f)(doZHJB9*?Ny=bCbz|BNp00i)b4JM zM`w!j-Ko=_pJ-M#b|DR^6MvxEV>HZ>8Z}{ICU&4dgA5>^apQ$Umj7n&kQ_&3=_zrH zP2CYq>V9-@!?#av8D*FKeB2&KzC5}4x>ylgeZ4(of&}CA&No>>X-{_oJ(ng9dUF(x zMV`CtwRhULgp!ACy2E_}5r-n?9yo%DWKQB#rW=)g;*9$~JLdG?mD)!Y6~C}%{~N)5 zJ7XOX!K6qO=aw9gimg33-%1>xON|<-u5)9Un~L!OMMmY<5&p0Eytqpq_g@IrpeGRY zY9`~H=Fmvngjro!9k0MOT;DhtQNDG0{%&o10Nzljs$MQ6=J-4rG5My$&D!ILE3lf* z*&tki%P58l3p`Y4bvPkdB@vw#I~r6LfgW!?I${S`Kp{<6+%pM ziNliuC0}Q_zs+J!c0aS7-@qbmVnEjC2nZVngT5bQ8747h3no>>o%(`W%-m!mb_eE= z3@3!!68xH(h9uo_?1XtU#?C!{)_6zl;y3GS)J=Dqb-eqLV9~8stKd$&OKj<_aGpra z+6v!UT2mJOQ5~rsc6aY7XaJ@oZF5|MMH~xt9si#{l(U*o(hAK75Jl!doHjYcp*BUQ z8@lD@38yGXaFe3ZsdIBH+}twe$g~)E>QWxW$=*P`P446oaS2$^lvB}Un^^hefQ4HY z9VWuxu;yTOfu8~?5=Rak3@zG3+z>H2fdfN@;j`n%%&oJGbR9NYMWMGsnfge5Ww^p?AVz9=T60(m}JrUKU9iM%V5 zqi@~^6}S=lWYB$#87`tG~0W)2E9NxH?!{AVw0a(HgG*C-@57kYE&Oll1J6A1r z!DfqesEyO#^A+~+M6_&|-S($H)vq57qnF7TlcqR+$OXR?%Ay(9fTI3I{*<9-+$^2r zuGWp9!c9r$PBy`I&;!QXF`@cKubch9Mc5VwEMC4KLN^yxxW^KXG z_N2>>EE%x?7SuN${^0JaND9Tv*`@&eGfM05Xc8C;?KH9-CU)7S$91^u>;i8ii9-XtF>Ln=n0I2I(xz1_L*CSorxdANgX_i(= zl=nA$y}5uC`1qfX-?@6YH0+|SRuDchyBNNvexkovna= zVhi~n*-0@m6J!8OeC!~miAlMZ*@I*)Vo6!rIC3 z8Kq06Mps57v!hl1p)_kucCqozu4Y#Yu}jd4GToEh0@%&*%0?P=UIaUu%(n1~+6#p7 zzn98a_Vt1$~yHz$Y-V?!7&dnqf3Mv-$#~aXd8SqZ?fni6r-&SW;sge-!3HaNYE62XU%JS=NaTsP#G6v6P^NBxf7bY(wqk)xYs_yopKQQj|+mk`x|QPBDP8`kVg82?7j`IT!) zx>qC`tp#ao<%~^UOUsla9+^|#~3Dll^rX%L;^R_ssqp z=4A!>bufm(!Jo$x>D`v_I%KUC#hpYsWAeNKnfU@8!hBe@gKx~`^)~X$))dzyE*~c2 zm#yA&j!D49Uw6_|uU~(BuTpz`$01kFtT&Dv;^S4{pq^`3Dr=HY~Ce79b%+FEVI-di&PQ%%a zOvA(uRKE;C&rOfX5RR00@1>ZVE`9&yWP)#Ae#OPBUf?CCA7@;;OBSMM8Dqhq9F(D|=&ZUQ3r;;@ z!(80M|MbVlpT6YCE3(M&!i(JZ$%Bk<3+97Y654a<2V-$dWc3S!Zn^r?%UyU)P~ocN zXQz^%rac_n8zdcc{$qpA8`S);f-n!DwuA?A+@}sEeTRS~xG?p%lLk+32RJ5^RI&o{ zBi9yI&D_f3+Ve_@FlJ&0BD|;88C6ZjROQEPRAg^0vFYaVaZCUTB zZ%8Z(6=BmNjIU=-zS7fApGr(|z5-K;WGas3*+XK*Ouy*9ESQ*F4sXJL4I*=|BY{Fl86eAEER%#FU@qqj1 zA9E=xd)nHJs=nfZ;+csr_SqLmuH&m3gHb$Ax(I5ft;}YU0HL=KpMh~%9%K7VaFe_J zmYM7EY_XF`Dz+fCoyxxm{h)|s=Hip{>sI`#PC`o=qqIn;I-rF15?#b_1^Osl_qU7l zsUEsawPW4U8tq^ba~&Z1yY{~YohJRz9bGdSZ`VZab&8(`*mmPZ&)xmd?TCvr==)QL zPdfJ!FC`qJ({WBc0?LauBd8uk7C;{2FHG#zUX0^{p(~rttqeomhnoLr_ zD^^uvAYtoH7w+M&;>bsxIH-~s1B@xhM#3-Hjf;Nlmv|jxno>u193kB@wL{um(I?yzLTPLmwScd&$z$?2^} z-r(XDfYA7>ZX}S#J>CGH@_iALG3edK60dO}RwL*1_CWSlyz0F8Sqw)B`B)#bmSPlS zbHc<9*ehc<9?ZpeBBSaYY%p}WEsIwPl~i1DW~dQQ{l>Y$gVs|YGMS{hg`{AKpxTJh zLh*O;k0fw?Wo&Xd4K@Dq%pqg$Cb!6LjqZ`^GFH@M^eFyDMfzh(Vy6zeYvQ}BaGyKy z=ZpWc;nwL+#m98lvuM(FRb5C(0xp#$jrt?<+8@u%K-m-*pbc~OVca&IP&h(B;U|m- zC8Nc}-gw7#yQf0~ehjM5&^(G~g=(N-__g2vdv_GSp?#;X zzuFtcvw}{2pob<~JT+-Ocy(y0J?#E7d;U0hN0Cg zd`fq!tcH83jyl0zGUuIV%xfg@NCFL6OzehnyAIv+X3S_O!&P54;7NQIjC8zCX-%|Z zaa()_14q!p7#wWbOQYXXguWPd;PW4?KaBVdgvINyysR4r_FWg+C5YV&Mte)?EQ2_ zmI$hUYWj#hhKU_`X08caJNCqR-<&i=_9Ma(0|@d-ly?t~vOL(4PM(Qsc=SS8(1N2j z6X`(m@4GI11%cz7Oi~(j4DtUWp^gXGbXPoUf*2T!;DC&96q-c_^6SB7Fa(2piNW9S z3p(h*co{>E?TkiD#?wepJ*zt?9^*{xz-}MbKfd?DVBzz2`T3QuWMP@0a9iyfGDb(g2U+y(8Lj89~Ijw1fzYhO6ygOY(5hnuHtE*QpBIG>i+4i&70 zNci9s;%ZdOD`sQxgNc3o*Gp$!RD=4d^LN?p!8c1$pKWLb^k?R%J`rz$j~!3LxK;fmp)dWmg5S;b^vlN3$K+e?#DwE)=OI zf^(AzieZF+1!sgLW;fzJCr6zuGqt$av5J8zVh_)YRpkNPvR$WTz*iD*Nl0%la}XB0 z4L3a|vyJ;G(!p8^o`U_@Z2oddaY^}YSKmt!XfoRZS<$=GPtk@0qO-?-OvBR4v9E@J zIeZlL8kY9fBFQ@%fQJ8UeQ>!c=Pboj7clqX1YzBD;aIw!`mt#BsZ24fr6x$xt6({c ziT&c>ao?}rc{N1#kxyUo!N;pz>x#S^q@QBp*(A^->uZztSImi2UCEr7_Qe`89w60i z{Ee<<e?MaS4OmZ|Oi~?8{CIL=Fv~noAO*7!dsGOIpLr8ZqUxlJ$KvWqb##SDQRfRU zBBl#wYu5{D->Sad7vsl%9U*pMdBR?z3? zOAKsq=sSO(`Qxahv?%RSkO)rwh|?Yz#hgB9k1*SH4MTaJxmsC^Gm&z^d`PVLAS%!i zO+aKB6FboFS#wN%9&K^Eh&+_GvmuUHFsLj&H9b{VFsk7<=)vRkHR}a>EG0dpI55gC z!Ub#?UGUTmIENP|0YMi&bnn{oHzSKjxq3psbve1LAq;i~c@7Edm~z48BQXa@zDG;})~>Jpj}7eA!Ah{&9$ z6Wb}q)zwW#S!f|LmR$KyOhtEOf@&FvidH?m`^}S#WM0aJ9(bbn$*boK z2J~qBlH`MpSWnoS0v&Tk$IxiFP3>`?z|p2Q34lp_d-}>L|TM$F^qWh~q9B z13bjhMB7)X*!y^?{J(hK`(*?t{BF#nuSA|qI%qqyIlF>%!af55#=?ja2MAg7Okj6v zSvX{OGRZ7cdAtebhM9!5l*i(HNCbu%|A4@W+FRBGBB-9!r1pr5#!c8(d<9ZJ_g}>9 zEXa{e&TDzD_zG? zJqlu^vcz&WWqK2p6|=rV9cmO^^gJEg@Sg0KU~14AA2#&7@)d79{hc*q3g9|kKA&hU zaIi6Bx3x`fe8bQZk5yRN6m&yZ$EUXVB8uk=g(*Q|{OzO&{%y3=sOJQu2<6O44Y?pGzsUtj>BKCzW9|h> zHP`)(uDQ-8I!mz}hZWt-JWtWfnU^L9xQ!p`Qgt4|Z{~*>6G5ZeDF<4%Nt8!kwUQ@5 ztF0wDp{)ebWiBem5#)QW z?Y7y?xL7#mymOS(a$EPfxyL(YY(~1{aI}*H7253LqTCO}dK$0IA%Y;o%T=0>KXe&| zZ?TxE(>C{w$rOTCZ8(xgJj{17Io{2kLOf;ln&1#kU-OeWcoNIWSGn9LIl0^?xk~qI z)Xgn)a}we=!fDUw(~iiPjJ#FPUzaeEec}? zQ`vAdO2j*@w_3c*7>Ic1enX3Q$(8d@;X)DbLfIVgE+T*1#k*%g6t_F&igx7+agbgN zJA4sbO(m9s;F0`OkjV=9Y8OF~m{P8mzX_^Y$(oh6Sqbb)R`s=`Qg}j7L;!&U5qeo{jbmmCbV0m=@Z-FMu&TUzqzrY~4dUF!LWnG

      ;qwI#AZhWKDH37kFkb!HFr{JCF_q>0Oe1F-*q9q&)<>4)VWdI~-GbVIrj(ZK3yr1gNTJygy&aOkNs zNmW*C+9NTu`<;SBT+xJ*J8s;ImT5zLK5Fhl>`78o75T~pLQHRa-AqzVWwZPkR1qAk zp!mD&3KMw#G~$GzXQ_RE)qh?s`;wuUgcC)GyPT-Q0m*Wo|$D_|}@l7toWcYOVDRXAd7$*S-ehwv-K1fabj zZ8P^u|Kw&J0^7m%>~=rfjSiKI(CrL`hDZ)O^-1~TquS9LZZeo@91)s80a*OFL?5Sf zRwjU7NzWN9qF)vzJ;%!{$vO0t8NdDacnLZq(|H~GqZ0%0enpQ10 zT20nm=c_uKaD>w(46lh!!{Z;%(7MeFw*@disXgiD72m@17f(4+1N!s1_+Mc1`yHn< z0S3jX%3s_yD2gM}_bBc@ujd!c9T2DrRXuV!Yg{zZ1^hl+oYxOjaDu0BRBl#3E*{tV1PNw7-kOA&6yLl^x9oM>Q+9a>2wO??z#5y;8F zj6FO9V%Qo9Tye%o>up^alR{QRPglzvqKXEGE9cp}ri4+1QLyAb^Cy4`G(Ahu3K~#( z7iz|a_a7~z8gT>1gTS5E52MgHl}J%A234URRPk$OVh3J4_uqSk`vJ(ms4MZT=??_L zW}N1EOsY>tD1Mw@@5Zk@8Hq&sFe#pXmxlc#Yn~ei+MX8Ab#8x|Oj59t5<#^djr)1Q z<+^~gzRv*``5LRO$8FMO{@RZA=sJu^3%a(LgHhbWHhoHem;4g@jIkw&zg_vmL(L02 zH6KX$>;9ETp>QC5Ie72Q-M)CRg}U={>!#k_wQAAG(QqQ@cK=;h^+d>OP&q5)JbM)U zek{8$cYk~0z08$3C5_^wHyT$n{#AvUA2gR_1#&1i&O(jHQRUGkl zIV8@fRb(^?!-2z(JmcO$URBM!|4O@n#l$XuU|FwoyGls+K*+cp?}~D2M~uW^GTX#lzeiVrf=7Uwow*$tuJ5!N=3)urFDRtIX$ufM zdQlVs&xr{l@hxH=k3f!$5+8*3>NIJOO^%bUb?7m72k_SZI2ubIIEJ$Y|Gd<#J&Mg7j&PTh>s29 zicci0#x)swvnbo{>WsQsahG4NIN%>4(gh@%A7z&h@|tS$!&IHYn*ifsCs93ks=kFW zZ}xR$m9Ufg1_S9Qa|3U>)3N?VZfFlcae~alGs1`D0o6^n>0vyvHhj-*D3!XOpaZl7 zWH%TE@Q^Bq+LQ<{I`;}qW?RNhk+;z+E(?-iD$&(<5A^EChu&L1afCwztwTJeiQwTD zAp&W31|Mj|m9K3WPW4X>#!GswR@#BtPoKEU+^J}lO=-521w*EQx)u!JN7tyYpr76< zde=F5K@Y_}=mt&i$~PP_WWWJu=Ai3eY~^WCsXGAV@xy7PyuhA5U^4!0d*G-AP3jI? zWp48=J$=xwL*cXIBblczem{W&Bab%hOf3>OU2$j>iq%(Fn?G~VqV0+o0EDeFIX?2u zOoUtXXn1(ws^!=U=3-7suwAKH3c6B8eS1QO7fK zGX{B<@Yn7FKTJMGZehu!e(Aa0J7vq_2M(oa$YeY)fO3wJ$T3}HshYbh@?e+7&5*t5 z17B$4n5Y;Y?{vk-2}PDCV; z${|P?u{EGVU*Fg= zIWj<=rEfYO1yLA5ef%C+&y65 z2O$R+Fczn<#l%kSG5*0D=9B}R$sjZ(NhJ-+kuKwx=wsg1L`aT)=}M{ONLNJbH2x`) zhKIYEAuK0;I{eyJo)6-H6onpHUqh+mJEGH?%9lJ^6$Gn^k(f8ct4AzlBRB=*s~q@> zpp`>l+L!c^u6$j=x?-7M#+>{nhr1%2d9vD#0>MM!i!KS+(P zT$GZS3tUR3n?87E<4nM_hhYu2pRKZcOiRKRbUA3?lyH}hK!g4;so zIuiCHe6zj&>fPX9|_PLoGPrYN~m8Ev|Ul+rIaSIsBUDeg; z1R?hNGhOC5i#g%kbC?tUr(Hw;b^wt+Yb5#s2?5~@0t|1rS`Tgft9@~6f^jU5WQr4u4X2>HJ zeo(ScquaO1_!rM+wA|rfB0rc~XQv~sya(lA)C`yrO~3@IP1s`DieUVFgVqd~kxjse zt&~5B+k{SYUi@pS^Ba+md6#XH9w=aCqO@ zvHN=KMe`HPcC=d#rZQ0-`u*j_e_4m4-TMxC>G&#MbSG}|k=liX2cRrbluv$?<;WO5 z4f^c(TWs2;s-EHhZo>Mrob6P(Hn@9>o0c*svTbv4pJJYg8O8R_aJF}lH?`qfbxoc#Cu{m%;&0f>s^q!Oza*XUcBJItJjsf znWTEgshz!>hF(bE%5{JVO9*06G6ZGj3PA8TQJ}*@dC}{~GwJ<+o?Mn53iR9t-0so1 z?u>&(Lt$bE`m;j^qpHay)xTZbd_cB3aMkf->ha?<7lIF5A7(mAb91VmVPM zvg)ow9mG0CA2nNe$g<`Vd+R8Y#bo|}M3$345$liOAY5xBhei-Z-p{1&>9)yi)0+HN z6J2Qq17S(n1NsQ@I-0Pa$axIUfgBl8&5Gz>Bw>SOV42u~H%>qJ&Aa7Hp<=>{Bxj0S zTkm;~l8!;u{iI7dAv#RPsH4(n+1L7uA4tj^S8C6?@rvYuJqwy>G9>ezmiH}T;KkcWMuWifCR<0lEZu2H!_sz?u&3PQrIZv2% z%QhKp!F>Y#0Ycv`B;dzbd`Mw-G!d`Hi$L*Mb4__&BYa%kjIMgCR=ZN5qtQxwaL{>4 zwZU;>6hX`qBEanR92?v$8aq zMnXQlr!!UMd0)6Y!AemZt>lpb9R@rw0=z=ZmuF1I-;eyl$AKNEoGXbcg=c_soe2U5 z8rMRT*&eteKk>}B+_Uzho6>&4P}7~0#c~oz7DAwvWsHuf4b0*divd8arc7Yi;Z5m2 z7&nu_YTVHPaHySRxA?{f>g%&7u`U6QD1%IJyv(4Vj41ihgbyz+WqeW>5p7;3N`SZ! z|5)oO6&ZI-V(=r*g zpbrz%PP_`Q7IJ*Cbz6+4eLrvCH?N9pX&P{`=;ix9MPpx|P=WF{t|L z*0RMLzk2n=SP-qHuDIq;mt4fwPA77@`1PVUNdK+jgq{k}+OQ0MNgJ1km)y4+#a#-K z#%F;988`z$RWOk$@`qO00pAQY8Y-ioGy5~HJlF5<4wIL%lKQ|xcrLqD%3kr3?Flz8 zL18%mJc(3Z`N#kAe*X2058d){_D6tW(VG#wOvIe1$GeGeo?2+0sFUpx69{tWa*N3% zHK!XKbcZ~}%@l>(HDh-l2I{(3=}28^_P5~3bhin-VhAJigt$WVZhudjG>WPR0v)a6 zH!Gk7`jZ&(bXSQ@7FGFxi*om(qvhe!{B{6;g}^(FiN~w+LZ+kacA7&SqP$JWI~kU1 zi8e+-gYe!iO-*R?GaKn1nhU=jo_Oc$gE*{HMKGD|p-w;QHQnfGM5ma%&>c~3Wcv0% zA5Q4qiMu#S<^#Wj%Ae5YXhD8XeT8T^d7W@H`8svv*tiwR*G8X# z&wsd-hC7ql76K_s3jYM^ZzAUh<{r`a^tbTXppVDBn#vl;0Mt!!b}_L72i3Q~rUU_R z17BP?r)~h>N)$s5KL!;~O#My$$OymFOYQz|zcBFW7h2TS)J)X2>WV>%j*K2HC%%4Y z!P=E~>_SIKlkp>-f95M1ko;g8rv2fcPcY>9Mr^JgnHO`MT)MZ%|vu!YZ1MXUIqA zUPGYRvcy`hlO@jpYgA?&b zr!$lBgUgQPHCNGd=K8UC2Z%hjQ1SvB|0V90(bp)t5qg=JDCx6H(G)Vh2VnTK4t{K*q@= zvoQia03{0TYLUZ7NPj#y1-cGg(dhxi=qZ~&Vc#2$y8t*5Z{wb~o7S3%z3xKbm-<-x z0)z(-tQvOh&?8Pqae_3(k3l(5T0*@s!H(yMssB`CP<-x`;*Wpfqn)Ivln6>t1OLE$ zcmA7~%o~m3AsyVoKfZp!LH|S@HnvZ!9-*JDN->Bwb9mw?%q8>pIP&Eqfrn68_JZns zjrL}enhBH`edQPjO)HAJ{>1RrhoGqI7$!}NeQX!GC<~XqI<5hsFwTo=Fz<02(%&(6 zia90#Py7B+t~aN89_84aOXC2EQkf10Lx~OkA5e>#Fc*{oN2|g^OyG9KAk8@LPZdpg z@v6ynPOtfqyd~X`R~*c_hwVvoM*Qkr4kjmUQ9lTa3B}j-0wOfysk+u!mtp zO(q{4mh|&_v6YYr?dXnpEHMEH^D>!}F@wmDLG?w`vt?(IEE~78_1+#W%+y8bh=05q z^(_MXz!lGxMSuKj3w5iS)a`NftM`T3<(H;c^qBwK7V3T?(@PH|#}Hj~d`TMg^;42d zqI}3TmTU-G^Ruc3)ziCRE4H-W!W)30ih5kO#H9lI3?Xo$zf*xS$5?Bmry>HHdz^Oo zZdn=;BcaSxE`g^{4umEbr)L9i!+*TVl2hC53m> z%9z6fCgae@^8lJaRNb2*!`1sUtQ}9k4YLm7@jG2^8X5OMAf<(_ev2(HD(C9R_IAKz z9C*2?pqYh$XPpN&O?RGw2#$=7ikKVzp1BfY`xapV{Ww8)C+N9+AAzE%$=L7MaxCC^ z=^XQd3|>-JD++*=2(4oO)cf&0&RHak?E7XeEIbkFH-hEgsI@9qyQ& zUbx^Cp#i|+kw2A-E~kTVuFh-^ZBG{(NF>@E8tfR*teh#pl?u+=kGb_?Vh1*k8aZ_> zFZXQZ0d;TaJzS-QLqK7g!!v97!y}NJ>Oxq3gX;b!>Vr7qam)C`2Pf?H+LD}Qyjkhi z4lu1(+1s6<8{#@F%v$ooT}WJ}7*oX)prc{$KkoYQu4u$$lImUVhb1V7j~P0IV=GbB zQ9dj*6`KcyKtRKuedLE9Wzy9>E zBR{XtA-;bju!Lw2qTbRGZyD>u2|qNEG~0iEDS*SYz#$s7Tt7|Vf-pdfUpo_w+dac8 zui`bDj~*QO!MzM_yO`+kqhGBlVqNjKvYFGyW50hyEi9<(>*s07Pkl>B-5MIBKI3H-#6`(sNJcL$VH+J zjf4scNZ7_4WOtmfna2qhY!Hdp;}L)yxV@aS4xQP?HAL8paUauNG#liF-3kJ~ZAejH z0gWvOwm4SHp~8;o6vAY(qwZK4TAr5-JI-NN2a*?)O#tWM zOI=lt7IkJjsB4uHY{A%Z)28LX8(8-eXxC|01w{WNRj6OV;hL^m$Mm5}|M#hk07 zvvgXu>;{5F!X0o{?tW3upTEE?F_~@bL3VL3id4sIb6;d?;vA)jxiPv7(smASpBciU zH#*U9>{XAvPIvRgz+WqD&iYSvINfzDJ3&W7`Za22 zi&sb0swoJfA44>_u!Kv{Z#Z-(c9ya5R1G+f44BOSfq{UO;JE%Fm660-;DLrQ7k_GN zt525RenoN^@K@gzlQf~kavIQJ&4t5^A7Ws~Rxkn1%L(aTW2}YaV-YJHbI)~ul@=(z zEC!>LSElG7TnSTj&SK^o&;s4oMA|V#hH!_&;#txZR#xknM7dnyT?JGE9g50qsNN+6y2KW2@CX?Ela^yAZ+;d8-EOzg&qlh;nU`%;8TFqx!U#6FQP zFbq>cElX5~E};Z(D`P!|durw}M6px9;A5r^Ea?oGB}aS3A#i>)oNN1Y9M=Onvu(I< zozi+o&f1kKx{z0^^_9h1t8$6xtzOpW{%R`;%UChkZ8v+#lW(eqwchJtW^tMHp8To? zXX=26H!?4W;GJ>L76*NB_lWBV>gs^3u>WIIHgX(e#JxZ}0thfUHo1vlWsKDkO_{pL z@ww#@d!HPp_Dja$s4Zd3(p_fJqFFZ=|Ib~&jTIPchMslXHhxNAOJIt1;3&*rj|Zj+ z8wZfS_;E6ivSG`!!OA7%xqO{ZGm7L+BeP0wq5InsH#f!kisMN9m?J)TRqBXR`>Kj3 z*1z`HznUkJV$}7Vx{ld-&4yj4&Of2~x)}cXTmoO@+OX4%apFfb6Nfipus~wEwSv!X z>khCNa6|Y>zl|Mu@#_7nOL0dK5V8|Ezcfzy73qXB1;4n53GTJ$8^$o z3Y-|}#juetmE#3y0V&WmD(r4hg>*$vJLR7t8#0<<9Ov88}R8b{4a zB$6N84qgQi@1AS9pcz?DX(J+sBHn}-H<_do|7GFCGgwR}EYM5v4-rkBr&+Pl)eG}n zC<$zI>>xVh?{0n>>41I>-CxibQv)kp4dYt#Zh*p*Ca~n^s9TMH!u7r$7?Bt0hkZEa zhI^fq8c$X#cZA=(d&OWgJHP}YX$tf;u&|Rsta@}<@5Cx$T$eiqfD~pGxua90A-RFB z_{9tU`fX{*nbc%&+7;-@8u&5*OE6yyS3E^1?L{(Z6i!av!suHe- zFOA*B((6$gEa7P^MT-;NI5h+fdTI-P~wMsER7Zrw70 zywTw_KpO^!puVGdP-0)8MV`k(XxR<7fXOV*&;Sr_+oBJe#N z%orG;+(iA(c0%=H>q5IM+CU^b$OXK~j^@W>DEV0P=&`_~3+R z&zJ$^2mfJy%(}dJnIUn6{B`B>soZ&~KYY^-xk`#>B}8vlqGfA5m#2=)aIr+fu==4j zIgUcDEZv)(&dW(Axtv}M$E=0Q$~`FEf$bq$CfLlYNYb6APXy4h)!{^rU}$1^+IEC3 zIm9!Q*)yo3Rg0IV=25&9%I>iQSwfJyn7^2+-pz~iltw^jlIm!OmrYG;C}$FD`T$xb zSw|9)9=x9j&j-9+9F0*u&fyY9 zOrfSCY8YZ|Yy&z@|L-CEqS^U|(s5$izT0UW539Flsq=RD@A}E=fC+z+uft=V0YM)@ zF|9$NYsBUU8s>B+sgBJZ%0rz-Whl`>-n6&&g2I_+fOkdVbkW#+{ibPtI}c6OiA@KW zb4&)88Ag(CI=JH2(izSiveUre=8WqOu$eQiOV~fmekazicNB7G#dfd@pCU+i7ypy- zD-h5sk$@RB2Wxk0t~1-ijSRb-Zyx8$D@{wz^q^w2wj2zizl`k4OCfbH*ZlUxRL*?x z$Y90zZvMI(7#|e@(F0Fysp|UQ$zk+-`5fK&kh%+U}Kt)U{|E3w$k+R5&2w8WAK8=P=QfyuV40Qf{=^x!R#* zTQJxY5dDM+3^UK&G(LCtL$~v}V~HvvB3!K~mf{{|B&EG3fv{HIlZqhqLN7Q|F8K9K z+!kRtb2OWx62b%qgQKhWIh6YblSxWjT6dd5(IRaYvqDECeuxaj#`ilCp_+PXz+6I8 zti%MU(KJdg6qE75295X>i1iF58TCa+9?7q7^H)*bboUumC5Kw{LE*LOiZ?H9{II%3 zHX4Q6>JorN)Shw9o;C-Zb0bj}!T0{JBMrgIKg{(ps}eqzc;C=CCuhd7R}B~j^q*FS z-GQyiB-N7uA)?#xnOqjquOsmmYfx=!va`%?TX+zNND>-IQ(Ouv5ilXAf4TBn;JeFt zR$VFr{!sCAYHvV;@<58tB%7<<-Jyb&01mVK*6Pj(Pgdms$)(JWffR zdCspNkTuRCtCPW5s@ZOP+*x~unzir0Xg#> zaB;c|><`g7wRl4X0x}0+F3o(r*z7P6cIE?gFWr@1zQ-c8F@nYCD!Ot&&Lduv@nhQ} zaO-9YN!(G7;aMSIozHfXD+;z9b?Z(-@8v?D7Oz~AuZ0~aj&>vHsav4Zm0x231@Rxa zLjSid1XAaN_Bn&-as@BmY;#~AhNxDBq(sq}@WPoAR>I4&RA;u|jh0X|i;<*@XVk9Z z{Levl2Z*Z1G@S|VGNKRQ{iO5Hgt4eC@%hqS#6}2yYRar49k;W)5=c0wdyb$iJ4zPX zX7N(vn)b=1xZcY(TNj)@o_*pe1^n#mYid^>3klm)x8D(3)83QQCvBFq1E0Qd;7MC? zW!g8>JhWB}r<_xlRyLk$L|*Om%C{{TbQL4g<ta zvHW8Z71f30)pJv*f`wMGQ1K+1#DzZa`-ML@=sZ{vw7vb5=*EYLpWbMptGug$>V4TzfL7g z3qTfh<*m?AJfYplwN9>vbZx@pG@;X;R>r$!xVHcx*`dnM7>Y#C;Z1Euvjc(0I+Q1!ZjWve4^s6cp!(z8Wuhl#RElD z(AB8B>Uwght0TJjt?n?WfCt_#-~V6z`pr8gF$6cipKUX*yQ;dXy1M$R{^GN`hOQUS z3D%_}#A`j_Ywo}A^o9oD8v=DV-1+2D_b}XcubDNsG@IFg7;l1^^l~S@9&hM2L*3Ft z;%#nhIOt~D;ALZ}A+W0I2vTQair8$6dK-if#I7?YaUOEw`@>t0`Fr)%qcD_7ahC8d zbG72R+v@7FNO?&wFYST7Cq*=lWYgrfHXy1?i+lKBIGtH%sDAS(WG-2$J2Jy->w?#_ z=V`w+#9qC95FIC3XZD)LQ~UU7^egt>wz^l3o<15mI{6|HX5yo|Nvp582~5zr-n4Hp zEWU2_=m(2LeSK9~(5n^gT_QL&5)^{*-|da|MzPEXGav@Pf;Wa~UYJ2aaJnM*3v{Ll zbOuGy6goS&_=%UZdi3nmH2H!j>3-(}+B3k>#w+%X?32G|chpxRQ{0P{4OuL0cCl~R z*%<^%L1`&LrID&~ye?QZKM${JHP$?L&J30`t9nY{TB2Ww z_0?@&RyhexclUh%Ss-22^mg6^PEA6B?O()isq~*pHWR(Q+cqFn>m>L>iPocM;yg`x zM%YbQMu4gb#UGI34iQ{4v=EBZc3mR8UYv(7lECQsl}CN-_DTeh9Fka$IzFy-Hmg*< zWYfweEOAP-*wm51MKewuB$^?&^||4jbmL4bNLF<;5MkE8*DmlgXh?hKm{Rf72;yB# z_7U&+?>gfq{#C;s_F55>#Hl+f*bo%NAGoOhXf;`0ZDV`LF`Ea3=;gbFDa=8KZy!ep zc^qv;Rae8KGollmM!iNr?*U|@MdSi5n0i447T-OfGWUNJ5vT=N&&Tw;65HRr=HmnG z?@^5hY~2O3m}ogVig0bXLF`|MY}yV4DYiq44&r0Q(USiH{7!VivxiK>n}|McG+|lD zX0ug6pgDsOPfx$H=xi7G%?P^*I;g$_H9nS_5i4HxapCYznDcmqC;hB1 zbSsna%t$X&Q9fo&@V1$IJ&1_}i<;2W=lRk;ZB22zbEG~e0DE|GcMRi>+kSaW5xmDJ zS{=!+gRpc4SJA4NhJFx<&X^Fb!b|Oyek#aq0&6+P-0D-7*)}V2~j+lge_A4 z7!+ue2awPpck`P=V7~6-kgs21_X%67@>rxf0_|36VimR0nV5=XCckAQ0v*92Yrnq+ zM&U1QUDN~zfZ7J0`ABvAM}30QhfheIM5Sm^QHeKz{afdrKJz}bni%ZPJ_>m2L#FG+ z)Z{d6--2pi@dkLIJ`EOknqr`Px|lTOA5_A&(#3H4lYz$r2YMZ`XM~d0pEitRUmp;M z6rG8wnsh_?CZw;SL?!+%Pn|S_xvl2#NVQ=1naqFm>kd-GzV5ioUzswC9i92AJ70Pu-!%i&p1^iS-MO+o3uAa$-teDzC32Io4dfTOZrur;PqeQ< zL^6p>U~m0G@~(@lp|%)0y86jl4ciQ6e#Xo z+>9TK-N#laPLOtS-hlS1p?xYE52N+_cFiSs)vs6Tk7%E_Zrtn*EzYVOzO11;vx@_D zYt4gf_pXmGI(TjacozohI`_ld9=G(H>&G=vcR`?TUB{DGt>*FK-0$XJzpddtsXI|y zKRp}tS>q-uv7G^%S=x;MQk5a!E^AQ|ofxTP1n+BE;A^N1G^n>ZHmoyt?Hg!|cTflA zBL7b2?qIE5%*Bxl%V&r|3NQgM3R*6Q@S)UfN}P50F{}s!#RUoz6gQ)8NS|}Fi}Pbx z5TSUS0GOb-GdX<|XQH7EZd-MGF?(AFljB9Y60syu}4 z)xVJGzjmfEs|e~IK=pw!OP6PE`fK01>IT$_k3M?qZlxR84eHdt^P9b1ud2T;-X0sW zuOTa}N=B<##lijMfOQJ27%Eb08?#$b$4j^^e0%sgrGCQI(Sf@0vm~-MHb?~6J(2r35xf( zFEH3!#WB^Toec}hDTo*$G?86ij0^L6MlJw(Eio|jQGq8w@+)bL?)`ZR^8QN+tl5@FR%lPM?em_V1h+HpBUD`09j$?0IM6j(A=+-Q}7vc*t*jq)qTU}T&l`4&(p8mzhrm6H2G}F3{gdZT6@rH5@e26S}{Z?jFP+U(Gts@!- zZ^ik^ZyIL=c1H{`i9E!%8Z~hc7lwR1-v`EU#W~SRfDZkQiOz-XNMuWNLLa?;@4j(5 zBAjSVpe-UYZ}UNI0)N%|ppoy6q5d=U$Navy+y!57FNiyd#I=-I%#2Flqt9^)bY^b= zze2!mW%p*FnuMq^6;u6dgZrQZMVu?N9Boa)x((jK@{yh4tVw$QRqrf;$3E3&cIeI{ zi>oI`OXM8;&>AAhe6yel;)7@e&%cQ$XXL<4)~;!~CSdajwk65`Z2_mAC3AufZ+d{! zBV9};1kRu@G|d7{nX3AgD_Ax4LIYSmmykFO@nB88SWi{I%z{|0!)O){j0~>i5;qPk zPnbM{t5=BG?bEZS3(D$E9Jrq-IK~wJ+A@6OdNkQ>aR(dgiyHFi;)!?`e3}(-lKpJh z3j{o5j5P#}V3@3i`0d6%Krbis1H90OOsNU*ejiX=O%$!Mt;bF-Pfq`Ka=n4DI~v%0 z!+Vs3?+T9FO|yO?;*CVo$ws1I3jZ%)iE^CnY)c|q(lDNV5XTa<#_S5VqKnD|zTP0r zC)!{VwUsBQ8M{)H|BckI+XHBe%nDp^DRl!3vOc0vKM1Ha}UY8?F-kM@b!jZ=E zHA$mAagx9UBsgaYbjBuuAH%9nQ_O#u;ykIa3ocaM?eadiySTwLm{Y&~?Ou1D!UF23 zstiYI_Mu-F0fT8vBL$}(#^?$afj{J&A?KnnL!Y!~Otb-p`z%4Or9GkMI4Xv!t}sg> z6R6P6#00zsK9MuYAdnoq_g8{2mp&St+mdEEiFE4fijaK8JK2k$@vkp_<%%;vva9$K zUEIwOy`u*y>-{z=NlWxhYX`gMv(yNdc68)0{43E`+xrn1$unF`Y{F2ko`K~+J6wcq z=rXaiAK$ENZyO;GzcYKDYKb;2vnfF)Xx0Vh2C{y7BPOWiqtm7pozbT3at2cO(hykk zX#@=@BAv-PIL#;=72^h_e@EPZq^A+kRey9?ACV?>P58~9uWaiWcaPM{Nep;aT3n6y z#VaP2MW@Pf1-Ghu6yfh!i6APGh-uRGfTB*K@)5ZCbpwCRqPB?9RlMHiqmWB5jQ$mG zp11p(BcYNGXm2mdnr20(qpp}sdok6%mJ!-&B8PP+0YoL3w8|_^qvvOUkOEAg0ww@@ z-6(Woh6ice9<{ZunOs=iqv>{6WKhAMxi~`>bEV(G9ai`0;%>{Xdr-P7rHd;e&?Ax& z;BF$j#15|P7KF2-tTQ%NK_pk_JYagDMjtGFg zR5*rPAc3grP6Ktu)j&hiLNGY3x?z!rkAl|rd4sx3CA6JeNmU+*@fFvTG>mdOR-tcj zr6P-lg;gtE*R5A{8svz9#u-y5n#N{OlKZhSw0bUCDPYEerV_mVZ+tJmVfl-nU)rhAsF zcwP6d^Zw4LcUw;wmH+t|8W1u}`>#_m(gV87oebr^+&#u8rm~(tY~|>&C{Bm)n732({zS#q@|a! zx$iMyK?5c=pGNpu`~on1SXUB&F+1tzkpne`(vqil)$`h4boT}`491C-2YtlDWr?ub z0;GWMx_Tzha*?-heTHX$uW}bxj!4zZBvylXUxWC7zc5LL{(8Zz6^lv%;<5cU{U>Jz zKoE_5WZTl+CJ%QlaA;?0@pxK67lgvo?4YW4CZ>ob1B4c3&<}ZDxE2hun1DeCjo&?N zIPlvUT|32(VP!!!-WJF8u46J(wfWr}$MLaWA=g~C6K^9sU%D_h{270wXSx4zg{Jsq z3~Az}B(%Za>L|VTyIZ>86*4UPG0E^#7gC@m|Tz1mu=`iwFB59IiGVtrn zUNpsOgT0DGZn=ucW$JyGw)!1B$_!w{htN)*%@*-D6$38#imx}r4$pD(=wlH$ZF@as z!Qz`xN?tixhk87R=_=09zh3Bt=B@CTZaeDU>x#j2SMmPZNXChe38of2E^-EB^dO__ za?F=#!u&{^&NJMp%kd8yfU-*5Zkk%@ywApCB=*aJh4e!i*SP(Oy<)Y!0EVb!Kh}mK zZ(%0(uP(<#9j`U;j#vdA2DW2$gw+5&LHjeu112Et8Qjw5vzc{V%jpW34^Vvst3Veb z)!~{2E@JAq6E&H2^;4n^_jC=ARihKHY3j~kVZ>70UgVM-KfHj?QAyYZzEDbWiRO5fv zJM1KXcKD>0261B-jY&}DDIv`SoFk;wfuU|p|wIVuOk*U)@Hs}j3 z5a>x*jlpWDr|o+s6?8J)!%|yL0KH6-bsrph(NmxDJv2KLQ%=89pVOX;33n{JVoXfK zJdQHfWh`_*n;<2h!f&a~0FAZUAR8SmHzSXO%o(*9Q5Rdo>3bl1!AWAYIr&eFN}(C5h&T+5w=qO#^PM{5BUFzL$bAa&?;SBJ)*mT+YfV!zbNaD-fobC+a<+Qr`j*tJn1O3V%E#4^hSQJyuIgcy82U4 z0nLc)JVqntMZ^Y9O`#z^j3#vd$TY0};W}yK^^e$W5z$il=+s+~m`7y_o%bvH=aFF> z-0>=}#Kj(tH@_+c$7a&BrTcPT@q`IAxjumakbRDoA{^ zJtTSf83jKjYA7Dtsjl%~^>TE8b6vbGq6pvSU<*N&x&c?yEGEefU+jEw;Gm}plB=Jb z^}pTEdJ4r$I@rb4YN%>zE{cWKvY^aO--~lu;cQg&&?tlN_*}@mLj)_f)l=#hxltZ_ zZy0+EX_0e0_wuIp(b6;fj(}%6{NmJ(GlAD5fnO213~_)*4?&V-NZe3)8soIvQ3`%xsam1}cb?aR|PLMd3(K|L%6c=nE`uzV6pYW8K}A^LM^_73aK^lQpNf zN~2b*bVauZMBdAFEInh3DFWB6$_U~RZQR^@qK?PLJ2H4=AQK3u*<(3yAH>^fm}nH2 zO|oAa!wy=d1dVn#ies0UES<^RD38!`s;AUMqqF>8wox#94(g z<6T!?S9VL-^d<>@_F+8|R?CAb?(7?zuH;d1nP_}MvzB2B8qfrSw|n7=ASSkzSF<-v zdMkP*&m?&;NoU#!8KN`Q@Yr7coe4^cKd80-!-{_zFLlb-nGP5`do-Wc3}p)c^DCXn z^ody{43Q~ypTMz<2{^eJ>>Gh@o>p-iQffVjhJWaT1nq!Sy@ZDX9#R^bS{dZ8GiA_k zj{Ep4&Mu#A1b^jbaQ*ysx{c1n1eq<@qXPW3pG^XPIZ(CSJ7eYPBiX8Wngr@_cQtb( z$GPfG3iJ|*T8JLt<5{2|6oKEGb`P$O61kwfxMZ4D9gURMOhUK%^*L}oz}jF16U)PR z)eKVf+snX2x*i}03PpN|#zwt<;&888x0FqdQ@>iAS5`bTusq^SAauq%s?@tBB2XWq z31~ZTgbtjR5xQeY?4=G5yE8*qMOYg1HIdeywCt%np> z&m1@+BVFdL=#b8M0oFs;IYGLfH@n96DdXWRw==#I2;U8P4DSMj)B^}v=C-?Qga&tEykL4+*M&4vGk zMLtH8@D4C8IKdTV;?g$Vz_}T4)Pn&MLgvwe+DtdC>L1LBJuJ>XZhX_-x0obDTk;P( z{Do%_#rf)W$$LfSbWoL5hfY>8=M7fuZ&`}G!!8_ikU zzWe3wMPRg@iMi(;Ujm~~^_;y1E>Uw5?+BZEB3)rId#u)z)HxTUK}?c`rO^)a9=a7V zy06>)X6Y(i{!dp`n=n;LosD8)^(A!0i}QaLFa2`xc_8uDX77LYVFVT1><KJu~Q2Rw(W1TXS5HDALIiMCZ%l*a_4(JJnS zq!yyKfh{**4eWR-FJv)EZh0bc@QU7_6gZifIuK-~h}ghhgRx0!roz8#=KR_!NwbS2tY6kW?CO-PCOGEFXxWJw#$LNv`~1_Nm|h^kPA>YS{4QId@PUvK#ShLZr~#&e#z^O!R;0_oxda5ZR zC)&--2*hF|U6dTFfu!Xa@BQq@1Js&=R0E-2roKa>o3>gc^)3u$ zKd^Gh_}PyYI2oI<+(Fii6&7CzwMZQb>^3H=4&M`pM5ZI!Y-FO`5arnn9m)%7b#-b+ zcR&zUSWA)nj^bj^6sDLrohdF$E-`Ij`>vZK7>2P}T3mz3iC<7Z^(O!T1@iq`oJmyU zK$rRpX?3__f49CRLJ=WDHJD!=!OAj=-5TX^UBCP?kx)1iosg!nwEf2PJj}@!P2gf~JBw z&XF3`-G%wUOYhlggIYMwUR+jHS{xaVU4+zB{6ey%1HMSr!krc0xDwKv5XsQWIlHfI zJICK5sd_0Gn8>AiPmsw_YW3LmA&W`!mA+T(w`)|Yz{$kaDmFp7)y2q(`PYuy^V{;s zY8hbo%Bk8+caFobx|AjFVvY=OSw3eFQ2!=VoIyZI|85TbQhU(&)U+PW5H5&y8*BA> z&s~X~VlJ%CM`g(AxLsf+lVoYvs~>)1{ND}2u^4+H zX}ZO$`8}Qdgai+)k4NHZfcq$W3tqh98Zb$mxO8k$VRXO1;|_ zIgw7sGm(3bzg?A&oQ%%BSZ)h{TW}O|GEV=e4{}@iTU)f&D6x7M`kTmRqi{|o6?v(7 z$YPS*^}@q5FPsEfnM?zX+ByoL)2jInoBUrPT9AOuUB^L~Op^JVZ~OOr>!E^Vzuo5# zo_pbDXaNN-CBnjTPw{at<$UqZ%kXDs49NQ1{2s5NxX?{lVUZPz-x39MCdo@mpIdNU z^A`$|eHLzBP;%ItC@xZDaV5>9+pQ%s8ECZ}25^f}xc_Pgxr(j(49>OoNV?AnPZ zo`NWrxBg#IO|w&;Hslj~Sb8ps(`&JqBtyeymG`~~o>3(6?HxUCIRvUJt>wqCS_@iG zoPEe*l59V|O(sd(fat8V*U>YIXOrw?{L zotn#v1gQvJ$@)izS!|v>->TisCodrgVZJK;d{Dfo8L%( zb`g8g*LS~AG-P){GQWK!^4V7hprWhzFx@u#@)nciw$nD6=NCMCiUMJLs^^*kcS!7}IOT zps$HGIy$y2?bmPv-sL`r^ww-Lw6o}}KMa};${hYWKqRD78$HRv@i~Of+^gWN9Ng$Vi*HQvO1Toxsi@$f|l6w-|XYSbVm)etA{EBq(?{%l$4u)7vlA&pJ zuPz-j7u{;yz1^mcy#vK%1eHd}=)Dca!ZLb+>$H{@ljOJo%VO{L!c3!d&+YSGO8iY0 z^+o&AGcOhli<$LQ4UPMy`@*hEU?{Fw_djPk-)HqZLD;gfVMb_IG-jd_4{NUMPzrd3j)n>!s_r6Dqf>k*VYQhOREFLf@ zp}TJ}Np5{3F{s6Fk7_ug4H|D!kraNyf_zV+4b4Pm++bQDpXZi~evSvTzNBQHGg zk%Hv#&kw8o>T--!;GM6VvLNnP`m2Tt+AYhUaSvRZ9gp91$4?|o{7_vy+fP{NqU%RB z3s-=!oNWVhU%@Rr%`qX&7Fg;g2nP`fafaV)cBQH*A|}{^xb3s@Q-=V8ooRT(M{1hR zkeUa`YB>@#-vx5@o{gtlX9A?1iK%nZ1HD!Mz^cnc>r%UWff^>sP~P^F4*zHls@fTc zb6loUl~mZVaNC0XT-1{M%n=6ZH8n1*p~sxlx7VV}0dV=k_76TVDJ=?)*Q!5z9SgEa z!${IC_(vj-9)UAJ$qJo@R`{Qtr=Hv$(CiG3nV`Iepg8P-5p-HDCdtsZ#e4d-!A;lN z_g{z~bMd+~@-ald0m7HkVexjoRpXJ4l_d~t{PF&{FLONvE2FCRh#zVzm>5gkVv;O8 z6RxMV6#87SZrPqsUq|r;w151_rpZprhY$jfUPvHv&z_Q$(~v^H^qAA5>vd?Norx)8 z^Fm^Xc=fQKh|s_#rMJ$;=1lFybMEUC|En}Ny>eFXo|1;Gc*z1hpi!}yBnxL9`Qiy5 z)uMmLZXdH^@$+a@$~4NfiSL-I$3cm{8m*r41BqX9+Q7H3UWtM1kwf=n&*qsmBGNuQ zprq-uBea8rG+#rjmK}WaiaWp!I};NOHpQzo2N=8EVv^i?!J*kV&c?)~^Vf6k`EJh^ zBL;qS#E=Vnjg38qefJ6>4JY*Jjw4!aybWmW47Rx_1c9UW(|VRJ9{<;r{fi=K4^r$*OfOc;+K?<;Fc(&9gct4=$Ix@w=;yt= z5N`_i121U%wVaIju1>3D@eB_)Jdk$D1xG;AnV4X+CH^&30wb4esWX&Scg4-Tm=;>H zW#@UPHI^F=Wod5MLHK>(>0h=Zc%7k%V*k>c73-NJF_>9umT+5B_BK)DSlnCBN7ZpT zFLj#Daa>s9-uSfU<=N`tXNVilUG`#bNN1qaz-2!QkR|FN|1fCZK-}z(MEm{HaWDB} r>(|>aH9U78`H_YZJJJ)aGXD{)&mX$(p`K)l&fp*^ttr|P3Wxt6d3^&V From 4fb15f6caefceacd2d116ecad9f27d1a2d150b1a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 00:26:43 +0100 Subject: [PATCH 09/15] :art: Format Python code with psf/black (#30) Co-authored-by: VincentAuriau --- pyalapin/__init__.py | 2 +- pyalapin/engine/engine.py | 1 - pyalapin/engine/material.py | 3 --- pyalapin/interface/interface.py | 20 +++++++++++------ pyalapin/player/ai_player.py | 13 +++++------ pyalapin/setup.py | 38 ++++++++++++++++----------------- utils/profile_game.py | 2 +- 7 files changed, 41 insertions(+), 38 deletions(-) diff --git a/pyalapin/__init__.py b/pyalapin/__init__.py index 9fa2b96..33749f8 100644 --- a/pyalapin/__init__.py +++ b/pyalapin/__init__.py @@ -3,4 +3,4 @@ """ __version__ = "0.0.1" -__author__ = 'Vincent Auriau' \ No newline at end of file +__author__ = "Vincent Auriau" diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index b62609c..647ef4b 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -985,7 +985,6 @@ def __init__(self, player1=None, player2=None, automatic_draw=True, ai=False): self.player1 = player1 elif player1 is None: - if ai: self.player1 = EasyAIPlayer(True) else: diff --git a/pyalapin/engine/material.py b/pyalapin/engine/material.py index 4c06f49..a76941c 100644 --- a/pyalapin/engine/material.py +++ b/pyalapin/engine/material.py @@ -416,7 +416,6 @@ def get_potential_moves(self, x, y): return possible_moves - @abstractmethod def get_threatened_cells_on_board(self, board): """ @@ -436,7 +435,6 @@ def get_threatened_cells_on_board(self, board): cells_threatened = [] if self.is_white(): - if x < 7: # Diagonal cells if y - 1 >= 0: @@ -446,7 +444,6 @@ def get_threatened_cells_on_board(self, board): # Symmetric for black pawns else: - if x > 0: if y - 1 >= 0: cells_threatened.append((x - 1, y - 1)) diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py index e9dcaca..2a25e57 100644 --- a/pyalapin/interface/interface.py +++ b/pyalapin/interface/interface.py @@ -38,6 +38,7 @@ def __init__(self, **kwargs): class DisplayableCell(Button): """Base class to represent a Cell as Button""" + def __init__(self, row, column, **kwargs): """ Initialization of the representation of the cell. @@ -78,6 +79,7 @@ class TableScreen(GridLayout): cells: list of DisplayableCells List of cells constituting the board """ + def __init__(self, game, **kwargs): """ Initialization of the board display. @@ -125,7 +127,7 @@ def __init__(self, game, **kwargs): path_to_img = c_img if piece.is_white(): - piece_color = (1, 1, 1, 1) # For text color, could be removed + piece_color = (1, 1, 1, 1) # For text color, could be removed path_to_img += "w" else: piece_color = (0, 0, 0, 1) @@ -152,7 +154,7 @@ def __init__(self, game, **kwargs): else: # No piece to display piece = "" - piece_color = (1, 1, 1, 1) # For text color could be removed + piece_color = (1, 1, 1, 1) # For text color could be removed path_to_img = c_img + ".png" # Unclicked path_to_down_img = "down_" + path_to_img @@ -269,7 +271,7 @@ def click_cell(self, event): self.cells[event.row][event.column].background_down, self.cells[event.row][event.column].background_normal, ) - # If no previous cell has been clicked, then it's the start cell that has been clicked, + # If no previous cell has been clicked, then it's the start cell that has been clicked, # In this case it is store, waiting fot the click on the landinc cell. if self.first_cell_clicked is None: self.first_cell_clicked = (event.row, event.column) @@ -325,9 +327,14 @@ def click_cell(self, event): # In this case, game was not possible, reset last clicks so that the player can restart # and redefine its move. else: - popup = Popup(title='Unable Move', - content=Label(text='Your selected move is not possible, please, select another one.'), - size_hint=(None, None), size=(15, 15)) + popup = Popup( + title="Unable Move", + content=Label( + text="Your selected move is not possible, please, select another one." + ), + size_hint=(None, None), + size=(15, 15), + ) popup.open() # Resets values befor next move @@ -353,6 +360,7 @@ class MyApp(App): """ Main app to use to play game, by calling MyApp().buil() and then player. """ + def __init__(self, play_with_ai=False, **kwargs): """ Initialization, with precision whether or not playing with AI. diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py index 11705c4..61268f4 100644 --- a/pyalapin/player/ai_player.py +++ b/pyalapin/player/ai_player.py @@ -20,6 +20,7 @@ class EasyAIPlayer(Player): pieces_positions_weights: dict Values for each piece to be on a certain position. """ + piece_weights = { "pawn": 10, "knight": 30, @@ -337,11 +338,11 @@ def _alpha_beta( best_move = [best_move, p_mv][np.argmax([best_score, score])] best_score = np.max([best_score, score]) - + if best_score >= beta: return best_score, best_move alpha = np.max((alpha, best_score)) - + return best_score, best_move else: @@ -363,7 +364,7 @@ def _alpha_beta( best_move = [best_move, p_mv][np.argmin([best_score, score])] best_score = np.min([best_score, score]) - + if best_score <= alpha: return best_score, best_move beta = np.min([beta, best_score]) @@ -423,7 +424,7 @@ def time_to_play(self, board, depth=3, draw_board=False): board.draw() # current_score = self._score_board(board) sel_score, sel_move = self._alpha_beta(board, depth=depth) - + return sel_move def _score_board(self, board): @@ -447,7 +448,7 @@ def _score_board(self, board): score += self.piece_positions_weights[piece_type][piece.x][piece.y] own_king = board.all_material[self.color]["alive"]["king"] if len(own_king) == 0: - score -= 1000 + score -= 1000 else: own_king = own_king[0] if board.get_cell(own_king.x, own_king.y).is_threatened( @@ -464,7 +465,7 @@ def _score_board(self, board): adv_king = board.all_material[adv_color]["alive"]["king"] if len(adv_king) == 0: - score -= 1000 + score -= 1000 else: adv_king = adv_king[0] if board.get_cell(adv_king.x, adv_king.y).is_threatened( diff --git a/pyalapin/setup.py b/pyalapin/setup.py index f294ebf..db26aab 100644 --- a/pyalapin/setup.py +++ b/pyalapin/setup.py @@ -1,4 +1,3 @@ - from setuptools import setup, find_packages VERSION = "0.0.1" @@ -11,22 +10,21 @@ # Setting up setup( - name="pyalapin", - version=VERSION, - author="Vincent Auriau", - author_email="", - description=DESCRIPTION, - long_description=LONG_DESCRIPTION, - packages=find_packages(), - install_requires=["numpy"], - - keywords=['python', 'first package'], - classifiers= [ - "Development Status :: 3 - Alpha", - "Intended Audience :: Anyone", - "Programming Language :: Python :: 3", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: Linux :: Linux", - ] -) \ No newline at end of file + name="pyalapin", + version=VERSION, + author="Vincent Auriau", + author_email="", + description=DESCRIPTION, + long_description=LONG_DESCRIPTION, + packages=find_packages(), + install_requires=["numpy"], + keywords=["python", "first package"], + classifiers=[ + "Development Status :: 3 - Alpha", + "Intended Audience :: Anyone", + "Programming Language :: Python :: 3", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: Linux :: Linux", + ], +) diff --git a/utils/profile_game.py b/utils/profile_game.py index 618389a..2f8c633 100644 --- a/utils/profile_game.py +++ b/utils/profile_game.py @@ -27,4 +27,4 @@ game_is_on = game.move(ai_move, game.player2) score = my_player._score_board(game.board) print(my_player.model.summary()) -""" \ No newline at end of file +""" From c43d5b5fb3f37f0a38af8b21e7d51541e653a215 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 00:30:44 +0100 Subject: [PATCH 10/15] FIX: fixes coming from the directory change of name --- pyproject.toml | 2 +- tests/prev_engine_test.py | 6 ++---- tests/unit_test/engine_test.py | 2 +- tests/unit_test/test_material.py | 4 ++-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4a9b9ba..195e4d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,5 +14,5 @@ requires-python = ">=3.8" [tool.setuptools] packages = [ "tests", - "python" + "pyalapin" ] diff --git a/tests/prev_engine_test.py b/tests/prev_engine_test.py index fd7a42e..2fdb4c0 100644 --- a/tests/prev_engine_test.py +++ b/tests/prev_engine_test.py @@ -2,12 +2,10 @@ sys.path.append("pyalapin") -import engine.engine as engine -import importlib -import engine.move as move +import pyalapin.engine.engine as engine +import pyalaping.engine.move as move import time -importlib.reload(engine) import player.ai_player as ai_player diff --git a/tests/unit_test/engine_test.py b/tests/unit_test/engine_test.py index 718143c..a019586 100644 --- a/tests/unit_test/engine_test.py +++ b/tests/unit_test/engine_test.py @@ -2,7 +2,7 @@ sys.path.append("pyalapin") -import engine.engine as engine +import pyalapin.engine.engine as engine def test_blocked_moves(): diff --git a/tests/unit_test/test_material.py b/tests/unit_test/test_material.py index 7447cf1..6aef5f2 100644 --- a/tests/unit_test/test_material.py +++ b/tests/unit_test/test_material.py @@ -2,8 +2,8 @@ sys.path.append("pyalapin") -import engine.engine as engine -import engine.material as material +import pyalapin.engine.engine as engine +import pyalapin.engine.material as material # Add verifications about own color of piece on end cell # From 0ec1b94dddf33e6395b6be4048efe444a33a26e8 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 00:34:33 +0100 Subject: [PATCH 11/15] fix... --- tests/prev_engine_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/prev_engine_test.py b/tests/prev_engine_test.py index 2fdb4c0..18cd34a 100644 --- a/tests/prev_engine_test.py +++ b/tests/prev_engine_test.py @@ -3,7 +3,7 @@ sys.path.append("pyalapin") import pyalapin.engine.engine as engine -import pyalaping.engine.move as move +import pyalapin.engine.move as move import time import player.ai_player as ai_player From 1d43e5a1b61d80dc11fed9f7112f5c9504297033 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 11:43:54 +0100 Subject: [PATCH 12/15] ENH: cells now color only very last move, even with AI --- pyalapin/interface/interface.py | 52 +++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py index 2a25e57..3e17e8d 100644 --- a/pyalapin/interface/interface.py +++ b/pyalapin/interface/interface.py @@ -302,6 +302,8 @@ def click_cell(self, event): # If AI is playing, then trigger its next move with time_to_play method. if self.ai_playing: print("Time for AI") + + # Resets background colors of player ai_move = self.game.player2.time_to_play(self.game.board) self.game.board.draw() game_is_on = self.game.move(ai_move, self.game.player2) @@ -309,8 +311,23 @@ def click_cell(self, event): # Verify game is still going on # Actually we consider that an AI cannot trigger an impossible move here # Maybe should be modified ? + if game_is_on[0]: self.update() + ( + self.cells[ai_move.start.x][ai_move.start.y].background_normal, + self.cells[ai_move.start.x][ai_move.start.y].background_down, + ) = ( + self.cells[ai_move.start.x][ai_move.start.y].background_down, + self.cells[ai_move.start.x][ai_move.start.y].background_normal, + ) + ( + self.cells[ai_move.end.x][ai_move.end.y].background_normal, + self.cells[ai_move.end.x][ai_move.end.y].background_down, + ) = ( + self.cells[ai_move.end.x][ai_move.end.y].background_down, + self.cells[ai_move.end.x][ai_move.end.y].background_normal, + ) else: if isinstance(game_is_on[1], str): self.finish_game(game_is_on[1]) @@ -337,23 +354,26 @@ def click_cell(self, event): ) popup.open() - # Resets values befor next move - row, col = self.first_cell_clicked - ( - self.cells[row][col].background_normal, - self.cells[row][col].background_down, - ) = ( - self.cells[row][event.column].background_down, - self.cells[event.row][col].background_normal, - ) + if not self.ai_playing: + # Resets values befor next move + # If AI is playing, it is handled with self.update() + row, col = self.first_cell_clicked + ( + self.cells[row][col].background_normal, + self.cells[row][col].background_down, + ) = ( + self.cells[row][col].background_down, + self.cells[row][col].background_normal, + ) + ( + self.cells[event.row][event.column].background_normal, + self.cells[event.row][event.column].background_down, + ) = ( + self.cells[event.row][event.column].background_down, + self.cells[event.row][event.column].background_normal, + ) + self.first_cell_clicked = None - ( - self.cells[event.row][event.column].background_normal, - self.cells[event.row][event.column].background_down, - ) = ( - self.cells[event.row][event.column].background_down, - self.cells[event.row][event.column].background_normal, - ) class MyApp(App): From c2a408a8a90bd8e24ee6f1317294a1e02c061e83 Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 16:10:32 +0100 Subject: [PATCH 13/15] ADD: possibility to add randomness in board scoring --- pyalapin/player/ai_player.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py index 61268f4..7084715 100644 --- a/pyalapin/player/ai_player.py +++ b/pyalapin/player/ai_player.py @@ -19,6 +19,8 @@ class EasyAIPlayer(Player): Values of the different pieces. pieces_positions_weights: dict Values for each piece to be on a certain position. + random_coeff: int + Coefficient of randomness that will be added to the move score. """ piece_weights = { @@ -92,16 +94,19 @@ class EasyAIPlayer(Player): ], } - def __init__(self, *args, **kwargs): + def __init__(self, white_side, random_coeff=0, *args, **kwargs): """Initialization of the player. Parameters ---------- white_side : bool Whether the player plays with white or black pieces. + random_coeff: int + Coefficient of randomness that will be added to the move score. """ - super().__init__(*args, **kwargs) + super().__init__(white_side=white_side, *args, **kwargs) self.color = "white" if self.white_side else "black" + self.random_coeff = random_coeff if self.white_side: # Reverse position values for white pieces player for key, values in self.piece_positions_weights.items(): @@ -335,9 +340,9 @@ def _alpha_beta( beta=beta, is_white=not is_white, ) - - best_move = [best_move, p_mv][np.argmax([best_score, score])] - best_score = np.max([best_score, score]) + random_noise = np.random.randint(0, self.random_coeff) + best_move = [best_move, p_mv][np.argmax([best_score, score + random_noise])] + best_score = np.max([best_score, score + random_noise]) if best_score >= beta: return best_score, best_move @@ -368,7 +373,6 @@ def _alpha_beta( if best_score <= alpha: return best_score, best_move beta = np.min([beta, best_score]) - ###print("BBBBESTTT MOOVEEE", best_move, best_move.start.x, best_move.start.y, best_move.end.x, best_move.end.y, best_score) return best_score, best_move def random_move(self, board): From c5ad57eb7e697c1985564e61dd2e34f9d077afdd Mon Sep 17 00:00:00 2001 From: VincentAURIAU Date: Wed, 1 Nov 2023 16:11:02 +0100 Subject: [PATCH 14/15] small fixes --- pyalapin/engine/engine.py | 3 +++ pyalapin/interface/interface.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index 647ef4b..e94264b 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -430,6 +430,9 @@ def deepcopy(self, light=True): copied_material = self.light_deep_copy_material() else: copied_material = self.deep_copy_material() + + assert len(copied_material["black"]["alive"]["king"]) > 0, "Black king is dead ?" + assert len(copied_material["white"]["alive"]["king"]) > 0, "White king is dead ?" copied_object.white_king = copied_material["white"]["alive"]["king"][0] copied_object.black_king = copied_material["black"]["alive"]["king"][0] copied_object.all_material = copied_material diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py index 3e17e8d..5971d02 100644 --- a/pyalapin/interface/interface.py +++ b/pyalapin/interface/interface.py @@ -374,6 +374,8 @@ def click_cell(self, event): ) self.first_cell_clicked = None + if not validated_move: + self.update() class MyApp(App): From 12e346604bcc85543f87097c3c42732750c9b110 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:57:46 +0100 Subject: [PATCH 15/15] :art: Format Python code with psf/black (#31) Co-authored-by: VincentAuriau --- pyalapin/engine/engine.py | 8 ++++++-- pyalapin/interface/interface.py | 16 ++++++++++++---- pyalapin/player/ai_player.py | 4 +++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pyalapin/engine/engine.py b/pyalapin/engine/engine.py index e94264b..2b91814 100644 --- a/pyalapin/engine/engine.py +++ b/pyalapin/engine/engine.py @@ -431,8 +431,12 @@ def deepcopy(self, light=True): else: copied_material = self.deep_copy_material() - assert len(copied_material["black"]["alive"]["king"]) > 0, "Black king is dead ?" - assert len(copied_material["white"]["alive"]["king"]) > 0, "White king is dead ?" + assert ( + len(copied_material["black"]["alive"]["king"]) > 0 + ), "Black king is dead ?" + assert ( + len(copied_material["white"]["alive"]["king"]) > 0 + ), "White king is dead ?" copied_object.white_king = copied_material["white"]["alive"]["king"][0] copied_object.black_king = copied_material["black"]["alive"]["king"][0] copied_object.all_material = copied_material diff --git a/pyalapin/interface/interface.py b/pyalapin/interface/interface.py index 5971d02..5e1d0e7 100644 --- a/pyalapin/interface/interface.py +++ b/pyalapin/interface/interface.py @@ -315,11 +315,19 @@ def click_cell(self, event): if game_is_on[0]: self.update() ( - self.cells[ai_move.start.x][ai_move.start.y].background_normal, - self.cells[ai_move.start.x][ai_move.start.y].background_down, + self.cells[ai_move.start.x][ + ai_move.start.y + ].background_normal, + self.cells[ai_move.start.x][ + ai_move.start.y + ].background_down, ) = ( - self.cells[ai_move.start.x][ai_move.start.y].background_down, - self.cells[ai_move.start.x][ai_move.start.y].background_normal, + self.cells[ai_move.start.x][ + ai_move.start.y + ].background_down, + self.cells[ai_move.start.x][ + ai_move.start.y + ].background_normal, ) ( self.cells[ai_move.end.x][ai_move.end.y].background_normal, diff --git a/pyalapin/player/ai_player.py b/pyalapin/player/ai_player.py index 7084715..a24775e 100644 --- a/pyalapin/player/ai_player.py +++ b/pyalapin/player/ai_player.py @@ -341,7 +341,9 @@ def _alpha_beta( is_white=not is_white, ) random_noise = np.random.randint(0, self.random_coeff) - best_move = [best_move, p_mv][np.argmax([best_score, score + random_noise])] + best_move = [best_move, p_mv][ + np.argmax([best_score, score + random_noise]) + ] best_score = np.max([best_score, score + random_noise]) if best_score >= beta: