当前位置: 首页 > 知识库问答 >
问题:

Javascript井字游戏:如何提醒用户他赢了?

周涵畅
2023-03-14

我正在学习Javascript,并开始了第一个游戏项目:井字游戏。

我的项目及其代码:<b>井字游戏项目

如果用户在井字游戏中获胜,我希望能够显示通知。

现在,我只想测试我的“获胜”代码,说如果你在第一行写3个X,你就赢了:

HTML:

我插入了一个带有id的空段落,它将专门用于显示通知

<p id="Notif" style="text-align : center"></p>

JS:

var Boxes = document.querySelectorAll("td")
Notif = document.getElementById("Notif")

  if (Boxes[0].textContent === "X" && Boxes[1].textContent === "X" && Boxes[2].textContent === "X") {
  console.log("Check Ok");
  Notif.textContent = "You won!"
} 

没用而且我觉得肯定是关于剧本里的执行顺序?或者需要一个环?

当我加载页面时,将3“X”放在第一行,然后在控制台中启动:

  if (Boxes[0].textContent === "X" && Boxes[1].textContent === "X" && Boxes[2].textContent === "X") {
  console.log("Check Ok");

我确实得到了日志“检查好的”。

共有3个答案

秦宏盛
2023-03-14

这是因为在第一次加载脚本时,您只调用了一次条件。所以当你选择X或O时,脚本不会再次运行检查。因此,您需要一个函数来包装条件,并在每次用户输入时调用它,从而触发函数中的条件。我只是分叉和修改你的代码这里是工作代码。https://repl.it/@syntax_hacker0/TickTackToe-Game

PS:实现条件中获胜的所有工作案例。

宗政浩慨
2023-03-14

您似乎只运行一次检查。为确保不是这种情况,请在用户每次设置X时运行检查,以便您在每次更改时重新检查。

为此,请使用相应的事件(如果单击元素以设置 X,请单击该事件;如果您实际让用户输入 X,则单击键下)。

崔博延
2023-03-14

该代码只被调用一次。您需要将其包装在一个函数中,并在每次点击游戏板时调用它

function checkWin(){
  if (Boxes[0].textContent === "X" && Boxes[1].textContent === "X" && Boxes[2].textContent === "X") {
     console.log("Check Ok");
     Notification.textContent = "You won!"
  } 

}
function MarkBox() {
  if (this.textContent === "") {   // === means equal for true / false questions
    this.textContent = "X"  // = means change value of variable
  } else if (this.textContent === "X") {
    this.textContent = "O"
  }
  else { this.textContent = ""}
  checkWin();


}

请参见工作示例repl.it

 类似资料:
  • 嗨,我正在编写一个井字游戏。我已经在代码中的注释中详细说明了我需要什么。我现在遇到的问题是制作一个getMobile方法。我想我需要在按下行和列后的if/else语句中调用getMobile方法? 我不确定如何从获取行/列编号并将其放入我的板上以获取用户输入的内容。 以下是我的代码:

  • 我正在制作一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic Tac Toe的概念相同,但在这款游戏中,玩家无法选择是以X还是O的身份进行游戏,游戏中唯一的规则是形成“SOS”。 我们的项目应该在所有职位被填补后终止,每个组成的“SOS”将被添加到组成“SOS”的玩家中。 我的问题是关于得分。在第一行输入SOS后,即,我尝试在第二行第一列输入“O”,玩家2将递增。它不应该递增,因为它不满足我

  • 所以我为我的课做了一个抽动练习作业。我已经成功地创建了一个简单的Tic Tac Toe程序,但不知何故,检查绘制的方法有时并不正确。如果所有东西都填满了,但没有赢家,那就是平局。但如果除第0行第1列外,其他所有内容都已填满,则即使该框仍为空白,它仍将显示“Draw”。如果你不明白我的意思,就试着把所有的东西都填满,但不是赢,即使最后一个框没有填满,它也会说“平局”。我在代码中做错了什么????驱动

  • 我用Java写了Tic-Tac-Toe。我似乎遇到的问题是,当(人类)播放器1和(计算机)播放器2之间出现平局时,GUI会冻结。我已经在“Buttonlistener”类和“Methods”中创建了一个tieCheck,以获得一个平局。 我的程序的工作方式是,当按下一个按钮时,它会将一个值传递给methods类中的数组。在这个数组中,1=玩家1,2=玩家2。 人类玩家总是先走,所以当人类玩家走了4

  • 我已经使用alpha-beta-minimax实现了JavaScript。它适用于3x3板,但当我将板更改为4x4或更高时,程序似乎挂起。 更新:当可用移动超过10时,程序无效 下面是alpha-beta-minimax函数: CheckForWinner()返回: 0代表不平不赢 1换领带 2代表玩家获胜 3代表电脑获胜 谢谢你的帮助

  • 我在Java中创建了一个小TicTacToe游戏,我想编写更有效的代码,我会制作一个for循环来创建9个按钮。 我现在面临的问题是如何测试按下哪个按钮以确定胜利者。我已经注释掉了我的旧测试代码,因为它不再工作。