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(); }
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() }); }
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); }
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; }
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() }; }