Javascript 我的Tictatcoe游戏是如何在O时将获胜者返回为X的
我是一个相对较新的程序员,我创建了一个Tic-Tac-Toe游戏,可以提醒赢得游戏的用户。问题是,当O对角获胜时,当X赢了比赛时,它会保留一个警报。我似乎在代码中找不到问题 我的源代码位于以下URL:Javascript 我的Tictatcoe游戏是如何在O时将获胜者返回为X的,javascript,Javascript,我是一个相对较新的程序员,我创建了一个Tic-Tac-Toe游戏,可以提醒赢得游戏的用户。问题是,当O对角获胜时,当X赢了比赛时,它会保留一个警报。我似乎在代码中找不到问题 我的源代码位于以下URL: 井字过三关 身体{ “Arial”,时代,衬线; } .路政署{ 填充:10px; 边框:1.25px纯黑; 高度:30px; 宽度:30px; 浮动:左; } .行{ 明确:两者皆有; 单击以播放Tic-Tac-Toe 再玩一次 var currentPlayer=“O”; var wo
井字过三关
身体{
“Arial”,时代,衬线;
}
.路政署{
填充:10px;
边框:1.25px纯黑;
高度:30px;
宽度:30px;
浮动:左;
}
.行{
明确:两者皆有;
单击以播放Tic-Tac-Toe
再玩一次
var currentPlayer=“O”;
var won=假;
活动场所(箱){
如果(box.innerText!=“赢得”)返回;
box.innerText=currentPlayer;
currentPlayer==“O”?currentPlayer=“X”:currentPlayer=“O”
棋盘(当前玩家);
}
功能检查游戏板(currentPlayer){
因为(var i=0;i通常StackOverflow不是儿童游乐场,但你们两个男孩(你和@hacker19374)太有趣了,所以我决定向你们解释发生了什么
事实上,@TiiJ7已经回答了你的问题,他说:“你没有通过currentPlayer
最后两次检查”。如果你不明白这是什么意思,让我解释一下
您的checkWinner(first、second、third、currentPlayer)
函数等待四个参数。当您在for
循环中调用此函数时,您将为其提供四个参数:
for (var i=0; i <= 2; i++) {
checkWinner(document.getElementById(i + "_0").innerText,
document.getElementById(i + "_1").innerText,
document.getElementById(i + "_2").innerText, currentPlayer);
checkWinner(document.getElementById("0_" + i).innerText,
document.getElementById("1_" + i).innerText,
document.getElementById("2_" + i).innerText, currentPlayer);
}
当您以这种方式调用checkWinner
函数时,第四个参数会在该函数代码中获取一个值
if (currentPlayer == "X"){
alert(" Winner is O!" );
}
else {
alert(" Winner is X!" );
}
而currentPlayer
变量的值是undefined
,它会提醒您,由于检查未通过,所以赢家是X。currentPlayer
的值不是X
,但也不是O
,它是未定义的
现在看看,如果你选择
function place(box) {
if (box.innerText !="" || won) return;
box.innerText = currentPlayer;
currentPlayer == "O" ? currentPlayer = "X" : currentPlayer = "O"
checkGameBoard(currentPlayer);
}
你会用
function place(box) {
if (box.innerText !="" || won) return;
box.innerText = currentPlayer;
checkGameBoard(currentPlayer);
currentPlayer == "O" ? currentPlayer = "X" : currentPlayer = "O"
}
i、 e.在检查获胜条件后,而不是之前,切换球员。这样代替
if (currentPlayer == "X"){
alert(" Winner is O!" );
}
else {
alert(" Winner is X!" );
}
你可以用
alert(" Winner is " + currentPlayer + "!" );
这将使您的调试更加容易,当您得到类似“Winner未定义!”
此外,您完全可以跳过将currentPlayer
作为参数传递给函数。您已经有了一个全局变量currentPlayer
,并且它在所有函数中都可用。事实上,您已经在place
函数中使用了该变量。阅读本文,它应该会向您解释一些JavaScript概念
现在,如果您了解以上所有内容,并想进一步练习编程,我可以为您提出一个高级任务。您的游戏板上应该有一个标签,显示谁是当前玩家-“当前玩家是…”。标签应该在每次移动后更改,如果soneone赢了,标签应该显示“赢家是…”请您将代码包含在问题中。考虑使用堆栈片段。您不通过<代码> CurrnPosivs/Coo>到最后2个检查。<代码>如果(CurrnPrime=“x”)警报(“胜利者是O!”)< /代码>…
alert(" Winner is " + currentPlayer + "!" );