我正在继续我的项目,即在codepen中制作一个tic tac toe游戏。我遇到的问题是使用下面的功能。 它假设计算某人是否赢了,除了一个例外,它就会这样做。现在ai只是把它的角色放在下一个可用的位置上,如果我将我的角色放在一条直线上(例如中间线)就会出现问题,以便我赢得计算机将在下一轮获胜,我的代码总是返回计算机赢了。
我知道这可能很难理解,因为我只是采用自己的方法进行游戏。我已经制作了控制台日志,告诉我已达到获胜区块但我相信循环继续运行。我不知道如果这与es6和阻止范围有关,但我无法在这种情况下采取正确的行动。我尝试过的大多数其他案例似乎都能正常运作。
以下是完整上下文的codepen链接:
编辑:我不小心从项目中删除了功能,笔停止工作,所以我解决了这个问题。可能是一个功能在调用另一个功能之前还没有完成?我问的原因是因为对于完全没赢的计算机,对支票的调用不应该返回。这就是为什么我很困惑。
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;
答案 0 :(得分:0)
我发现了这个问题。我相信它与es6无关。 (不知道我是否应该更改标题。)
在获胜者已经决定从而覆盖它之后,调用检测到胜利者的函数。我的解决方案是创建游戏状态变量,以检查是否已经有赢家。 然而,我仍然不明白为什么在获取新值之前函数不会完成。但它已经完成,似乎工作正常。 感谢所有看过它的人。