Esempio n. 1
0
 void OnEnable()
 {
     _visualizedMove     = Move.InvalidMove;
     _isSelectingMove    = false;
     _validMoves         = null;
     _moveChoiceCallback = null;
 }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
 public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback)
 {
     _isSelectingMove    = true;
     _validMoves         = board.GetAllValidMoves();
     _board              = board;
     _moveChoiceCallback = moveChoiceCallback;
 }
Esempio n. 4
0
 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)]]);
    }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    public override void OnGameOverEvent(bool isWinner)
    {
        if (isWinner)
        {
            Debug.LogFormat("{0} is the winner!", name);
        }

        _visualizedMove     = Move.InvalidMove;
        _isSelectingMove    = false;
        _validMoves         = null;
        _moveChoiceCallback = null;
    }
Esempio n. 8
0
    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);
    }
Esempio n. 9
0
 //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);
Esempio n. 10
0
 public override void OnMyMoveEvent(Board board, MoveChoiceCallback moveChoiceCallback)
 {
     base.OnMyMoveEvent(board, moveChoiceCallback);
     VisualizeBrain();
 }