编辑:哦,我的上帝 - 这就是复制/粘贴对你的作用。我忘了删除循环外的那个。感谢每个人。并感谢 Doorknob冰
我对编程非常陌生,而且我正在尝试使用我所知道的(这并不多)创建一个Tic Tac Toe游戏。我知道我可能会以一种可以想象得到的效率最低的方式来解决它,但我现在不想解决这个问题,我只是希望能够(几乎)完全依靠我自己来完成这项任务。在我看到我应该如何做之前工作。
无论如何,我已经到了可以通过调用方法来打印网格的点,现在我正在尝试找到一种方法来获取用户输入以标记网格位置(我稍后会将其转换为方法)。
然而,每当我运行程序并输入'1'时,我的while循环再次出现,我必须再次输入'1',但这次第二次它会做我第一次想到的并重新打印更新的网格。
这是我的代码:
namespace TicTacToe
{
class Program
{
static void Main(string[] args)
{
int userChoice = 0;
bool inputCheck = true;
string[,] grid = new string[3, 3];
grid[0, 0] = "[ ]";
grid[0, 1] = "[ ]";
grid[0, 2] = "[ ]";
grid[1, 0] = "[ ]";
grid[1, 1] = "[ ]";
grid[1, 2] = "[ ]";
grid[2, 0] = "[ ]";
grid[2, 1] = "[ ]";
grid[2, 2] = "[ ]";
Console.WriteLine(printGrid(grid));
Console.Write("Please choose a space with coordinates 1 (top left) to 9 (bottom right): ");
userChoice = int.Parse(Console.ReadLine());
while (inputCheck == true)
{
inputCheck = false;
Console.Write("Please choose a space with coordinates 1 (top left) to 9 (bottom right): ");
userChoice = int.Parse(Console.ReadLine());
if (userChoice == 1)
grid[0, 0] = "[X]";
else if (userChoice == 2)
grid[0, 1] = "[X]";
else if (userChoice == 3)
grid[0, 2] = "[X]";
else if (userChoice == 4)
grid[1, 0] = "[X]";
else if (userChoice == 5)
grid[1, 1] = "[X]";
else if (userChoice == 6)
grid[1, 2] = "[X]";
else if (userChoice == 7)
grid[2, 0] = "[X]";
else if (userChoice == 8)
grid[2, 1] = "[X]";
else if (userChoice == 9)
grid[2, 2] = "[X]";
else
inputCheck = true;
};
Console.WriteLine(printGrid(grid));
Console.ReadLine();
}
public static string printGrid(string[,] grid)
{
int rowLength = grid.GetLength(0);
int columnLength = grid.GetLength(1);
for (int i = 0; i < columnLength; i++)
{
for (int j = 0; j < rowLength; j++)
{
Console.Write("{0} ", grid[i, j]);
}
Console.WriteLine("\n"); //double line spacing
}
return null;
}
}
}
我似乎无法解决为什么它第二次工作但不是第一次工作?我已经仔细检查过我是否正确地将我创建的bool放入循环中。
也许这与我在循环中的userChoice分配有关?
编辑:哦,我的上帝 - 这就是复制/粘贴对你的作用。我忘了删除循环外的那个。感谢每个人。并感谢 Doorknob冰
答案 0 :(得分:0)
正如@Doorknob冰所说,你要求输入两次。当你第一次提出这个问题时,你实际上并没有对它做任何事情,所以这就是似乎什么都不做的原因,尽管这正是你编写它的目的。
我建议您考虑一下您的实际需求:程序应该至少接收一次用户输入,然后验证它是否是有效位置。如果有效,则while循环退出。
这正是do{ stuff } while(condition);
循环的用途。