Hello其他程序员,
今天我有一个问题与我的一个项目有关,我正在制作类似塔防使用画布。但是,我坚持尝试在一个坐标中检测多个圆圈。这是我的例子:
for (var a = 0; a < buildArcherX.length; a++) {
for (var a = 0; a < buildArcherY.length; a++) {
if (Math.sqrt(Math.pow(buildArcherX[a] - this.x, 2) + Math.pow(buildArcherY[a] - this.y, 2)) <= arch.radius + 7) {
this.attackedByArcher = true;
} else {
this.attackedByArcher = false;
}
}
}
正如您在本示例中所看到的,我正在使用数组将我的坐标放入我的“防御”中。 for语句遍历数组中的所有“防御”坐标。代码中的if语句计算任何防御坐标是否在“this”坐标内。如果任何防御在范围内,则返回布尔值。
然而我到了这一点,然后陷入了这个问题:如果多个防御在范围内会发生什么?那么“这个”需要承受更多的伤害。所以我只是想知道我是否可以在范围内显示数量的防御。
谢谢!
答案 0 :(得分:1)
您可以使用整数来存储范围内有多少防御的值,并在范围内找到防御时增加它。
此外,嵌套循环时必须使用2个不同的变量。
this.defensesInRange = 0;
for (var x = 0; x < buildArcherX.length; x++) {
for (var y = 0; y < buildArcherY.length; y++) {
if (Math.sqrt(Math.pow(buildArcherX[x] - this.x, 2) + Math.pow(buildArcherY[y] - this.y, 2)) <= arch.radius + 7) {
this.defensesInRange += 1;
}
}
}