Javascript循环bug无限循环

时间:2015-03-07 14:10:37

标签: javascript loops debugging crash infinite

我正在做我的第一个游戏蛇,但是我有一个问题,当我吃一个矩形并尝试生成另一个我的脚本崩溃并且我有一个无限循环时出现

var coincide = false;
         var cmpt;
         do {
             mangey = Math.random();
             mangey *= canvas.height;
             t = mangey % 20;
             mangey -= t;
             mangex = Math.random();
             mangex *= canvas.width;
             t = mangex % 20;
             mangex = mangex - t;
             for (cmpt = 0; cmpt < snake.length; cmpt++) {
                 if ((snake[cmpt][0] == mangex) && (snake[cmpt][1] == mangey)) {
                     coincide = true;
                     alert(snake);
                     console.log(mangex,mangey);
                 }
             }
         }
         while ((coincide) || ((mangex > 480) || (mangex < 0)) || ((mangey > 380) || (mangey < 0)));

2 个答案:

答案 0 :(得分:0)

coincide = true;时,它永远不会改变,所以它始终是真的,因此是无限循环。所以我要添加一个else语句:

if ((snake[cmpt][0] == mangex) && (snake[cmpt][1] == mangey))
{
  coincide = true;
  alert(snake);
  console.log(mangex,mangey);
}
else
{
  coincide = false;
}

答案 1 :(得分:0)

问题已解决,感谢您提出意见。 在前面的代码中:当我们有一个align = true时,即使生成的矩形没有交集,它也不会改变。 解决方案很简单,我们假设在for循环之前,coincide = false。 太棒了:D