オンライン デモhttp://img.jb51.net/online/pintu/pintu.htm コードをコピー コードは次のとおりです: JS ジグソーパズル <br> フォントサイズ : 9pt; <br> } <br>テーブル{ <br>ボーダー折りたたみ: <br>} <br>入力{ <br> width:20px> <br> ></head> <br> a href="http://blog.csdn.net/sunxing007">http://blog.csdn.net/sunxing007</a><br> 🎜> <input type="text" id= "lines" value='3'/>行<input type="text" id="cols" value='3'/>列<ボタンid= "開始">/ボタン> <br><table id="board" border=0 cellpadding=0> <br> <td> tr>/tr><br><br><br><br><br><br><br><br> br><br><br><br><br><br><br><img id="img" src="http://img.%20jb51.net/online/pintu/dog.jpg" alt="JS ジグソーパズルはオブジェクト指向であり、完全にコメントされています。 _JavaScript スキル" >転載する場合は出典を明記してください: <a href="http://blog.csdn.net/sunxing007 ">http://blog.csdn.net/sunxing007</a><br> <br></body> <br></html> <br><script> <br>//デフォルトは IE7 以下ではありません。背景画像をキャッシュすることで遅延とちらつきが発生するため、このバグを修正します。<br>//(csdn netizen wtcsy http://blog.csdn.net/wtcsy/ によって提供) <br>試してください。 { <br>document.execCommand("BackgroundImageCache ", false, true); <br>}catch(e){alert(e)}; <br> //補助関数<br> function $(id){return document .getElementById(id)}; <br> /************************************************* <br> * jsパズルゲーム v1.6 <br> * 作者 sunxing007 <br> * http://blog.csdn.net/sunxing007 から転載する場合は明記してください <br> ************** *************************************/ <br> var PicGame = { <br> 3, <br> //画像ソース<br> img: $('img'), <br> // セルの高さ<br> cellHeight: 0, <br> //セルの幅<br> cellWi dth: 0, <br> //このゲームの主なオブジェクト: テーブル、各 TD は移動可能な小さなグリッドに対応します <br> ボード: $('board'), <br> $('ボード')、 This.y = $('cols').value>1?$('cols').value: 3; .board.deleteRow(0); <br> for(var i=0; i<this.x i> var tr = this.board.insertRow(-1); = 0; this.y;<br> this.img.width/this.y; ; i ){ <br> tds[i].style.width = this.cellWidth; <br> tds[i].style.height = this.cellHeight; tds[i].style.background = "url (" this .img.src ")"; <br> tds[i].style.border = "solid #ccc 1px" ; <br> var currCol = i%this.y; 、各セルの背景マップの位置を計算し、画像のように表示します。 <br> TDS [i] .style.backgroundpositionx = -This. cellWidth * currCol; /**begin: 並べ替えを中断します*******************/ <br>ソートアルゴリズムは次のようなものです。たとえば、現在、3*3のレイアウトがあり、その場所があります。<br> **/ <br><br> //目标位置配列 <br> varindex = []; <br> Index[0] = Math.floor(Math.random()*(this.x*this.y)); <br> while(index.length<(this.x*this.y)){ <BR> var num = Math.floor(Math.random()*(this.x*this.y)); <BR> for(var i=0; i<index.length; i ){ <BR> if(index[i]==num){ <BR> ブレーク; <BR> } <BR> } <BR> if(i==index.length){ <BR> index.length ] = 番号; <BR> } <BR> //window.status = インデックス; <BR> } <BR> var cloneTds = []; <BR> //取每td克隆、その後依拠目标位置配列インデックス、代替目标位置 <BR> for(var i=0; i<tds.length; i ){ <BR> cloneTds.push(tds[ i].cloneNode(true)); <BR> } <BR> for(var i=0; i<index.length; i ){ <BR> tds[i].parentNode.replaceChild(cloneTds[i] ]、tds[i]); <BR> } <BR> /**最後: シャッフルソート***********************/ <br><br> //td 追加 onclick イベント。<BR> tds = this.board.getElementsByTagName('td'); tds[i].onclick = function(){ < ~ インデックス; 🎜> //reachable は、現在クリックされているブロックが移動できるかどうかを示します <BR>到達可能な変数 = false; if(row 1<PicGame.x && PicGame.board.rows[row 1].cells[col].style.background == ''){ colBlank = <BR> 到達可能 = true; {到達可能 = true <BR> //window .status =" 到達可能! rowBlank: " rowBlank "colBlank:" <BR><BR> else if(col 1<PicGame.y && PicGame.board.rows[row].cells[col 1].style.background == ''){ <BR> rowBlank = row; <BR> colBlank = 列 1; <BR> 到達可能 = true; <BR> //window.status =" 到達可能! rowBlank: " rowBlank "colBlank:"colBlank; <BR> } <BR> else if(col-1>=0 && PicGame.board.rows[row].cells[col-1].style.background == ''){ <br> rowBlank = 行; <br> colBlank = 列 - 1; <br> 到達可能 = true; <br> //window.status =" 到達可能! rowBlank: " rowBlank "colBlank:"colBlank; <br> } <br> else{ <br> //window.status =" 到達不能!"; <br> 到達可能 = false; <br> }<br> board.rows[rowBlank].cells[colBlank].cloneNode(true); <br> var tmpCurrNode = PicGame.board.rows[row].cells[col] .cloneNode(true); de,PicGame.board.rows[rowBlank].cells [colBlank]); <br> 🎜> ; 🎜 >} <br></script> <br><br><br></this.x> </td> </div>