Ejemplo n.º 1
0
        public IBoard MakeMoveOnNewBoard(IMove move)
        {
            var _board = new Dictionary <IField, IFigure>();

            foreach (var _place in gameBoard)
            {
                _board.Add(_place.Key, _place.Value);
            }
            _board[move.GetField()] = move.GetFigure();
            return(new StrategoBoard(_board));
        }
Ejemplo n.º 2
0
        private async void CPUMove()
        {
            while (game.players[playerTurn].GetPlayerType() == PlayerType.CPU)
            {
                IMove move = null;
                var   task = Task.Run(() =>
                {
                    move = game.AIMakeMove();
                });
                await task;

                if (move == null)
                {
                    watch.Stop();
                    return;
                }
                var btn = buttons[10000 * move.GetField().GetX() + move.GetField().GetY()];
                UpdateGUI(btn);
            }
        }
Ejemplo n.º 3
0
        public IMove GetBestMove()
        {
            var   moves    = GetPossibleMoves();
            IMove bestMove = null;

            foreach (var move in moves)
            {
                if (bestMove == null ||
                    Evaluator.RateMove(move.GetField(), this) > Evaluator.RateMove(bestMove.GetField(), this))
                {
                    bestMove = move;
                }
            }
            return(bestMove);
        }
Ejemplo n.º 4
0
 public double UndoMove(IMove move)
 {
     gameBoard[move.GetField()] = null;
     return(-move.GetPointsForMove());
 }
Ejemplo n.º 5
0
 public double MakeMove(IMove move)
 {
     move.SetPointsForMove(Evaluator.RateMove(move.GetField(), this));
     gameBoard[move.GetField()] = move.GetFigure();
     return(move.GetPointsForMove());
 }