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()
var plyr=“X”
,将该行置于其上方,否则每单击一次,palyer就会重置为XsetAttribute(“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;
}
}
}