Fra*_*ank 3 language-agnostic arrays modulo
如果我有一个4x4游戏板,我在我的程序中表示为16d的1d整数数组.
如何获得任何给定索引上方,下方,左侧和右侧的方块索引?
所以,例如:
A = { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 }
Run Code Online (Sandbox Code Playgroud)
代表这个董事会
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
Run Code Online (Sandbox Code Playgroud)
让我们说我目前在董事会中的索引#8(值= 7).如何得到4(值= 3),5(值= 6),10(值= 11)的索引,并意识到没有正方形,因为它位于电路板的右边缘.
我知道我需要使用一些模数学,但我没有想出正确的方法来获得相邻正方形的索引.
我在想......
if ((i % 4) + 1 < 3) right = i + 1;
if ((i % 4) - 1 > 0) left = i - 1;
if ((i % 4) + 4 < 15) bottom = i + 4;
if ((i % 4) - 4 > 0 ) top = i - 4;
Run Code Online (Sandbox Code Playgroud)
这看起来是正确的方法吗?
要从索引中获取行,列,请使用以下命令:
row = index/num_columns;
column = index % num_columns;
Run Code Online (Sandbox Code Playgroud)
要回到索引,请使用
index = row * num_columns + column;
Run Code Online (Sandbox Code Playgroud)
一个你在行和列中,很容易获得周围的位置.
above = (row-1, column)
left = (row, column-1)
etc...
Run Code Online (Sandbox Code Playgroud)