我一直在编写 15 个滑块拼图的 Javascript 版本,并且能够通过交换 innerHTML 值来模拟图块的“移动”。正如我看到其他人所建议的那样,我也在使用而不是数组。给定我的代码,我将如何输入一种方法来检查难题是否已解决?解决后,我希望它发出“已解决!”的警报。消息,我可以做到。我只是不知道如何让它检查这个谜题是否真的被解决了。
我正在考虑使用条件 if 语句弹出警报(即,如果空白单元格位于第 3 行,单元格 3),但很快就失败了。它也不会检查每一行的 1-15 是否以正确的顺序排列。我最初的拼图是从交换 2 个瓷砖开始的。这是我到目前为止的位置:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <head>
<title>15 puzzle</title>
<style>
td {
border: 1px solid blue;
width: 30px;
height: 30px;
text-align: center;
vertical-align: middle;
}
td:hover {
background-color: yellow;
}
</style>
<script>
var blank_row = 3;
var blank_col = 3;
var puzzle = document.getElementById("puzzle");
function f(e) {
var my_row = e.parentElement.rowIndex;
var my_col = e.cellIndex;
if ((blank_col == my_col &&
Math.abs(blank_row - my_row) == 1)
||
(blank_row == my_row &&
Math.abs(blank_col - my_col) == 1)) {
var e2 = document.getElementById("puzzle").rows[blank_row].cells[blank_col];
e2.innerHTML = e.innerHTML;
e.innerHTML = " ";
blank_row = my_row;
blank_col = my_col;
}
}
</script>
</head>
<body>
<table id="puzzle">
<tr>
<td onclick="f(this)">1</td>
<td onclick="f(this)">6</td>
<td onclick="f(this)">3</td>
<td onclick="f(this)">4</td>
</tr>
<tr>
<td onclick="f(this)">5</td>
<td onclick="f(this)">10</td>
<td onclick="f(this)">7</td>
<td onclick="f(this)">8</td>
</tr>
<tr>
<td onclick="f(this)">9</td>
<td onclick="f(this)">2</td>
<td onclick="f(this)">11</td>
<td onclick="f(this)">12</td>
</tr>
<tr>
<td onclick="f(this)">13</td>
<td onclick="f(this)">14</td>
<td onclick="f(this)">15</td>
<td onclick="f(this)"> </td>
</tr>
</table>
</body>
</html>