【发布时间】:2017-09-30 05:28:27
【问题描述】:
我正在统一构建一个游戏,该游戏(理论上)通过使用 2D 布尔元素数组来工作,然后对其进行处理以确定游戏中该空间是否应该有块,但是我在使用时遇到问题统一实际创建所述数组。目前我的代码是:
void Start () {
System.Random rnd = new System.Random ();
int MapCol = 9;
int MapRow = 9;
int [,] MapArray = new int [MapCol, MapRow];
foreach (int i in MapArray)
MapArray ["{0} ", i] = rnd.Next (0, 2);
}
之所以出现我的问题,是因为微软官方对这个问题的回答只解释了如何在二维数组上使用 foreach 来查看单个文本元素,而不是整数。
我还尝试将指南推送到后期生成的地图上,这似乎不起作用,因为可能会生成不符合这些指南的无限地图,并且地图可能永远不会完成。目前这些准则是一个块必须接触两个相邻的块,一个块不能接触同一个角落的三个块,即
- 1 1 0
- 1 1 0 不允许此展示位置
- 0 0 0
同时
- 0 1 0
- 1 1 1 允许此展示位置。
- 0 0 0
我们将不胜感激!
编辑: 所以,要进一步说明生成条件。我希望每个“1”都接触到另外两个 1 的最小值,这里考虑的接触是在 4 个基本方向上,上、下、左和右。与另一个 1 的对角线接触很好,除非该对角线被另外 2 个“1”包围。因此,不应将 4 个块组合在一起的安排。所以模式:
1 1
1 1
不应出现在网格内
【问题讨论】:
-
@ChuckSavage 您永远不应该假设未定义的变量将“默认为”。这不是好的编程习惯,而且在速度上节省的时间可能不值得冒险。
-
另外,Unity3d 提供了一个 Random 类。使用
Random.Range(0,N) -
@8protons C# Programming Guide
The default values of numeric array elements are set to zero, and reference elements are set to null. -
@Kevin hamill,您希望代码为给定的二维数组大小生成一个单一的解决方案还是所有可能的解决方案?
-
@Mukesh Saini 只有一个随机解决方案,但所有解决方案都是一个非常有趣的概念。两者都会很高兴知道,但我现在正在寻找一个单一的解决方案
标签: c# unity3d multidimensional-array