条件语句无法识别变量值

时间:2017-12-06 06:09:26

标签: javascript

我正在为最终项目制作一个简单的反应时间游戏。 我们使用javascript来支持游戏中的功能,我的大多数代码都处于正常工作状态,但我有一个if条件语句给我带来了麻烦。 这是代码

function fireTime() {
  setTimeout(ShotsFired, time);

  function ShotsFired() {
    fire.style.visibility = "visible";
    createdTime = Date.now();
    console.log(createdTime);
    EnemyTime = Math.floor((Math.random() * 1000) + 400);
    setTimeout(EnemyShoot, EnemyTime)

    function EnemyShoot() {
      console.log(EnemyTime);
      gameplay();
    }

    function gameplay() {
      reactionTime = -(createdTime - clickedTime);
      var EnemyTime;
      console.log(reactionTime);
      if (reactionTime < EnemyTime) {
        alert("Wow you beat him! Congrats!");
        fire.style.visibility = "hidden";
        clickedTime = 0;
        createdTime = 0;
        reactionTime = 0;
        scavnumber++;
        BGnumber++;
        DesertBG.src = "images/Desert" + BGnumber + ".png";
        scav.src = "images/scav" + scavnumber + ".png";
        fireTime();
      } else {
        EndScreen.style.visibility = "visible";
      }
    }

这不是整个代码,只是将游戏推向下一个级别的功能。

无论出于何种原因,即使reactionTime小于EnemyTime,EndScreen也会变得可见。

任何人都知道会导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:0)

对你的敌人时间数学使用浮点数,即400.0,否则你得到0/1秒并且不使用毫秒,并且它使用数学整数。特别是将你的敌人时间作为一个浮点数投射,暂时,如果你打印它可能是一个整数。它是一个MAJOR js编码细节,如果您认为101/50 = 2.05,它不会等于2,那么您将花费几个小时的时间,因此它除以等于2,因此除以50.0并且与所有第二/ ms任务相同。

使用EnemyTime作为所有脚本的全局变量,目前,代码在所有脚本中都有一个名为EnemyTime的不同函数,后者没有任何值。

使用print查看其他条件何时起作用,在打印enemyTime值时指定打印。

通过打印令人困惑的变量,您应该如何解决问题。