【问题标题】:Loading a level from an array, XNA 4, C#从数组加载关卡,XNA 4,C#
【发布时间】:2012-02-25 13:33:00
【问题描述】:

嘿,我想知道如何编写一种从 XNA 4 中的二维数组加载和绘制二维关卡的方法。

这是我目前所拥有的。

我正在像这样加载我的数组

        mapArray = new int[,]
        {
            {0, 0, 0, 0},
            {2, 0, 0, 2},
            {0, 0, 0, 0},
            {1, 1, 1, 1}
        };

然后我卡住了,我似乎无法弄清楚如何绘制数组,我知道我需要使用 for 循环来检查数组,但这是我第一次使用 2d 数组。

有没有人可以详细解释我将如何画这个?

谢谢

-乔什

【问题讨论】:

  • 如果它是一个 2D 数组,您可能需要在某个时候使用两个 for 循环。 (dotnetperls.com/2d-array-loop)
  • 这是一个二维数组,但我该如何检测哪个插槽中的数字?

标签: c# arrays xna 2d


【解决方案1】:

您也许可以使用类似的方法来检查每个插槽中的数字:(注意:这是未经测试的代码......但代码的骨架来自于找到的教程here。 )

using System;

class Program
{
    static void Main()
    {
        mapArray = new int[,]
        {
            {0, 0, 0, 0},
            {2, 0, 0, 2},
            {0, 0, 0, 0},
            {1, 1, 1, 1}
        };

        // Get upper bounds for the mapArray.
        int bound0 = mapArray.GetUpperBound(0);
        int bound1 = mapArray.GetUpperBound(1);

        // Use for-loops to iterate over the mapArray elements.
        for (int i=0; i<=bound0; i++)
        {
            for (int j=0; j<=bound1; j++)
            {
                int value = mapArray[i, j];
                Console.WriteLine(value);
            }
        }
    }
}

基本上,这段代码:

  • 初始化你的mapArray
  • 检查mapArray 的两个维度的末端(边界)
  • 循环通过mapArray 的第一个维度
  • 然后,虽然仍然循环通过第一个维度,但有第二个循环通过 mapArray 的第二个维度
  • 在这两个循环的中间,找到了你的值:int value = mapArray[i, j];

Here is a reference 用于 C# 的二维数组循环。和 here is a reference 在 C# 中的数组上。希望这会有所帮助!

【讨论】:

  • 我只是利用这段代码dotnetperls.com/2d-array-loop中的一些想法想通了,谢谢大家!!!
  • 刚刚编辑了这个答案,最后有更多解释。希望这会有所帮助!
  • 另外,欢迎来到 Stack Overflow!而且...仅供将来参考,如果您得到问题的答案(最终对您有用),请不要忘记接受答案(和/或对确实有帮助的答案进行投票!):)跨度>
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2014-10-31
相关资源
最近更新 更多