c#尝试使阵列图工作

时间:2016-05-04 20:30:31

标签: c# arrays multidimensional-array drawing

public static void map_one()
    {
        const int width = 10;
        const int height = 5;

        int[,] map = new int[width, height] {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
                                             "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
                                             "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
                                             "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",
                                             "0", "0", "0", "0", "0", "0", "0", "0", "0", "0",};

        map[playerx, playery] = 1;
        for (height = 0; height < 20; height++)
        {
            for(width = 0; width < 20; width++)
            {
                Console.Write(map[width, height] + "");
            }
            Console.WriteLine();
        }

    }

我遇到了你在那里看到的数组的问题,它告诉我“预期数组初始化长度为'10'。然后我写出的代码实际绘制了整个事情,在循环中我得到高度和宽度的问题“作业的左侧必须是变量,属性或索引器”

如果您需要更多信息,请询问。

3 个答案:

答案 0 :(得分:2)

初始化时不需要指定数组维度

像这样使用

  int[,] map = new int[,] {...}

编辑:同样在你循环中你将高度和宽度的限制设置为20,这将导致运行时异常

改为:

int width = map.GetLength(0);
int height = map.GetLength(1);

编辑:

您的最终代码应如下所示

    const int width = 10;
    const int height = 5;

    var map = new int[width, height];

    map[playerx, playery] = 1;
    for (int h= 0; h< map.GetLength(1); h++)
    {
        for(int w= 0; w< map.GetLength(0); w++)
        {
            Console.Write(map[w, h] + "");
        }
        Console.WriteLine();
    }

答案 1 :(得分:0)

很少有问题要注意..

一:

  

&#34; 0&#34;,};

语法错误就在那里:)

二:

声明你的宽度和身高&#34; const&#34;。因此,您无法在声明后为其分配任何值。

三:

  

int [,] map = new int [width,height];

是您所需要的,因为默认情况下,该数组中的所有值都将自动初始化为0.

此外,您不能将类似"0"的字符串分配给整数(int)。

答案 2 :(得分:0)

使用1D数组初始化2D数组 它应该像

int[,] map = int[2,2] { {0, 0}, {0, 0}};

其次,你在循环中使用的2个索引变量与你在开始时声明的2个const变量相同,index应该改变,但是const,well ..是常量且不能改变。
只需为索引使用另一个变量,如

for (int i = 0; i < width; ++i)
    for (int j = 0; j < height; ++j)
        ...

哦,不要将字符串值传递给整数数组