好吧,我知道这个操作还有另一个名字,但如果我知道的话,我会在谷歌中搜索并找到正确的算法。我希望你能从下图中理解我的意图:
好吧,假设我们有一个网格,例如 3x3 对象 (.)
...
...
...
这些对象中的每一个都有索引,从0开始到8结束
012
345
678
然后让我们使用下面的循环:
w = 0; h = 0;
go :
w = 0;
for(; w<grid.width; w++)
{
statuses[w][h] = isActor(CORESPONDENT_INDEX_GOES_HERE);
if(w == grid.width-1 && h != grid.height-1)
{
h += 1;
goto go;
}
}
isActor
是一个返回当前对象状态的函数,它需要正确的索引。
我应该用什么代替 CORESPONDENT_INDEX_GOES_HERE
?如果我使用 w*h
它不起作用,我知道为什么。它不会返回正确的索引。
正确的算法是什么?
最佳答案
如 hk6279 所述,使用 h * grid.width + w
。
这称为“光栅扫描”。不幸的是,搜索“光栅”无法揭示该公式。
关于c - 确定 x/y 网格索引的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969522/