Exemplo n.º 1
0
        public void SetupNewGame(IEnumerable <ICompetitor> competitors)
        {
            Reset();

            foreach (var competitor in competitors)
            {
                ITicTacToeBot bot = !string.IsNullOrEmpty(competitor.Url) ? new TicTacToeWebBot(competitor) : new TicTacToeLocalBot(competitor);
                _competitors.Add(bot);
            }

            InitializePlayers();
            ClearTheBoard();
        }
Exemplo n.º 2
0
        private async Task <RoundPartialHistory> PerformNextMove(ITicTacToeBot competitor)
        {
            var move = await competitor.NextMoveAsync(TicTacToeViewModel.Board);

            string moveDescription;

            if (IsNextMoveValid(move))
            {
                TicTacToeViewModel.Board[move.X, move.Y] = competitor.PlayerSign;
                moveDescription = string.Format("{0} has marked field [{1},{2}] with {3}", competitor.Name, move.X, move.Y, competitor.PlayerSign);
            }
            else
            {
                moveDescription = string.Format("{0} has performed an illegal move {{{1}, {2}}}. No action was performed\n", competitor.Name, move.X, move.Y);
            }

            return(new RoundPartialHistory()
            {
                Caption = moveDescription,
                BoardState = ExportBoardState()
            });
        }
Exemplo n.º 3
0
        private async Task <bool> IsPlayerWon(ITicTacToeBot player)
        {
            var array     = TicTacToeViewModel.Board;
            var diagonal1 = 0;
            var diagonal2 = 0;
            var xLine     = new int[3];
            var yLine     = new int[3];

            for (int i = 0; i < array.XSize; i++)
            {
                for (int j = 0; j < array.YSize; j++)
                {
                    if (array[i, j] == player.PlayerSign)
                    {
                        xLine[i]++;
                        yLine[j]++;
                    }

                    if ((i == j) && array[j, i] == player.PlayerSign)
                    {
                        diagonal1++;
                    }

                    if ((((i == 1) && (j == 1)) || ((i == 2) && (j == 0)) || ((i == 0) && (j == 2))) && array[i, j] == player.PlayerSign)
                    {
                        diagonal2++;
                    }
                }

                if (diagonal1 == 3)
                {
                    TicTacToeViewModel.ArrayOfDiagonalLines[0, 0] = Visibility.Visible;
                    player.IsWinner = true;
                    return(true);
                }
                if (diagonal2 == 3)
                {
                    TicTacToeViewModel.ArrayOfDiagonalLines[1, 0] = Visibility.Visible;
                    player.IsWinner = true;
                    return(true);
                }
                for (int j = 0; j < 3; j++)
                {
                    if (xLine[j] == 3)
                    {
                        TicTacToeViewModel.ArrayOfHorizontalLines[j, 0] = Visibility.Visible;
                        player.IsWinner = true;
                        return(true);
                    }
                    if (yLine[j] == 3)
                    {
                        TicTacToeViewModel.ArrayOfVerticalLines[j, 0] = Visibility.Visible;
                        player.IsWinner = true;
                        return(true);
                    }
                }
            }

            player.IsWinner = false;
            return(false);
        }
Exemplo n.º 4
0
        private async Task<bool> IsPlayerWon(ITicTacToeBot player)
        {
            var array = TicTacToeViewModel.Board;
            var diagonal1 = 0;
            var diagonal2 = 0;
            var xLine = new int[3];
            var yLine = new int[3];

            for (int i = 0; i < array.XSize; i++)
            {
                for (int j = 0; j < array.YSize; j++)
                {
                    if (array[i, j] == player.PlayerSign)
                    {
                        xLine[i]++;
                        yLine[j]++;
                    }

                    if ((i == j) && array[j, i] == player.PlayerSign)
                    {
                        diagonal1++;
                    }

                    if ((((i == 1) && (j == 1)) || ((i == 2) && (j == 0)) || ((i == 0) && (j == 2))) && array[i, j] == player.PlayerSign)
                    {
                        diagonal2++;
                    }
                }

                if (diagonal1 == 3)
                {
                    TicTacToeViewModel.ArrayOfDiagonalLines[0, 0] = Visibility.Visible;
                    player.IsWinner = true;
                    await DelayHelper.DelayAsync(_configuration.NextMatchDelay);
                    return true;
                }
                if (diagonal2 == 3)
                {
                    TicTacToeViewModel.ArrayOfDiagonalLines[1, 0] = Visibility.Visible;
                    player.IsWinner = true;
                    await DelayHelper.DelayAsync(_configuration.NextMatchDelay);
                    return true;
                }
                for (int j = 0; j < 3; j++)
                {
                    if (xLine[j] == 3)
                    {
                        TicTacToeViewModel.ArrayOfHorizontalLines[j, 0] = Visibility.Visible;
                        player.IsWinner = true;
                        await DelayHelper.DelayAsync(_configuration.NextMatchDelay);
                        return true;
                    }
                    if (yLine[j] == 3)
                    {
                        TicTacToeViewModel.ArrayOfVerticalLines[j, 0] = Visibility.Visible;
                        player.IsWinner = true;
                        await DelayHelper.DelayAsync(_configuration.NextMatchDelay);
                        return true;
                    }
                }
            }

            player.IsWinner = false;
            return false;
        }
Exemplo n.º 5
0
        private async Task<RoundPartialHistory> PerformNextMove(ITicTacToeBot competitor)
        {
            var move = await competitor.NextMoveAsync(TicTacToeViewModel.Board);
            string moveDescription;

            if (IsNextMoveValid(move))
            {
                TicTacToeViewModel.Board[move.X, move.Y] = competitor.PlayerSign;
                moveDescription = string.Format("{0} has marked field [{1},{2}] with {3}", competitor.Name, move.X, move.Y, competitor.PlayerSign);
            }
            else
            {
                moveDescription = string.Format("{0} has performed an illegal move {{{1}, {2}}. No action was performed\n", competitor.Name, move.X, move.Y);
            }

            return new RoundPartialHistory()
            {
                Caption = moveDescription,
                BoardState = ExportBoardState()
            };
        }