我的rts中有一张二维地图.在地图上有一些单位.我想检查是否有任何单位在另一个范围内.单位范围以字段给出.看图像:
在图片中,没有单位(红色,蓝色,绿色)可以互相攻击.我想,例如检查,例如是否有任何蓝色范围内的单位.答案是不.我知道蓝色的范围和位置,我也知道其余的位置.我也知道地图xy是否被占用.我怎么检查这个?
你要遍历所有的点(x + i, y + j)
在处理您的装置(x, y)
,使得
|i| + |j| <= R ,
Run Code Online (Sandbox Code Playgroud)
R
攻击范围在哪里?(这是L 1 -metric中的磁盘.)所以,像这样:
for (i = -R; i <= +R; ++i)
{
jRange = R - abs(i);
for (j = -jRange; j <= +jRange; ++j)
{
// access (x + i, y + j)
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过展开将外循环减半:
for (i = 0; i <= R; ++i)
{
jRange = R - i;
for (j = -jRange; i <= +jRange; ++j)
{
// access (x - i, y + j)
// if (i > 0) access (x + i, y + j)
}
}
Run Code Online (Sandbox Code Playgroud)
正如@Alink所说,你必须以某种方式处理地图边界.
归档时间: |
|
查看次数: |
366 次 |
最近记录: |