私は 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>