我正在网格上创建一个小的2D游戏(带有Javascript)。在这个游戏里,我有三种单元类型,比如说:
下面是一个模式:

目标是黑色广场。灰色一号是该单元。
单位的移动是可以的,我可以在我想要的时候在摇摆不定的方块上移动。目标是固定的。
我的问题是:根据单位颜色(范围为1、2或3),如何才能找到该单位能够射击的所有瓷砖?
我是说:
我想到了一个有两个嵌套循环的丑陋的解决方案,但是,也许有一个已知的算法可以这样做.
我对目标和单位有一个(x,y)位置。
我看到了这个Algorithm for finding spaces to attack target within move-attack area on a 2D grid game board,但在我看来,我的问题似乎更简单:
你能帮帮我吗?
发布于 2015-12-10 14:14:24
那这个呢?
boolean canShot(Unit unit, Target target){
if ((unit.minimumShotDistance <= Math.abs(unit.position.x - target.position.x) &&
unit.minimumShotDistance <= Math.abs(unit.position.y - target.position.y)){
return true;
}
return false;
}发布于 2015-12-10 14:52:15
根据单位瓷砖的颜色,设定值为range=1(绿色)、2(橙色)或3(蓝色)。
现在,范围(x,y)的所有瓷砖都是这样的:
x = targetX - range to targetX + range
y = targetY - range to targetY + range
and (x,y) is within board limits会给出你所在单位可以射击的所有瓷砖。
如果你想知道,从目前的位置,单位是否可以射击目标,检查单位的坐标(x,y)是否满足上述条件。
https://stackoverflow.com/questions/34203339
复制相似问题