Exemplo n.º 1
0
        public async Task GameTurn(CancellationTokenSource cancellationTokenSource)
        {
            if (PlayerOnTurn.IsAI)
            {
                await(PlayerOnTurn.TryToPlay(GameBoard, cancellationTokenSource));
            }
            if (!cancellationTokenSource.IsCancellationRequested)
            {
                if (!PlayerOnTurn.Finished)
                {
                    await PlayerOnTurn.Selection(ToIntToRow(SelectedPosition), ToIntToCol(SelectedPosition), GameBoard, cancellationTokenSource);

                    if (PlayerOnTurn.PlayerMove[(int)GameConstants.MoveParts.result] == (int)GameConstants.MoveResult.Fail && !PlayerOnTurn.StartPositionSelected)
                    {
                        SelectedPosition = "none - Failed Move, Play again.";
                    }
                }
                if (PlayerOnTurn.Finished)
                {
                    GameHistory.Push(new List <int>(PlayerOnTurn.PlayerMove));
                    PlayerOnTurn.PlayerMove.ForEach(Console.Write);
                    PlayerOnTurn.Finished = false;
                    CheckEndGame();
                    RedoStack.Clear();
                    BestMove = null;
                    EndTurn();
                }
            }
        }