Для чтения из массива нужным вам методом, пропустите циклы for и просто получите прямой доступ к массиву ...
// Only X's
Console.Write(board[1, 0]);
Console.Write(board[1, 1]);
Console.WriteLine(board[1, 2]);
// Diagonal
Console.Write(board[0, 0]);
Console.Write(board[1, 1]);
Console.WriteLine(board[2, 2]);
Используйте циклы for, если вы хотите перебирать и отображать все значения, содержащиеся в массиве. Удалите i + 1 или 2 и j + 1 или 2, так как они в конечном итоге превысят ограничения массива и приведут к ошибке
for (int i = 0; i < board.GetLength(0); i++)
{
for (int j = 0; j < board.GetLength(1); j++)
{
Console.WriteLine(board[i, j]);
}
}
Для поиска победителей вы можете сделать что-то простое, например, проверить все 8 комбинации:
if ((board[0, 0] == charToCompare && board[0, 1] == charToCompare && board[0, 2] == charToCompare) || //Row 1
(board[1, 0] == charToCompare && board[1, 1] == charToCompare && board[1, 2] == charToCompare) || //Row 2
(board[2, 0] == charToCompare && board[2, 1] == charToCompare && board[2, 2] == charToCompare) || //Row 3
(board[0, 0] == charToCompare && board[1, 0] == charToCompare && board[2, 0] == charToCompare) || //Col 1
(board[1, 0] == charToCompare && board[1, 1] == charToCompare && board[1, 2] == charToCompare) || //Col 2
(board[2, 0] == charToCompare && board[2, 1] == charToCompare && board[2, 2] == charToCompare) || //Col 3
(board[0, 0] == charToCompare && board[1, 1] == charToCompare && board[2, 2] == charToCompare) || //Diagonal Top to Bottom
(board[2, 0] == charToCompare && board[1, 1] == charToCompare && board[0, 2] == charToCompare)) //Diagonal Bottom to Top
{
Console.WriteLine("Winner");
}
Или изменить исходный код с 1 для l oop и разрывов, вы можете сделать так. Вероятно, есть гораздо лучшие способы, но для эффективной реализации вам нужно будет внедрить процедуру проверки решений, которые вы желаете
char[,] board = { { 'X', 'O', 'O' }
, { 'X', 'X', 'O' }
, { 'O', 'X', 'X' } };
char charToCompare = 'X';
for (int i = 0; i < 3; i++)
{
if (board[i, 0] == charToCompare && board[i, 1] == charToCompare && board[i, 2] == charToCompare)
{
Console.WriteLine($"Winner Row {i}");
break;
}
if (board[0, i] == charToCompare && board[1, i] == charToCompare && board[2, i] == charToCompare)
{
Console.WriteLine($"Winner Column {i}");
break;
}
}
if (board[0, 0] == charToCompare && board[1, 1] == charToCompare && board[2, 2] == charToCompare)
{
Console.WriteLine("Winner diagonal top to bottom");
}
if (board[2, 0] == charToCompare && board[1, 1] == charToCompare && board[0, 2] == charToCompare)
{
Console.WriteLine("Winner diagonal bottom to top");
}