【问题标题】:What's wrong with this 2D array initializing code?这个二维数组初始化代码有什么问题?
【发布时间】:2012-12-13 11:48:22
【问题描述】:

我正在尝试获取游戏关卡单元格的位置并将它们映射到二维数组。我想这样做,以便我可以使每个地面单元(而不是背景单元)与我的玩家角色发生碰撞。

以下是某人为我创建的当前代码:

        int tileSize = 20;
        int screenSizeInTiles = 30;

        // initializing multidimensional array of points
        var tilePositions = new System.Drawing.Point[screenSizeInTiles, screenSizeInTiles];

        for (int x = 0; x < screenSizeInTiles; x++)
        {
            for (int y = 0; y < screenSizeInTiles; y++)
            {
                tilePositions[x, y] = new System.Drawing.Point(x * tileSize, y * tileSize);

            }
        }

可以在这里找到:How can I use a jagged array to record the x and y axes of these tiles? 以及更好地描述我正在尝试做的事情。

所以,当我运行这段代码时,我在 tilePositions 中得到一个空数组。嗯,x和y的值是有的,但是值都是0。这些值应该是单元格的位置数据。

tilePosition 数组如下所示:

http://imgur.com/VYyxp

不过,我仍在处理碰撞代码……我需要先让它工作,然后才能弄清楚那部分。

非常感谢大家,你们帮了大忙!我仍然是一个初学者,但我正在夜以继日地工作以使自己成为一个更好的程序员。

【问题讨论】:

  • 有什么问题?您的标题显示“出了什么问题”,但您没有提供任何有关问题的详细信息。
  • 它不是锯齿状的。有什么具体问题吗?
  • 请检查我包含的链接。抱歉,我需要睡觉...让我编辑我的问题。
  • 编辑了我的问题以解释问题。对不起,伙计们,我的想法似乎不太正确......
  • 什么时候检查tilePositions数组的值?

标签: c# multidimensional-array


【解决方案1】:

如果你这样做了

        int tileSize = 20;
        int screenSizeInTiles = 30;

        // initializing jagged array of points
        var tilePositions = new Point[screenSizeInTiles][screenSizeInTiles];

        for (int x = 0; x < screenSizeInTiles; x++)
        {
            for (int y = 0; y < screenSizeInTiles; y++)
            {
                tilePositions[x][y] = new Point(x * tileSize, y * tileSize);
            }
        }

它将是锯齿状的(数组的数组。)

【讨论】:

  • 我们在另一个问题中发现,我需要的是 2D 数组,而不是锯齿状数组。这个问题具有误导性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2021-01-13
  • 2012-11-29
相关资源
最近更新 更多