我想在C#上创建一个简单的方块,用作游戏板。 我试图使用嵌套循环来做这件事,并研究了人们如何以这种方式制作方块,但是我很难理解它是如何完成的。 这是我目前为董事会编写的代码:
for (int x = 0; x < 8; x = x + 1)
for (int y = 0; y < 8; y = y + 1)
if (board[x, y] == SquareState.gotCheese)
Console.Write("C");
else
Console.Write("*");
如果没有奶酪,C确实打印出来,而且C上有奶酪,但是它们全部排成一行并且看起来不像一块板。像这样:
*****************ç*******
如果有任何帮助,这是董事会的结构
static SquareState[,] board = new SquareState[8, 8];
答案 0 :(得分:3)
它正在全部写入的事实是因为您现在告诉控制台创建一个新行。 Console.write()
只是将字符串与先例内联。
循环也应该是y-first循环,因此您将循环每个水平值(x),然后传递给新的垂直值。
for (int y = 0; y < 8; y++){
for (int x = 0; x < 8; x++){
if (board[x, y] == SquareState.gotCheese)
Console.Write("C");
else
Console.Write("*");
}
Console.WriteLine();
}
如果你没有交换周期,你的结果将是错误的,例如在3乘3平方,其中x从0到2,从左到右,y从0到2从上到下,你将拥有:
External FOR entering x = 0
Internal FOR entering y = 0
writing the 'cell' (0, 0)
Internal FOR entering y = 1
writing the 'cell' (0, 1)
Internal FOR entering y = 2
writing the 'cell' (0, 2)
writing a new line
External FOR entering x = 1
...
结果将是:
(0,0)(0,1)(0,2)
(1,0)(1,1)(1,2)
(2,0)(2,1)(2,2)
那是错的,应该是:
--------------------> x
(0,0)(1,0)(2,0) |
(0,1)(1,1)(2,1) |
(0,2)(1,2)(2,2) |
V y
答案 1 :(得分:2)
您需要在内部循环之后但在外部循环内打印换行符。
Console.WriteLine( “”);
答案 2 :(得分:2)
for (int x = 0; x < 8; x = x + 1){
for (int y = 0; y < 8; y = y + 1){
if (board[x, y] == SquareState.gotCheese)
Console.Write("C");
else
Console.Write("*");
Console.WriteLine("");
}
}