Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 Tictaoe游戏代码_Javascript_Html_Tic Tac Toe - Fatal编程技术网

Javascript Tictaoe游戏代码

Javascript Tictaoe游戏代码,javascript,html,tic-tac-toe,Javascript,Html,Tic Tac Toe,我创造了这个游戏好几个小时。我完成了它,没有任何语法错误 我试着玩它,但不起作用。我不知道为什么?我的代码有问题吗 函数startTac(){ var t1=document.getElementById(“1”); var t2=document.getElementById(“2”); var t3=document.getElementById(“3”); var t4=document.getElementById(“4”); var t5=document.getElementBy

我创造了这个游戏好几个小时。我完成了它,没有任何语法错误

我试着玩它,但不起作用。我不知道为什么?我的代码有问题吗


函数startTac(){
var t1=document.getElementById(“1”);
var t2=document.getElementById(“2”);
var t3=document.getElementById(“3”);
var t4=document.getElementById(“4”);
var t5=document.getElementById(“5”);
var t6=document.getElementById(“6”);
var t7=document.getElementById(“7”);
var t8=document.getElementById(“8”);
var t9=document.getElementById(“9”);
var plyr=“X”;
如果((t1.innerHTML)=(t2.innerHTML)&(t2.innerHTML)=(t3.innerHTML)| |(t4.innerHTML)=(t5.innerHTML)&(t5.innerHTML)=(t6.innerHTML)|(t7.innerHTML)=(t8.innerHTML)&(t8.innerHTML)=(t9.innerHTML)){
警报(“游戏结束”);
}
}
如果((t1.innerHTML)=(t4.innerHTML)和(t4.innerHTML)=(t7.innerHTML)| |(t2.innerHTML)=(t5.innerHTML)和&(t5.innerHTML)=(t8.innerHTML)|(t3.innerHTML)=(t6.innerHTML)和(t6.innerHTML)=(t9.innerHTML)){
警报(“游戏结束”);
}
}
如果((t1.innerHTML)=(t5.innerHTML)和&(t5.innerHTML)=(t9.innerHTML)| |(t3.innerHTML)=(t5.innerHTML)和&(t5.innerHTML)=(t7.innerHTML)){
警报(“游戏结束”);
}
}
功能gameTac(tar){
开关(plyr){
案例“X”:
{
document.getElementById(tar).innerHTML=“O”;
document.getElementById(tar).setAtAttribute(“onclick”,即“);
plyr=“O”startTac();
打破
}
案例“O”:
{
document.getElementById(tar).innerHTML=“X”;
document.getElementById(tar).setAtAttribute(“onclick”,即“);
plyr=“X”startTac();
打破
}
}
}
H

我的第一个想法是,您需要仔细检查,然后确保您的条件是正确的:

if ( (t1.innerHTML == t2.innerHTML && t2.innerHTML == t3.innerHTML) || (t4.innerHTML == t5.innerHTML && t5.innerHTML == t6.innerHTML) || (t7.innerHTML == t8.innerHTML && t8.innerHTML == t9.innerHTML)) {
      alert("Game Over");
}
以及:

以及:

  • startTac()
  • 有人曾经决定你不能用数字作为身份证,说真的
  • 从startTac()中取出
    var plyr=“X”
    ,将该行置于其上方,否则每单击一次,palyer就会重置为X
  • setAttribute(“onclick”,”)
    在代码中拼写错误
  • 必须处理你的条件块,它们会在开始时触发,因为空单元格是相等的
  • 当游戏结束时,你应该说谁赢了

  • 简单地说:你的代码有很多错误。。。(有关详细信息,请参阅其他答案)。这里有一些代码,你可以让你的游戏工作,我将留给你来完成

    var plyr = "X";
    
    function startTac() {
        var t1 = document.getElementById("1");
        var t2 = document.getElementById("2");
        var t3 = document.getElementById("3");
        var t4 = document.getElementById("4");
        var t5 = document.getElementById("5");
        var t6 = document.getElementById("6");
        var t7 = document.getElementById("7");
        var t8 = document.getElementById("8");
        var t9 = document.getElementById("9");
    
        let tiles = [0, t1, t2, t3, t4, t5, t6, t7, t8, t9]
        let winningPaths = [
            [1,2,3],[4,5,6],[7,8,9],
            [1,4,7],[2,5,8],[3,6,9],
            [1,5,9],[3,5,7]
        ]
    
        winningPaths.forEach(path => {
            let matchingTiles = path.filter(id => {
                let tile = tiles[id]
    
                if(tile.textContent === plyr) {
                  return true
                } else {
                  return false
                }
    
          }).length
    
          if(matchingTiles === 3) {
            alert("Game Over")
          }
        })
    
      }    
    
      function gameTac(tar) {
        switch (plyr) {
          case "X":
          {
              document.getElementById(tar).textContent = "O";
              document.getElementById(tar).onclick = undefined;
              plyr = "O";
              startTac();
              break;
          }
          case "O":
          {
              document.getElementById(tar).textContent = "X";
              document.getElementById(tar).onclick = undefined;
              plyr = "X";
              startTac();
              break;
            }
        }
      }
    

    请帮忙!!!!!!!!你面临的问题是什么?我怀疑你的if状况。请仔细检查对奇异变量使用
    var
    和数组使用
    let
    的原因是什么?我从未使用过
    let
    ,我只是想知道是否应该开始。我只是复制并粘贴了操作代码,没有意识到顶部的
    var
    s。您应该明确停止使用
    var
    ,而是为所有变量选择
    let
    const
    <代码>让和
    常量
    的工作方式与
    var
    稍有不同
    let
    是块作用域,而
    var
    是函数作用域
    const
    与java等其他语言中的变量类似,因为一旦声明了
    const
    ,就不能将该变量重新声明为新值。以下是一段关于此事的精彩视频:
      if ((t1.innerHTML == t5.innerHTML && t5.innerHTML == t9.innerHTML) || (t3.innerHTML == t5.innerHTML && t5.innerHTML == t7.innerHTML)) {
        alert("Game Over");
      }
    
    var plyr = "X";
    
    function startTac() {
        var t1 = document.getElementById("1");
        var t2 = document.getElementById("2");
        var t3 = document.getElementById("3");
        var t4 = document.getElementById("4");
        var t5 = document.getElementById("5");
        var t6 = document.getElementById("6");
        var t7 = document.getElementById("7");
        var t8 = document.getElementById("8");
        var t9 = document.getElementById("9");
    
        let tiles = [0, t1, t2, t3, t4, t5, t6, t7, t8, t9]
        let winningPaths = [
            [1,2,3],[4,5,6],[7,8,9],
            [1,4,7],[2,5,8],[3,6,9],
            [1,5,9],[3,5,7]
        ]
    
        winningPaths.forEach(path => {
            let matchingTiles = path.filter(id => {
                let tile = tiles[id]
    
                if(tile.textContent === plyr) {
                  return true
                } else {
                  return false
                }
    
          }).length
    
          if(matchingTiles === 3) {
            alert("Game Over")
          }
        })
    
      }    
    
      function gameTac(tar) {
        switch (plyr) {
          case "X":
          {
              document.getElementById(tar).textContent = "O";
              document.getElementById(tar).onclick = undefined;
              plyr = "O";
              startTac();
              break;
          }
          case "O":
          {
              document.getElementById(tar).textContent = "X";
              document.getElementById(tar).onclick = undefined;
              plyr = "X";
              startTac();
              break;
            }
        }
      }