void OnEnable() { _visualizedMove = Move.InvalidMove; _isSelectingMove = false; _validMoves = null; _moveChoiceCallback = null; }
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { if (!_hasInitialized) { _callback = moveChoiceCallback; return; } if (_isUsingStandaloneExecutable && board.LastMove == null) { //Benzene behaviour differs here. The standalones automatically play the first move but in benzene must send command 'genmove b' to get opening move. moveChoiceCallback(new Move(new Vector2Int((Settings.BoardDimensions.x) / 2, (Settings.BoardDimensions.y - 1) / 2))); return; } //Ensure states are consistent if (board.LastMove != null) { SolverParser.IssueCommand(BenzeneCommands.play(PlayerColours.White, board.LastMove)); } var moveStr = SolverParser.IssueCommand(BenzeneCommands.genmove(PlayerColours.Black)); var move = BenzeneUtil.TryToParseMove(moveStr); moveChoiceCallback(move); }
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { _isSelectingMove = true; _validMoves = board.GetAllValidMoves(); _board = board; _moveChoiceCallback = moveChoiceCallback; }
public override void Reset() { _visualizedMove = null; _isSelectingMove = false; _validMoves = null; _moveChoiceCallback = null; }
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { var allMoves = board.GetAllValidMoves(); var keys = allMoves.Keys; moveChoiceCallback(allMoves[keys[Random.Range(0, keys.Count)]]); }
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { // var allMoves = board.GetAllValidMoves(); // var keys = allMoves.Keys; // moveChoiceCallback(allMoves[keys[Random.Range(0, keys.Count)]]); Move move = new MCTS.UCT().getMove(board, _numSimulations); moveChoiceCallback(move); }
public override void OnGameOverEvent(bool isWinner) { if (isWinner) { Debug.LogFormat("{0} is the winner!", name); } _visualizedMove = Move.InvalidMove; _isSelectingMove = false; _validMoves = null; _moveChoiceCallback = null; }
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { var allMoves = board.GetAllValidMoves(); var min = int.MaxValue; Move bestMove = new Move(); foreach (var move in allMoves.Values) { var simulatedBoard = new Board(board); simulatedBoard.PlayMove(move); var numOpponentMoves = simulatedBoard.GetAllValidMoves().Count; if (numOpponentMoves > min) { continue; } min = numOpponentMoves; bestMove = move; } moveChoiceCallback(bestMove); }
//Important to offer a callback for choosing moves since humans and searching bots have very long latencies when generating moves. public abstract void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback);
public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback) { base.OnMyMoveEvent(board, moveChoiceCallback); VisualizeBrain(); }