我做了一个嵌套的数组,用于模拟表中的情况,并且看起来工作正常。我的目标是在每一个动作上都在这个数组上运行,以检查是否有胜利。它分为3部分:列检查器,行检查器和倾斜检查器,但是由于某种原因,我看不到警报“胜利”。
非常感谢!
相关代码:Html
<main>
<table class="delete">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</main>
CSS
.cross {
background-image: url(x.png);
background-size: cover;
}
.circle {
background-image: url(circle.png);
background-size: cover;
}
table {
border-collapse: collapse;
width: 50vw;
height: 70vh;
border: 5px solid black;
margin: auto;
}
td {
border: 5px solid black;
}
香草JS
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";
}
//collums winning
for(let z = 0; z<2; z++)
{
//collums 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++;
})
}
.cross {
background-image: url(x.png);
background-size: cover;
background: red;
}
.circle {
background-image: url(circle.png);
background-size: cover;
background: green;
}
table {
border-collapse: collapse;
width: 50vw;
height: 70vh;
border: 5px solid black;
margin: auto;
}
td {
border: 5px solid black;
}
<html>
<head>
</head>
<body>
<main>
<table class="delete">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</main>
<script>
(function() {
// your page initialization code here
// the DOM will be available here
let table = document.getElementsByTagName("table")[0];
let saveTypeGame;
let friendTurn = 0;
let arr = [[],[],[]];
let colWin = 0;
if(true)//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";
}
//collums winning
for(let z = 0; z<2; z++)
{
//collums 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++;
})
}
})()
</script>
</body>
</html>
您无法像以前那样顺序比较项目。
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("table")[0];
let friendTurn = 0;
let arr = [
[],
[],
[]
];
table.addEventListener("click", function(e1) {
let cellIndex = parseInt(e1.target.cellIndex);
// check if cell isn't clicked
if (!e1.target.classList.contains("cross") &&
!e1.target.classList.contains("circle") &&
// check for border clicks
arr[cellIndex] !== undefined) {
let s = "circle";
if (friendTurn % 2 == 0) s = "cross";
friendTurn++;
let rowIndex = parseInt(e1.target.parentElement.rowIndex);
arr[cellIndex][rowIndex] = s;
e1.target.classList.add(s);
for (let z = 0; z <= 2; z++) {
if (arr[z][0] == s &&
arr[z][1] == s &&
arr[z][2] == s) {
reset("collums" + z, s);
}
if (arr[0][z] == s &&
arr[1][z] == s &&
arr[2][z] == s) {
reset("rows" + z, s);
}
}
if (arr[0][0] == s &&
arr[1][1] == s &&
arr[2][2] == s) {
reset("slant1", s);
}
if (arr[0][2] == s &&
arr[1][1] == s &&
arr[2][0] == s) {
reset("slant2", s);
}
if (friendTurn >= 9) reset("draw", "no one");
}
});
function reset(p, s) {
console.clear();
console.log(s, "win", p);
friendTurn = 0;
arr = [
[],
[],
[]
];
for (let td of document.querySelectorAll("td")) {
td.classList.remove("circle", "cross");
}
}
.cross {
background-image: url("https://via.placeholder.com/90/444/fff/?text=X");
background-size: cover;
}
.circle {
background-image: url("https://via.placeholder.com/90/bbb/000/?text=O");
background-size: cover;
}
table {
border-collapse: collapse;
width: 10em;
height: 10em;
margin: auto;
}
td {
border: 5px solid black;
}
<main>
<table class="delete">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</main>