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)); }
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); } }
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); }
public double UndoMove(IMove move) { gameBoard[move.GetField()] = null; return(-move.GetPointsForMove()); }
public double MakeMove(IMove move) { move.SetPointsForMove(Evaluator.RateMove(move.GetField(), this)); gameBoard[move.GetField()] = move.GetFigure(); return(move.GetPointsForMove()); }