其他Javascript总是触发

时间:2015-10-18 20:01:34

标签: javascript if-statement pacman khan-academy

当我运行以下代码时,由于某种原因它执行就好像else总是为true,但是当我拿走else语句时,if语句工作正常,因此表明if语句确实有用,我想,但是如果没有别的话,我就无法设置Player.movi​​ng = true。

if (Player.x > j * 25 - 15 &&
    Player.x < j * 25 + 10 &&
    Player.y > i * 25 &&
    Player.y < i * 25 + 25 &&
    Player.direction === 1
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 25 &&
         Player.y > i * 25 - 15 &&
         Player.y < i * 25 + 10 &&
         Player.direction === 2
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 40 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 25 &&
         Player.direction === 3
) {
    Player.moving = false;
}
else if (Player.x > j * 25 &&
         Player.x < j * 25 + 25 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 50 &&
         Player.direction === 4
) {
    Player.moving = false;
}
else {
    Player.moving = true;
}

其中i和j是tile图中对象的索引,这样tilemap看起来像这样:var tilemap = [“”,“”];

例如

if (Player.x > j * 25 &&
         Player.x < j * 25 + 40 &&
         Player.y > i * 25 &&
         Player.y < i * 25 + 25 &&
         Player.direction === 3
) {
    Player.moving = false;
}

是唯一存在的代码。当[i] [j]处的物体按预期位于其左侧时,玩家将停止向左移动。但是,如果存在else语句,它将继续移动,Player.movi​​ng保持为真。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您的if子句未正确定义,x不能同时大于和小于某个值。你也是。

你可能想要这样的东西:

If ( (Player.x > I || Player.x < J) &&
     (Player.y > M || Player.y < N) &&
      Player.direction === 1
) {...} ...