Actionscript 3 从阵列自动生成电平

Actionscript 3 从阵列自动生成电平,actionscript-3,math,Actionscript 3,Math,所以,我试图让我的游戏中的关卡自动生成。 我制作了一个阵列(注意,屏幕上的“瓷砖”数量为16x16): 正如您可能知道的,每个1或0对应于磁贴是一件事还是另一件事(在本场景中是否存在) 我做的下一部分相当糟糕 我决定使用的方法(有点) 但这完全搞砸了。很抱歉,这更多的是一个数学问题,但如果有人能(或已经)解决这个问题,我将不胜感激 您似乎被1D-2D坐标变换所困扰 让我们看看屏幕的宽度(二维坐标)是Wdt。因此,具有(x,y)坐标的元素将位于1D数组的y*Wdt+x索引处 A[y * Wdt +

所以,我试图让我的游戏中的关卡自动生成。 我制作了一个阵列(注意,屏幕上的“瓷砖”数量为16x16):

正如您可能知道的,每个1或0对应于磁贴是一件事还是另一件事(在本场景中是否存在)

我做的下一部分相当糟糕

我决定使用的方法(有点)


但这完全搞砸了。很抱歉,这更多的是一个数学问题,但如果有人能(或已经)解决这个问题,我将不胜感激

您似乎被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