Javascript 我已经创建了一个非常简单的Tic-Tak-Toe游戏,我在索引和jquery的胜利检查方面遇到了麻烦

Javascript 我已经创建了一个非常简单的Tic-Tak-Toe游戏,我在索引和jquery的胜利检查方面遇到了麻烦,javascript,jquery,Javascript,Jquery,我已经看过这里了,还没有完全理解。我已经在这个问题上纠缠了整整一个月,并试图在其他地方提问,但没有成功 我写的代码至少可以说很糟糕,但我理解它。如果有人能以像我这样的傻瓜能理解的方式帮助我,我将不胜感激 功能清除按钮(){ $('td').text('')//清除按钮 } var turn=1;//轮换 $('td')。在('click',function()上{ var tableRow=$(this).closest('tr').index()//行的索引 var tableColumn=

我已经看过这里了,还没有完全理解。我已经在这个问题上纠缠了整整一个月,并试图在其他地方提问,但没有成功

我写的代码至少可以说很糟糕,但我理解它。如果有人能以像我这样的傻瓜能理解的方式帮助我,我将不胜感激

功能清除按钮(){
$('td').text('')//清除按钮
}
var turn=1;//轮换
$('td')。在('click',function()上{
var tableRow=$(this).closest('tr').index()//行的索引
var tableColumn=$(this).closest('td').index()//列的索引
如果(圈数===1){
$(this.text('O'))
}如果(圈===-1){//圈数
$(this.text('X'))
}否则{
log('oops');
}
$('td')。在('dblclick',function()上{
$(this.text(“”)//双击以清除td
})
$('button')。在('click',clearButton)//调用clear按钮
log(tableRow,tableColumn)//记录行和列
对于(变量i=0;i
表格{
左边距:自动;
右边距:自动;
}
运输署{
宽度:100px;
高度:100px;
边框:1px纯黑;
背景色:rgb(238227130);
文本对齐:居中;
字体大小:70px;
}
h1{
边际上限:0px;
文本对齐:居中;
}
身体{
背景色:rgb(204204204);
}
琼伯伦先生{
左边距:自动;
右边距:自动;
边框:1px纯黑;
垫底:10px;
填充顶部:10px;
}
.jumbotron按钮{
边缘顶部:20px;
边缘底部:0px;
}

井字过三关
清楚的

我在您的代码中添加了一些东西,希望能帮助您进入下一步。首先,我创建了一个名为table的9个元素的数组。然后,当玩家点击一个正方形时,该表将填充“X”或“O”:

td{
边框:实心1px#000;
高度:30px;
宽度:30px;
}

井字过三关
清楚的

我在您的代码中添加了一些东西,希望能帮助您进入下一步。首先,我创建了一个名为table的9个元素的数组。然后,当玩家点击一个正方形时,该表将填充“X”或“O”:

td{
边框:实心1px#000;
高度:30px;
宽度:30px;
}

井字过三关
清楚的

不是最好的答案,但我的步骤是将位置(列,行)转换为1D位置,并“硬”检查赢家

var checkedBox={};
函数clearButton(){
$('td').text('')//清除按钮
checkedBox={}
}
函数checkWinner(){
返回(checkedBox['0']&&checkedBox['0']==checkedBox['1']&&checkedBox['1']==checkedBox['2']))
||(checkedBox['3']&&checkedBox['3']==checkedBox['4']&&checkedBox['4']==checkedBox['5']))
||(checkedBox['6']&&checkedBox['6']==checkedBox['7']&&checkedBox['7']==checkedBox['8']))
||(checkedBox['0']&&checkedBox['0']==checkedBox['3']&&checkedBox['3']==checkedBox['6']))
||(checkedBox['1']&&checkedBox['1']==checkedBox['4']&&checkedBox['4']==checkedBox['7']))
||(checkedBox['2']&&checkedBox['2']==checkedBox['5']&&checkedBox['5']==checkedBox['8']))
||(checkedBox['0']&&checkedBox['0']==checkedBox['4']&&checkedBox['4']==checkedBox['8']))
||(checkedBox['2']&&checkedBox['2']==checkedBox['4']&&checkedBox['4']==checkedBox['6']))
}
var turn=1;//轮换
$('td')。在('click',function()上{
var tableRow=$(this).closest('tr').index()//行的索引
var tableColumn=$(this).closest('td').index()//列的索引
如果(圈数===1){
$(this.text('O'))
}如果(圈===-1){//圈数
$(this.text('X'))
}否则{
返回console.log('oops');
}
const-boxIndex=tableRow*3+tableColumn;
checkedBox[boxIndex]=turn==1?'O':'X';
if(checkWinner()){
警报(`Winner is${turn==1?'O':'X'}`);
返回clearButton();
}
$('td')。在('dblclick',function()上{
$(this.text(“”)//双击以清除td
})
$('button')。在('click',clearButton)//调用clear按钮
回合=回合*-1//改变回合
})
表格{
左边距:自动;
右边距:自动;
}
运输署{
宽度:100px;
高度:100px;
边框:1px纯黑;
背景色:rgb(238227130);
文本对齐:居中;
字体大小:70px;
}
h1{
边际上限:0px;
文本对齐:居中;
}
身体{
背景色:rgb(204204204);
}
琼伯伦先生{
左边距:自动;
右边距:自动;
边框:1px纯黑;
垫底:10px;
填充顶部:10px;
}
.jumbotron按钮{
边缘顶部:20px;
边缘底部:0px;
}

井字过三关
清楚的

不是最佳答案,但我的步骤是将位置(列,行)转换为1D位置,然后
const table = Array(9);
table[tableRow * 3 + tableColumn] = turn < 0 ? "X" : "0";