无法退出循环es6

时间:2016-06-21 05:59:41

标签: javascript

我正在继续我的项目,即在codepen中制作一个tic tac toe游戏。我遇到的问题是使用下面的功能。 它假设计算某人是否赢了,除了一个例外,它就会这样做。现在ai只是把它的角色放在下一个可用的位置上,如果我将我的角色放在一条直线上(例如中间线)就会出现问题,以便我赢得计算机将在下一轮获胜,我的代码总是返回计算机赢了。

我知道这可能很难理解,因为我只是采用自己的方法进行游戏。我已经制作了控制台日志,告诉我已达到获胜区块但我相信循环继续运行。我不知道如果这与es6和阻止范围有关,但我无法在这种情况下采取正确的行动。我尝试过的大多数其他案例似乎都能正常运作。

以下是完整上下文的codepen链接:

CLICK ME.

编辑:我不小心从项目中删除了功能,笔停止工作,所以我解决了这个问题。可能是一个功能在调用另一个功能之前还没有完成?我问的原因是因为对于完全没赢的计算机,对支票的调用不应该返回。这就是为什么我很困惑。



    hasWon(){
      let scores = this.scoring();
      allScores: {
        for(let i = 0; i < scores.length; i++){
          let win = $('.end');

          let currentScore = scores[i];
          console.log("The scores here: " + scores);
          console.log("the current score: " + currentScore);
          console.log("the player score: " + (this.player * 3));
          console.log("the truth: " + (currentScore === (this.player * 3)));
        
          if(currentScore === (this.player * 3)){
            console.log("we got in here but this line isn't counting");
            win.html("<h4>Player won the Game!</h4>");
            this.hasWonEnd();
            break allScores;
          } else if (currentScore === (this.computer * 3)) {
            console.log("we are displaying this line.....");
            win.html("<h4>Computer won the Game!</h4>");
            this.hasWonEnd();
            break allScores;
          } else if (this.emptyIndices().length === 0 && i === (scores.length - 1)){
            win.html("<h4>It's a draw!</h4>");
            this.hasWonEnd();
            break allScores;
          }
        }
      }
    }
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。我相信它与es6无关。 (不知道我是否应该更改标题。)

在获胜者已经决定从而覆盖它之后,调用检测到胜利者的函数。我的解决方案是创建游戏状态变量,以检查是否已经有赢家。 然而,我仍然不明白为什么在获取新值之前函数不会完成。但它已经完成,似乎工作正常。 感谢所有看过它的人。