绘图方块/游戏板c#

时间:2015-12-07 00:35:53

标签: c#

我想在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];

3 个答案:

答案 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("");
            }
}