Я новичок в прохождении онлайн-курса, и в этом курсе мне предстоит с нуля создать консольную игру в крестики-нолики.Я решил использовать 2D-массив для хранения «графиков» игровой сетки.Для циклического перемещения по массиву с целью сравнения входных данных проигрывателя и элементов массива я выбрал вложенный цикл for, который, кажется, работает нормально.Он идентифицирует правильный элемент, который соответствует входу игрока, но по какой-то причине я не могу обновить конкретный элемент.Я надеюсь, что это имеет смысл.
Я не пытался ничего другого, кроме как использовать цикл foreach, но я не могу понять, как заставить его итерацию должным образом через многомерный массив.
string[,] myArray = { { "1", "2", "3", }, { "4", "5", "6" }, { "7", "8",
"9" } };
Console.WriteLine("Player 1's go - enter a number to place your turn");
string playerInput = Console.ReadLine();
try
{
int parsedInput = Int32.Parse(playerInput);
if (parsedInput > 9)
{
Console.WriteLine("Only enter a number that is in use on the game screen");
PlayerTurn(myArray);
}
}
catch (FormatException)
{
Console.WriteLine("Please input the correct format");
PlayerTurn(myArray);
}
catch (OverflowException)
{
Console.WriteLine("Only enter a number you can see on the game screen");
PlayerTurn(myArray);
}
for (int i = 0; i < myArray.GetLength(0); i++)
{
for (int j = 0; j < myArray.GetLength(1); j++)
{
if (playerInput == myArray[i,j])
{
Console.WriteLine(myArray[i,j]); // this is to check
//that the if statement is working (which it is)
myArray[i, j] = "X"; // this isnt working correctly
break;
}
}
}
Когда игрок нажимает клавишу 1, я ожидаю, что элемент myArray [0,0] изменится с «1» на «X», но ничего не происходит.