是什么导致我的Javascript游戏在其他计算机上表现不同?

是什么导致我的Javascript游戏在其他计算机上表现不同?,javascript,html,performance,Javascript,Html,Performance,所以我在我的电脑上创建了一个简单的游戏,随机生成圆圈,你必须避开它们,这样我才能学习一些javascript。在我的电脑上,随着时间的推移,敌人不断地繁殖,但在我的笔记本电脑上,它就像等待20个敌人繁殖,然后他们开始一起移动。我不知道为什么会发生这种情况,以及如何避免类似的事情。我在两台机器上使用的是同一版本的谷歌浏览器。我相信这些违规代码与我的“繁殖敌人”功能有关。我在0-3之间选择一个随机数,这样我就可以选择在哪条边上繁殖敌人,然后我利用时间以不同的间隔随机生成敌人 我的其他代码也可以在这里

所以我在我的电脑上创建了一个简单的游戏,随机生成圆圈,你必须避开它们,这样我才能学习一些javascript。在我的电脑上,随着时间的推移,敌人不断地繁殖,但在我的笔记本电脑上,它就像等待20个敌人繁殖,然后他们开始一起移动。我不知道为什么会发生这种情况,以及如何避免类似的事情。我在两台机器上使用的是同一版本的谷歌浏览器。我相信这些违规代码与我的“繁殖敌人”功能有关。我在0-3之间选择一个随机数,这样我就可以选择在哪条边上繁殖敌人,然后我利用时间以不同的间隔随机生成敌人

我的其他代码也可以在这里找到:

另外,如果有人对如何在不使用不同机器的情况下测试此类问题有任何建议,我想知道什么是最好的。 谢谢你抽出时间

function renderEnemies(time) {
  var randomStartX = 0;
  var randomStartY = 0;

  var rand = Math.floor(Math.random() * 4);

  switch (rand) {
    case 0:
      randomStartX = Math.floor(Math.random() * c.width);
      randomStartY = 0;
      break;
    case 1:
      randomStartX = 0;
      randomStartY = Math.floor(Math.random() * c.height);
      break;

    case 2:
      randomStartX = c.width;
      randomStartY = Math.floor(Math.random() * c.height);
      break;

    case 3:
      randomStartX = Math.floor(Math.random() * c.width);
      randomStartY = c.height;
      break;
  }
  ////////////////////////////////////////////////////////////////////////////////////

  if (Math.round(time) % difficulty.amount == 0) {
    //console.log("WIDTH HEIGHT " + c.height);
    //console.log("RAND IS "+ rand);
    //console.log("X is " + randomStartX);
    //console.log("Y is " + randomStartY);
    //console.log("CANVAS" + c.width);

    enemies.push({
      x: randomStartX,
      y: randomStartY,
      edge: rand,
      tempX: randomStartX,
      tempY: randomStartY
    });
    //console.log(enemies.length);
  }

  //To prevent the enemy list from growing too large, we remove from the beginning to free up memory
  if (enemies.length == 50) {
    enemies.splice(0, 25);
  }

  enemies.forEach(function(p) {
    ctx.save();
    ctx.beginPath();
    ctx.translate(p.x, p.y);
    ctx.arc(0, 0, 10, 0, 2 * Math.PI);
    ctx.fillStyle = "red";
    ctx.fill();
    ctx.stroke();
    ctx.restore();
    hitbox(p);
  });
  //console.log(enemies.length);
  /////////////////////////////////
}

Edit:在一篇评论中提到了这一点,但我意识到这与if语句处理舍入时间变量有关。出于某种原因,在我的笔记本电脑上,它从来没有在几秒钟内找到一个可整除的数字,然后突然之间它一次找到了10个。但我不知道为什么会发生这种情况,我必须搞乱这些值,找出一个更好的时间间隔。

与其说是怪不同的“计算机”,不如说是和浏览器版本(使用的js引擎)有关。我怒视着
forEach
,怀疑他们中的一些人不支持它。@我提到的问题是,我在两台计算机上使用的是相同版本的Google Chrome(79.0.3945.88版(官方版本)(64位)),所以我想可能不止这些。我意识到这与处理时间变量舍入的if语句有关。出于某种原因,在我的笔记本电脑上,它从来没有在几秒钟内找到一个可整除的数字,然后突然之间它一次找到了10个。编辑:可能是机器上安装的java版本?这听起来可能很愚蠢,但我觉得这可能会影响它。四舍五入时间上模数
%
的使用是否相关?对我来说似乎有点随机,是的,确实如此。我想如果我将%难度从50降低到20,那么它将有更多的时间来产生敌人,因为例如,20,40,60,80100次会产生更多被20整除的敌人,而不仅仅是50,100被50整除的敌人。或者至少这是我的逻辑,但出于某种原因,在我的笔记本电脑上,它在繁殖时间上有很大的不同。这似乎也是可以预测的。就像不是每隔一两秒随机产卵一样,它只是暂停大约10秒,然后突然每次产卵15个。我只是想避免使用这种逻辑