Actionscript 3 从阵列自动生成电平
所以,我试图让我的游戏中的关卡自动生成。 我制作了一个阵列(注意,屏幕上的“瓷砖”数量为16x16): 正如您可能知道的,每个1或0对应于磁贴是一件事还是另一件事(在本场景中是否存在) 我做的下一部分相当糟糕 我决定使用的方法(有点)Actionscript 3 从阵列自动生成电平,actionscript-3,math,Actionscript 3,Math,所以,我试图让我的游戏中的关卡自动生成。 我制作了一个阵列(注意,屏幕上的“瓷砖”数量为16x16): 正如您可能知道的,每个1或0对应于磁贴是一件事还是另一件事(在本场景中是否存在) 我做的下一部分相当糟糕 我决定使用的方法(有点) 但这完全搞砸了。很抱歉,这更多的是一个数学问题,但如果有人能(或已经)解决这个问题,我将不胜感激 您似乎被1D-2D坐标变换所困扰 让我们看看屏幕的宽度(二维坐标)是Wdt。因此,具有(x,y)坐标的元素将位于1D数组的y*Wdt+x索引处 A[y * Wdt +
但这完全搞砸了。很抱歉,这更多的是一个数学问题,但如果有人能(或已经)解决这个问题,我将不胜感激 您似乎被1D-2D坐标变换所困扰 让我们看看屏幕的宽度(二维坐标)是
Wdt
。因此,具有(x,y)坐标的元素将位于1D数组的y*Wdt+x
索引处
A[y * Wdt + x] corresponds to Screen[y][x]
和后变换:
x = index %% Wdt //integer modulus
y = index \ Wdt //integer division
Screen[index \ Wdt] [index %% Wdt] = A[index]
看起来你被1D-2D坐标变换搞得一团糟 让我们看看屏幕的宽度(二维坐标)是
Wdt
。因此,具有(x,y)坐标的元素将位于1D数组的y*Wdt+x
索引处
A[y * Wdt + x] corresponds to Screen[y][x]
和后变换:
x = index %% Wdt //integer modulus
y = index \ Wdt //integer division
Screen[index \ Wdt] [index %% Wdt] = A[index]
我通常更喜欢将一个网格打包到一个数组中,以使其更具可读性。g、
var grid:Array = [
[0, 0, 1, 0, 0],
[0, 1, 0, 1, 0],
[1, 0, 0, 0, 1],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 0]
];
如果第一个(外部)数组包含多行单元格,则每行由一个数组表示因此,您可以通过调用
grid[y][x]
来访问单元格,并通过将x
和y
乘以const cell\u SIZE
来查找“真实”坐标。我通常更喜欢将网格打包到数组中,以使其更易于人类阅读。g、 var grid:Array = [
[0, 0, 1, 0, 0],
[0, 1, 0, 1, 0],
[1, 0, 0, 0, 1],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 0]
];
如果第一个(外部)数组包含多行单元格,则每行由一个数组表示因此,您可以通过调用
grid[y][x]
访问单元格,并通过将x
和y
乘以const cell\u SIZE