Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组不能与if-else语句一起正常工作_Javascript - Fatal编程技术网

Javascript 数组不能与if-else语句一起正常工作

Javascript 数组不能与if-else语句一起正常工作,javascript,Javascript,我正在做一个井字游戏,但由于某些原因,设置赢的条件会导致棋盘完全翻转,并将计算机的选择放在左边的所有方格上,我相信这很好,因为我没有在赢的时候为游戏写一个重置,但问题是我相信它会在没有赢的情况下导致赢。一如既往,我们非常感谢您的帮助! 警告不要按原样运行,因为FOR循环涉及的问题会使浏览器崩溃 具体代码。整个应用程序如下所示: 函数checkWin(){ for(设i=0;i checkWin(); if(rowWin === true || columnWin === true || diag

我正在做一个井字游戏,但由于某些原因,设置赢的条件会导致棋盘完全翻转,并将计算机的选择放在左边的所有方格上,我相信这很好,因为我没有在赢的时候为游戏写一个重置,但问题是我相信它会在没有赢的情况下导致赢。一如既往,我们非常感谢您的帮助! 警告不要按原样运行,因为FOR循环涉及的问题会使浏览器崩溃

具体代码。整个应用程序如下所示:

函数checkWin(){
for(设i=0;i
您正在对行和列进行迭代,这很好。 但是你没有板长对角线。所以你在那里做的没有意义

如何检查对角线?
(这看起来像是家庭作业,所以不会告诉答案)

您正在迭代行和列,这很好。 但是你没有板长对角线。所以你在那里做的没有意义

如何检查对角线?
(这看起来像是家庭作业,所以不会告诉答案)

你的主要问题不是赢(正如@aepure提到的,没有正确检查),而是计算机填充了所有左边的字段。它做到了,因为您有一个对
tttGame
的无限递归调用(不在问题代码中)。我建议只在
player2.turn
的情况下调用
computerAI
,并在游戏结束后将
player1.turn
player2.turn
转到
false
。这是“以某种方式”起作用的(消除了递归循环,所以计算机一次只使用一个点),但并不能解决“丢失”部分的代码缺失问题,也不能解决游戏结束检查条件无效的问题。当然,游戏仍然缺少重置,但至少它停止挂起。

你的主要问题不是赢(正如@aepure所提到的,没有正确检查),而是计算机填充了所有左边的字段。它做到了,因为您有一个对
tttGame
的无限递归调用(不在问题代码中)。我建议只在
player2.turn
的情况下调用
computerAI
,并在游戏结束后将
player1.turn
player2.turn
转到
false
。这是“以某种方式”起作用的(消除了递归循环,所以计算机一次只使用一个点),但并不能解决“丢失”部分的代码缺失问题,也不能解决游戏结束检查条件无效的问题。当然,游戏仍然缺少重置,但至少它停止挂起。

首先,你有一个无限循环,所以我建议我们先去掉它。 看看你不断让电脑转动的代码,这就是无限循环位。checkWin也不起作用。。但是首先让我们把无限循环放在一边

这一点->

checkWin();
if(rowWin === true || columnWin === true || diagonalWin === true) {
    $(".teal").text("You win");
}
// else {  //comment out this else part, so at least play return to you.
   player1.turn = true;
   player2.turn = false;
// }

首先,你有一个无限循环,所以我建议我们先去掉它。 看看你不断让电脑转动的代码,这就是无限循环位。checkWin也不起作用。。但是首先让我们把无限循环放在一边

这一点->

checkWin();
if(rowWin === true || columnWin === true || diagonalWin === true) {
    $(".teal").text("You win");
}
// else {  //comment out this else part, so at least play return to you.
   player1.turn = true;
   player2.turn = false;
// }

您的检查对角线逻辑有问题 e、 g即使只有一个单元板[0][0]=X,则对角线温=真


检查胜利的更好方法是只检查最近移动的行、列和对角线

检查对角线逻辑有问题 e、 g即使只有一个单元板[0][0]=X,则对角线温=真


检查胜利的更好方法是只检查最新移动的行、列和对角线

我只是在最后一个
else
中放了一个
控制台.log(“dun-dun!”,I,j)
,然后运行游戏,它似乎永远不会增加
I
。你一定有一个很糟糕的情况,我只是在最后一个
else
中放了一个
console.log(“dun-dun!”,i,j)
,然后运行了这个游戏,它似乎从来没有增加过
i
。你一定有一个很糟糕的情况,谢谢你,我不确定是什么导致了无限循环。啊,谢谢你,我不确定是什么导致了无限循环。可能是我一整天都在努力的地方,但肯定看到了对角线的问题,那就是它实际上只检查了一个对角线点,就赢了,哎哟。可能是我一整天都在努力的地方,但我确实看到了对角线的问题,那就是它实际上只检查1个对角线点就赢了,哎哟。