我知道这个问题看起来像其他一些问题。但我认为,由于差异很小,这与我在Stackoverflow的其余部分找到的完全不同。
所以我的问题是我正在制作一些小型棋盘游戏,我想向各个方向移动,所以向上,向下,向左和向右。当我这样做时,我必须知道每个方向的界限。我想对此有一些通用的东西,所以如果我有任何数字,我会向任何方向前进。我可以计算边界单元是什么,例如我从11开始想要向左走,所以我应该得到9号边框。如果我从6开始,我想要下去,我会得到14作为我的边界号码。
这是我代表我的董事会的方式。所以我在一维数组中进行,数字索引+ 1表示它们在板上的位置。
+--+--+--+--+
|1 |2 |3 |4 |
+--+--+--+--+
|5 |6 |7 |8 |
+--+--+--+--+
|9 |10|11|12|
+--+--+--+--+
|13|14|15|16|
+--+--+--+--+
对此有任何经验的人?谁知道如何获得这个边界号的简单方法?
谢谢
答案 0 :(得分:0)
从1D坐标转换为2D坐标,根据需要更改x和y值,然后转换回1D坐标。
function boundary(idx, direction){
rows = 4;
cols = 4;
idx -= 1;
x = idx % cols;
y = int(Math.floor(idx / cols));
if (direction == "left"){
x = 0;
}
else if (direction == "right"){
x = cols-1;
}
else if (direction == "up"){
y = 0;
}
else if (direction == "down"){
y = rows-1;
}
return cols * y + x + 1;
}