在画布中检测多个数组坐标

时间:2016-09-14 23:41:00

标签: javascript arrays canvas

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”坐标内。如果任何防御在范围内,则返回布尔值。

然而我到了这一点,然后陷入了这个问题:如果多个防御在范围内会发生什么?那么“这个”需要承受更多的伤害。所以我只是想知道我是否可以在范围内显示数量的防御。

谢谢!

1 个答案:

答案 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;
        }
    }
}