28 lines
833 B
Python
28 lines
833 B
Python
import os
|
|
import chess
|
|
from chesspp.i_strategy import IStrategy
|
|
import chess.engine
|
|
|
|
_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
class StockFishStrategy(IStrategy):
|
|
|
|
def __init__(self):
|
|
self._stockfish = None
|
|
|
|
@property
|
|
def stockfish(self) -> chess.engine.SimpleEngine:
|
|
if self._stockfish is None:
|
|
self._stockfish = self.stockfish = chess.engine.SimpleEngine.popen_uci(
|
|
os.path.join(_DIR, "../stockfish/stockfish-ubuntu-x86-64-avx2"))
|
|
return self._stockfish
|
|
|
|
@stockfish.setter
|
|
def stockfish(self, stockfish):
|
|
self._stockfish = stockfish
|
|
|
|
def pick_next_move(self, board: chess.Board) -> chess.Move | None:
|
|
move = self.stockfish.play(board, chess.engine.Limit(depth=4)).move
|
|
print("stockfish picked:", move)
|
|
return move
|