Javascript Tic Tac Toe-检查胜利(香草JS)
我做了一个嵌套数组来模拟表中的情况,它似乎工作得很好。 我的目标是在这个阵列上运行每一步,以检查是否有一个胜利。 它分为三个部分:列检查器、行检查器和倾斜检查器,但由于某些原因,我没有看到警报“赢” 非常感谢 相关代码: Html 香草JSJavascript Tic Tac Toe-检查胜利(香草JS),javascript,tic-tac-toe,Javascript,Tic Tac Toe,我做了一个嵌套数组来模拟表中的情况,它似乎工作得很好。 我的目标是在这个阵列上运行每一步,以检查是否有一个胜利。 它分为三个部分:列检查器、行检查器和倾斜检查器,但由于某些原因,我没有看到警报“赢” 非常感谢 相关代码: Html 香草JS let table = document.getElementsByTagName("table")[0]; let saveTypeGame; let friendTurn = 0; let arr = [[],[],[]]; let colWin = 0
let table = document.getElementsByTagName("table")[0];
let saveTypeGame;
let friendTurn = 0;
let arr = [[],[],[]];
let colWin = 0;
if(saveTypeGame=="friend")
{
table.addEventListener("click", function (e1) {
if (friendTurn%2 == 0)
{
e1.target.classList.add("cross");
arr[parseInt(e1.target.cellIndex)][parseInt(e1.target.parentElement.rowIndex)] = "cross";
}
else {
e1.target.classList.add("circle");
arr[parseInt(e1.target.cellIndex)][parseInt(e1.target.parentElement.rowIndex)] = "circle";
}
//columns winning
for(let z = 0; z<2; z++)
{
//columns winning
if(arr[z][0] == arr[z][1] == arr[z][2])
{
alert("win");
}
//rows winning
if(arr[0][z] == arr[1][z] == arr[2][z])
{
alert("win");
}
//slant winning
if(arr[0][0] == arr[1][1] == arr[2][2])
{
alert("win");
}
}
friendTurn++;
})
}
(功能(){
//您的页面初始化代码在这里
//DOM将在此处提供
let table=document.getElementsByTagName(“表”)[0];
让我们一起玩游戏;
让friendTurn=0;
设arr=[]、[]、[];
设colWin=0;
if(true)//saveTypeGame==“朋友”)
{
表.addEventListener(“单击”,函数(e1){
如果(friendTurn%2==0)
{
e1.target.classList.add(“交叉”);
arr[parseInt(e1.target.cellIndex)][parseInt(e1.target.parentElement.rowIndex)]=“交叉”;
}
否则{
e1.target.classList.add(“圈”);
arr[parseInt(e1.target.cellIndex)][parseInt(e1.target.parentElement.rowIndex)]=“圆圈”;
}
//专栏获奖
对于(设z=0;z),您不能像以前那样按顺序比较项目
if(arr[0][0] == arr[1][1] == arr[2][2]) // don't work
相反,您需要链接比较:
if ( arr[0][0] == s &&
arr[1][1] == s &&
arr[2][2] == s)
let table=document.getElementsByTagName(“表”)[0];
让friendTurn=0;
设arr=[
[],
[],
[]
];
表.addEventListener(“单击”,函数(e1){
设cellIndex=parseInt(e1.target.cellIndex);
//检查是否未单击单元格
如果(!e1.target.classList.contains)(“交叉”)&&
!e1.target.classList.contains(“圆”)&&
//检查边界单击
arr[cellIndex]!==未定义){
让我们“圈”;
如果(friendTurn%2==0)s=“交叉”;
friendTurn++;
让rowIndex=parseInt(e1.target.parentElement.rowIndex);
arr[cellIndex][rowIndex]=s;
e1.target.classList.add(s);
对于(z=0;z=9)重置(“绘制”、“无人”);
}
});
功能复位(p,s){
console.clear();
控制台日志(s,“win”,p);
friendTurn=0;
arr=[
[],
[],
[]
];
for(让td of document.querySelectorAll(“td”)){
td.类列表。删除(“圆圈”、“十字”);
}
}
.cross{
背景图像:url(“https://via.placeholder.com/90/444/fff/?text=X");
背景尺寸:封面;
}
.圆圈{
背景图像:url(“https://via.placeholder.com/90/bbb/000/?text=O");
背景尺寸:封面;
}
桌子{
边界塌陷:塌陷;
宽度:10em;
高度:10公分;
保证金:自动;
}
运输署{
边框:5px纯黑;
}
您不能像以前那样按顺序比较项目
if(arr[0][0] == arr[1][1] == arr[2][2]) // don't work
相反,您需要链接比较:
if ( arr[0][0] == s &&
arr[1][1] == s &&
arr[2][2] == s)
let table=document.getElementsByTagName(“表”)[0];
让friendTurn=0;
设arr=[
[],
[],
[]
];
表.addEventListener(“单击”,函数(e1){
设cellIndex=parseInt(e1.target.cellIndex);
//检查是否未单击单元格
如果(!e1.target.classList.contains)(“交叉”)&&
!e1.target.classList.contains(“圆”)&&
//检查边界单击
arr[cellIndex]!==未定义){
让我们“圈”;
如果(friendTurn%2==0)s=“交叉”;
friendTurn++;
让rowIndex=parseInt(e1.target.parentElement.rowIndex);
arr[cellIndex][rowIndex]=s;
e1.target.classList.add(s);
对于(z=0;z=9)重置(“绘制”、“无人”);
}
});
功能复位(p,s){
console.clear();
控制台日志(s,“win”,p);
friendTurn=0;
arr=[
[],
[],
[]
];
for(让td of document.querySelectorAll(“td”)){
td.类列表。删除(“圆圈”、“十字”);
}
}
.cross{
背景图像:url(“https://via.placeholder.com/90/444/fff/?text=X");
背景尺寸:封面;
}
.圆圈{
背景图像:url(“https://via.placeholder.com/90/bbb/000/?text=O");
背景尺寸:封面;
}
桌子{
边界塌陷:塌陷;
宽度:10em;
高度:10公分;
保证金:自动;
}
运输署{
边框:5px纯黑;
}
“它不起作用”不是诊断性的;请查看页面。@DaveNewton EditedDid您是否尝试使用“==”而不是“==”?您只检查了一个倾斜。倾斜检查不应该在循环中。一旦您找到一个赢的,您应该打破循环,无需进一步检查。“它不起作用”不是诊断性的;请查看页面。@DaveNewton EditedId您是否尝试使用“===”而不是“==”?您只检查了一个倾斜。倾斜检查不应该在循环中。一旦您找到一个胜利,您应该打破循环,无需进一步检查。