Tic Tac Toe是开始编码的流行练习,因为有限的资源和游戏机制可以很容易地掌握并以多种方式表现出来。因为它是一个简短的游戏,所以可以创建一个永不丢失的算法。
井字棋游戏:我很困惑为什么当用户输入位置变量之一时我的代码不运行
由于某种原因,我无法使用变量来定义函数的这个特定子集中的空间 来自海龟进口 * 约翰 = 海龟() def naughts(n位置): 约翰.佩纳普() 约翰·戈托(
if(转=== 1){ if(X1 === 真 && X2 === 真 && X3 === 假 && O3 === 假 && 转 === 1) { document.getElementById("3").innerHT...
TD { 边框:1px 纯黑; 高度:50px; 宽度:50px; } 让 O1 = 假; 让 X1 = 假; 让 O2 = fal...</desc> <question vote="-1"> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><html> <body> <style> td { border: 1px solid black; height: 50px; width: 50px; } </style> <script> let O1 = false; let X1 = false; let O2 = false; let X2 = false; let O3 = false; let X3 = false; let O4 = false; let X4 = false; let O5 = false; let X5 = false; let O6 = false; let X6 = false; let O7 = false; let X7 = false; let O8 = false; let X8 = false; let O9 = false; let X9 = false; let turn = 0; let XWinNum = 0 let OWinNum = 0 function Xon1() { if (O1 === false && X1 === false && turn === 0) { document.getElementById("1").innerHTML = 'X'; X1 = true; turn++ setTimeout(compMove, 1000); } } function Xon2() { if (O2 === false && X2 === false && turn === 0) { document.getElementById("2").innerHTML = 'X'; X2 = true; turn++ setTimeout(compMove, 1000); } } function Xon3() { if (O3 === false && X3 === false && turn === 0) { document.getElementById("3").innerHTML = 'X'; X3 = true; turn++ setTimeout(compMove, 1000); } } function Xon4() { if (O4 === false && X4 === false && turn === 0) { document.getElementById("4").innerHTML = 'X'; X4 = true; turn++ setTimeout(compMove, 1000); } } function Xon5() { if (O5 === false && X5 === false && turn === 0) { document.getElementById("5").innerHTML = 'X'; X5 = true; turn++ setTimeout(compMove, 1000); } } function Xon6() { if (O6 === false && X6 === false && turn === 0) { document.getElementById("6").innerHTML = 'X'; X6 = true; turn++ setTimeout(compMove, 1000); } } function Xon7() { if (O7 === false && X7 === false && turn === 0) { document.getElementById("7").innerHTML = 'X'; X7 = true; turn++ setTimeout(compMove, 1000); } } function Xon8() { if (O8 === false && X8 === false && turn === 0) { document.getElementById("8").innerHTML = 'X'; X8 = true; turn++ setTimeout(compMove, 1000); } } function Xon9() { if (O9 === false && X9 === false && turn === 0) { document.getElementById("9").innerHTML = 'X'; X9 = true; turn++ setTimeout(compMove, 1000); } } function compMove() { checkForWin() if (turn === 1) { if(X1 === true && X2 === true && X3 === false && O3 === false && turn === 1) { document.getElementById("3").innerHTML = 'O'; O3 = true turn-- } if(X1 === true && X3 === true && X2 === false && O2 === false && turn === 1) { document.getElementById("2").innerHTML = 'O'; O2 = true turn-- } if(X2 === true && X3 === true && X1 === false && O1 === false && turn === 1) { document.getElementById("1").innerHTML = 'O'; O1 = true turn-- } if(X3 === true && X4 === true && X5 === false && O5 === false && turn === 1) { document.getElementById("5").innerHTML = 'O'; O5 = true turn-- } if(X3 === true && X5 === true && X7 === false && O7 === false && turn === 1) { document.getElementById("7").innerHTML = 'O'; O7 = true turn-- } if(X4 === true && X5 === true && X6 === false && O6 === false && turn === 1) { document.getElementById("6").innerHTML = 'O'; O6 = true turn-- } if(X7 === true && X8 === true && X9 === false && O9 === false && turn === 1) { document.getElementById("9").innerHTML = 'O'; O9 = true turn-- } if(X7 === true && X9 === true && X8 === false && O8 === false && turn === 1) { document.getElementById("8").innerHTML = 'O'; O8 = true turn-- } if(X8 === true && X9 === true && X7 === false && O7 === false && turn === 1) { document.getElementById("7").innerHTML = 'O'; O7 = true turn-- } if(X1 === true && X4 === true && X7 === false && O7 === false && turn === 1) { document.getElementById("7").innerHTML = 'O'; O7 = true turn-- } if(X1 === true && X7 === true && X4 === false && O4 === false && turn === 1) { document.getElementById("4").innerHTML = 'O'; O4 = true turn-- } if(X7 === true && X4 === true && X1 === false && O1 === false && turn === 1) { document.getElementById("1").innerHTML = 'O'; O1 = true turn-- } if(X2 === true && X5 === true && X8 === false && O8 === false && turn === 1) { document.getElementById("8").innerHTML = 'O'; O8 = true turn-- } if(X2 === true && X8 === true && X5 === false && O5 === false && turn === 1) { document.getElementById("5").innerHTML = 'O'; O5 = true turn-- } if(X5 === true && X8 === true && X2 === false && O2 === false && turn === 1) { document.getElementById("2").innerHTML = 'O'; O2 = true turn-- } if(X3 === true && X6 === true && X9 === false && O9 === false && turn === 1) { document.getElementById("9").innerHTML = 'O'; O9 = true turn-- } if(X3 === true && X9 === true && X6 === false && O6 === false && turn === 1) { document.getElementById("6").innerHTML = 'O'; O6 = true turn-- } if(X9 === true && X6 === true && X3 === false && O3 === false && turn === 1) { document.getElementById("3").innerHTML = 'O'; O3 = true turn-- } if(X5 === true && X7 === true && X3 === false && O3 === false && turn === 1) { document.getElementById("3").innerHTML = 'O'; O3 = true turn-- } if(X5 === true && X3 === true && X7 === false && O7 === false && turn === 1) { document.getElementById("7").innerHTML = 'O'; O7 = true turn-- } if(X7 === true && X3 === true && X5 === false && O5 === false && turn === 1) { document.getElementById("5").innerHTML = 'O'; O5 = true turn-- } if(X1 === true || X2 === true || X3 === true || X4 === true || X5 === true || X6 === true || X7 === true || X8 === true || X9 === true && turn === 1) { if(O5 === false && X5 === false){ document.getElementById("5").innerHTML = 'O'; O5 = true turn--} else { if(X1 === false && O1 === false && turn === 1){ document.getElementById("1").innerHTML = 'O'; O1 = true turn-- } if(X2 === false && O2 === false && turn === 1){ document.getElementById("2").innerHTML = 'O'; O2 = true turn-- } if(X3 === false && O3 === false && turn === 1){ document.getElementById("3").innerHTML = 'O'; O3 = true turn-- } if(X4 === false && O4 === false && turn === 1){ document.getElementById("4").innerHTML = 'O'; O4 = true turn-- } if(X5 === false && O5 === false && turn === 1){ document.getElementById("5").innerHTML = 'O'; O5 = true turn-- } if(X6 === false && O6 === false && turn === 1){ document.getElementById("6").innerHTML = 'O'; O6 = true turn-- } if(X7 === false && O7 === false && turn === 1){ document.getElementById("7").innerHTML = 'O'; O7 = true turn-- } if(X8 === false && O8 === false && turn === 1){ document.getElementById("8").innerHTML = 'O'; O8 = true turn-- } if(X9 === false && O9 === false && turn === 1){ document.getElementById("9").innerHTML = 'O'; O9 = true turn-- } } } } checkForWin() } function checkForWin() { if(X1 === true && X2 === true && X3 === true){ setTimeout(XWins, 100) turn+=2 } if(X4 === true && X5 === true && X6 === true){ setTimeout(XWins, 100) turn+=2 } if(X7 === true && X8 === true && X9 === true){ setTimeout(XWins, 100) turn+=2 } if(X1 === true && X4 === true && X7 === true){ setTimeout(XWins, 100) turn+=2 } if(X2 === true && X5 === true && X8 === true){ setTimeout(XWins, 100) turn+=2 } if(X3 === true && X6 === true && X9 === true){ setTimeout(XWins, 100) turn+=2 } if(X1 === true && X5 === true && X9 === true){ setTimeout(XWins, 100) turn+=2 } if(X3 === true && X5 === true && X7 === true){ setTimeout(XWins, 100) turn+=2 } if(O1 === true && O2 === true && O3 === true){ setTimeout(OWins, 100) turn+=2 } if(O4 === true && O5 === true && O6 === true){ setTimeout(OWins, 100) turn+=2 } if(O7 === true && O8 === true && O9 === true){ setTimeout(OWins, 100) turn+=2 } if(O1 === true && O4 === true && O7 === true){ setTimeout(OWins, 100) turn+=2 } if(O2 === true && O5 === true && O8 === true){ setTimeout(OWins, 100) turn+=2 } if(O3 === true && O6 === true && O9 === true){ setTimeout(OWins, 100) turn+=2 } if(O1 === true && O5 === true && O9 === true){ setTimeout(OWins, 100) turn+=2 } if(O3 === true && O5 === true && O7 === true){ setTimeout(OWins, 100) turn+=2 } } function OWins() { alert("O Wins") OWinNum+=1 document.getElementById("win").innerHTML = 'X:' + XWinNum + '-' + 'O:' + OWinNum } function XWins() { alert("X Wins") XWinNum+=1 document.getElementById("win").innerHTML = 'X:' + XWinNum + '-' + 'O:' + OWinNum } function Restart() { document.getElementById("1").innerHTML = '-' document.getElementById("2").innerHTML = '-' document.getElementById("3").innerHTML = '-' document.getElementById("4").innerHTML = '-' document.getElementById("5").innerHTML = '-' document.getElementById("6").innerHTML = '-' document.getElementById("7").innerHTML = '-' document.getElementById("8").innerHTML = '-' document.getElementById("9").innerHTML = '-' turn = 0 X1 = false X2 = false X3 = false X4 = false X5 = false X6 = false X7 = false X8 = false X9 = false O1 = false O2 = false O3 = false O4 = false O5 = false O6 = false O7 = false O8 = false O9 = false } </script> <table> <tr> <td align="center"><button id="1" onclick="Xon1()">-</button></td> <td align="center"><button id="2" onclick="Xon2()">-</button></td> <td align="center"><button id="3" onclick="Xon3()">-</button></td> </tr> <tr> <td align="center"><button id="4" onclick="Xon4()">-</button></td> <td align="center"><button id="5" onclick="Xon5()">-</button></td> <td align="center"><button id="6" onclick="Xon6()">-</button></td> </tr> <tr> <td align="center"><button id="7" onclick="Xon7()">-</button></td> <td align="center"><button id="8" onclick="Xon8()">-</button></td> <td align="center"><button id="9" onclick="Xon9()">-</button></td> </tr> </table> <button onclick="Restart()">Restart</button> <h4 id="win"></h4> </body> </html></code></pre> </div> </div> <p></p> <p>嘿,我是堆栈溢出的新手,是的,我知道它有很多代码,但我正在学习循环和数组以缩短它。回到正题。谁能告诉我为什么 X 每次获胜都会赢两次。 (要获胜,请转到右中,然后是左下,然后是右下,然后是右上角。)如果有人能告诉我为什么这样做,我将不胜感激。如果有人能给我一个很好的链接来学习循环和数组,并且不会太令人困惑,那就太好了。</p> <p>当 X 获胜时,我需要它停止给 X 两场胜利。我尝试复制并粘贴 O win 并重命名变量,以便它适用于 X,我也对函数 Xwins() 做了同样的事情。</p> </question> <answer tick="false" vote="1"> <p>在您的 <pre><code>compMove()</code></pre> 函数中 <pre><code>checkForWin()</code></pre> 调用两次。这就是为什么它两次显示获胜者。</p> <ol> <li>函数开始</li> <li>功能结束</li> </ol> <p>当“O”获胜时,仅第二个<pre><code>checkForWin()</code></pre>起作用。但是当“X”获胜时,<pre><code>checkForWin()</code></pre> 都会运行。</p> <p><strong>NOT:</strong> 你确实需要提高你的代码技能。这不是一个干净的代码示例。您可以查看并学习有关 SOLID 和 Clean Code 的一些内容。</p> <p>看一下:<a href="https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29" rel="nofollow noreferrer">https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29</a></p> </answer> </body></html>
让 O1 = false; 让 X1 = 假; 让 O2 = false; 让X2=假; 让O3=假; 让X3=假; 让O4=假; 让 X4 = 假; 让O5=假; 让 X5 = 假; 让 O6 = 假; 让 X6 = 假; 让O...
如何使用 Minimax 算法和 Alpha Beta 剪枝解决 Tic Tac Toe 4x4 游戏
我使用 Minimax 和 Alpha Beta 剪枝制作了一个 Tic Tac Toe 游戏。我想为 Tic Tac Toe (10x10) 游戏制作一个计算机 AI,但它的游戏树尺寸大得离谱。 我的代码是这样的,...
我正在尝试制作一个 TicTacToe Ai 来对抗。但是,我尝试在单击第一个方块时出现一个 X,然后一秒钟后出现一个 O
TD { 边框:1px 纯黑; 高度:50px; 宽度:50px;} 让 O1 = 假 让 X1 = 假 让转弯 = 0 函数 X...</desc> <question vote="0"> <pre><code><html> <body> <style> td { border: 1px solid black; height: 50px; width: 50px;} </style> <script> let O1 = false let X1 = false let turn = 0 function Xon1() { if(O1 === false && X1 === false && turn === 0) { document.getElementById("1").innerHTML = 'X' let X1 = true setTimeout(compMove, 1000)}} function compMove() { if(X1 === true) { document.getElementById("5").innerHTML = 'O'}} </script> </body> <table> <tr> <td align= 'center'><button id="1" onclick="Xon1()">-</button></td> <td align= 'center'><button>-</button></td> <td align= 'center'><button>-</button></td> </tr> <tr> <td align= 'center'><button>-</button></td> <td align= 'center'><button>-</button></td> <td align= 'center'><button>-</button></td> </tr> <tr> <td align= 'center'><button">-</button></td> <td align= 'center'><button">-</button></td> <td align= 'center'><button">-</button></td> </tr> </table> </html> </code></pre> <p>我不断尝试不同的事情,但每当我向 compMove() 添加 if 语句时,即使 X1 等于 true,它也不会运行。我不明白我们出了什么问题,请帮忙。</p> </question> <answer tick="false" vote="1"> <p>不要在 <pre><code>Xon1</code></pre> 中使用 let 再次声明 X1 并向所有框添加 ID 这是您正在寻找的潜在代码</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><html> <body> <style> td { border: 1px solid black; height: 50px; width: 50px; } </style> <script> let O1 = false; let X1 = false; let turn = 0; function Xon1() { if (O1 === false && X1 === false && turn === 0) { document.getElementById("1").innerHTML = 'X'; X1 = true; // no need declare X1 again using let so I removed that setTimeout(compMove, 1000); } } function compMove() { if (X1 === true) { document.getElementById("5").innerHTML = 'O'; } } </script> </body> <table> <tr> <td align="center"><button id="1" onclick="Xon1()">-</button></td> <td align="center"><button id="2">-</button></td> <td align="center"><button id="3">-</button></td> </tr> <tr> <td align="center"><button id="4">-</button></td> <td align="center"><button id="5">-</button></td> <td align="center"><button id="6">-</button></td> </tr> <tr> <td align="center"><button id="7">-</button></td> <td align="center"><button id="8">-</button></td> <td align="center"><button id="9">-</button></td> </tr> </table> </html></code></pre> </div> </div> <p></p> <p>接下来的步骤一切顺利。</p> </answer> </body></html>
为什么我的 Tic Tac Toe 游戏机没有记录“Winner!”?
我正在构建一个 Tic Tac Toe 游戏,我不确定为什么我的最终 if 语句 // 如果一行中的所有条目都与用户的符号匹配,则报告获胜者 if (((gameGrid[i][0] == gameGrid[i][1]) ==
任何人都可以解释什么“std::vector<std::vector<char>> board(3, std::vector<char>(3, ' '));”意思是
我遇到了这段用于构建 Tic-Tac-Toe 游戏的代码,但不知道它意味着什么。谁能用简单的话解释一下? std::vector> 板(3, std::vector 我遇到了这段用于构建 Tic-Tac-Toe 游戏的代码,但不知道它意味着什么。谁能简单解释一下吗? std::vector<std::vector<char>> board(3, std::vector<char>(3, ' ')); 上下文: void drawBoard(const std::vector<std::vector<char>> &board) { for (const auto &row : board) { for (char cell : row) { std::cout << cell << " "; } std::cout << std::endl; } } int main() { std::vector<std::vector<char>> board(3, std::vector<char>(3, ' ')); char currentPlayer = 'X'; int row, col; bool gameOver = false; 该行正在使用 std::vector 的构造函数之一,两次: constexpr vector( size_type count, const T& value, const Allocator& alloc = Allocator() ); 此构造函数用于用 vector 份数 count 来初始化 value。 所以这个... std::vector<char>(3, ' ') ... 用三个元素构造 vector 的 char,所有元素都初始化为 ' '(空格)。 在这个... std::vector<std::vector<char>> board(3, std::vector<char>(3, ' ')); ... value_type 是 std::vector<char>,它会复制 的三个副本 std::vector<char>(3, ' '),这使得 char 的 3x3 游戏板全部初始化为 ' '。
我需要重新学习C,我正在学习的课程的一部分要求制作一个简单的井字棋游戏。我已将代码设置为将用户输入视为“输入行(0、1 或 2)和列(0、1、...
TicTacToe 使用极小极大和 alpha-beta 剪枝无法做出正确的决定
我正在制作一个带有极小极大和 alpha beta 修剪的井字游戏机器人,但它没有达到标准(实际上有点糟糕)。当我尝试玩它时,机器人会错过最明显的动作......
我是编程新手,我正在玩初级水平的井字棋游戏,但当用户输入无效值时,我无法设法让我的代码重复。它没有重新问问题,而是结束了
我想创建一种算法,为计算机生成井字棋移动的最佳位置。此外,井字棋函数的行和列值必须由 ran 生成...
Flutter W/zipro(2568):打开存档构建 pp\outputs pk pp.apk 时出错:错误:转储失败,因为找不到 AndroidManifest.xml
我构建了一个简单的井字棋游戏。起初,当我在物理 Android 设备上运行该程序时,它可以工作,但第二天就不再工作了。它显示此错误。 W/zipro (2568):错误
1 2 3 4 5 6 7 8 9 我正在用这个制作井字游戏;-; 我尝试了一个公式,但结果只是 0 0 0 1 1 1 2 2 2 也真的会
为什么我的程序在 X 连续三个时注册,但在 O 连续三个时注册?
我正在创建一个井字棋游戏,当三个 X 连续时,我收到一条消息 X 赢了,但是当三个 O 连续时,没有消息弹出。我似乎无法发现问题所在。你能指点我吗...
我正在编写井字棋代码,但有点卡住了! 用户输入一个位置,如果输入的位置为空(其位置有一个数字),我想将数字更改为...
带有极小极大的井字游戏可以在中间行或中间列进行。如何修复它,使其变得无与伦比?
let main = (function() { 让当前玩家; 让游戏结束= false; 让 boardArray = Gameboard(); constdialogElement = document.querySelector('[data-modal]'); const gameContainer = 文档。
我是 Unity 新手,我已经在互联网上搜索了大约 5 天,了解如何为 Tic Tac Toe 游戏创建无限棋盘以及获胜组合是什么
所以我在下一个js中编写了这段代码。由于某种原因,它无法正常工作。我已经尝试了几乎所有方法,但仍然无法正常工作。我什至尝试使用 alpha beta 修剪,但它仍然是......
在 Flutter 中创建响应式 Tic Tac Toe 字段布局
我目前正在致力于在 Flutter 中实现响应式 Tic Tac Toe 字段,并且遇到了布局问题。我已经成功地显示了“十字”和“圆圈”符号,b...