gpt4 book ai didi

C++在二维 map 中搜索占用的字段

转载 作者:太空狗 更新时间:2023-10-29 20:06:05 25 4
gpt4 key购买 nike

我的 rts 中有一张 2d map 。 map 上有一些单位。我想检查另一个单位的范围内是否有任何单位。单位范围在字段中给出。看图:

Ranges

在图片上,任何单位(红色、蓝色、绿色)都不能互相攻击。例如,我想检查蓝色范围内是否有任何单位。答案是不。我知道蓝色的范围和位置,我也知道其余的位置。我也知道 map xy 是否被占用。我该如何检查?

最佳答案

您想在 (x, y) 处遍历单元周围的所有点 (x + i, y + j) 这样

|i| + |j| <= R ,

其中 R 是攻击范围。 (这是 L1 度量中的磁盘。)因此,像这样:

for (i = -R; i <= +R;  ++i)
{
jRange = R - abs(i);
for (j = -jRange; j <= +jRange; ++j)
{
// access (x + i, y + j)
}
}

或者,您可以通过展开将外循环减半:

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)
}
}

正如@Alink 所说,您必须以某种方式处理 map 边界。

关于C++在二维 map 中搜索占用的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9545934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com