我是一个在线课程的初学者,在这个课程中,我面临着从头开始制作主机Tic-Tac-Toe游戏的挑战。我决定使用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”,但是什么也没发生。
答案 0 :(得分:0)
我认为您的PlayerTurn方法的主体是您发布的代码块。每次调用PlayerTurn都会一次又一次使用给定值初始化myArray。您应该在PlayerTurn之外找到myArray变量
答案 1 :(得分:0)
首先,您创建了一个多维数组(字段)。
这意味着您必须使用来自用户的2个输入才能到达其中的一个数字 多维数组(字段)。 而且您似乎没有游戏领域。
我建议您在嵌套的for循环中放入WriteLines以获取游戏场。
您还应该尝试将整个内容放入while循环中,以使其重新启动。 仅将数组声明放在外面! (尝试一下,如果您不明白,我会帮忙)