2016-10-08 167 views
3

我正在做一個十五個益智遊戲,我希望你只能點擊空格旁邊的數字,但現在你可以點擊無處不在...如何改變這個?我還以爲你可以爲列和行的如果 - 語句..十五個益智遊戲

<!DOCTYPE html> 
 

 
<html> 
 
<head> 
 
    <title>The Fifteen Puzzle Game</title> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
 

 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
    <script> 
 

 
    $(document).ready(function(){ 
 

 
     var currentBoard = new Array(' ','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'); 
 

 
    
 
     
 
\t for(i=0 ; i++<100 ; x = Math.floor(Math.random()*16), y = Math.floor(Math.random()*16), currentBoard[x] = currentBoard.splice(y, 1, currentBoard[x])[0]); 
 

 

 
     repaint(); // Redraw puzzle board  
 

 
     // 
 
     // Funktion repaint() 
 
     // Redraw puzzle board 
 
     function repaint(){ 
 
     currentString = ""; 
 
     for(i=1;i<17;i++){ 
 
      currentString += "<input type='button' id='" + i + "' value='" + currentBoard[i-1] + "' />"; 
 
      if ((i%4) == 0) currentString += "<br />"; 
 
     } 
 
     $("#board").html(currentString); 
 
     } 
 

 
     
 
     function swapArrElems(index_a, index_b) { 
 
      var temp = currentBoard[index_a]; 
 
      currentBoard[index_a] = currentBoard[index_b]; 
 
      currentBoard[index_b] = temp; 
 
     } 
 

 
     
 
     $('#board').click(function(event){ 
 
     current = $(event.target).attr("id")-1; 
 

 
     for(i=0;i<16;i++) if(currentBoard[i]==0) zeroIndex = i; 
 
     swapArrElems(current, zeroIndex); 
 
     repaint(); 
 
     
 
     }); 
 

 

 
    }); 
 
    
 
    </script> 
 

 
    <style> 
 
    input[type="button"] { width: 80px; height: 80px; font-size: 30px; } 
 
    </style> 
 
</head> 
 

 
<body> 
 

 
<div id="board"> 
 
</div> 
 

 
</body> 
 
</html>

+0

如果我解決了您的問題,您介意將我的答案標記爲解決方案嗎? –

+0

絕對! @JacobReisner – user6826584

回答

1

從我理解你的代碼的方式,你必須通過4行id'ed 16個按鈕。每次點擊一個按鈕時,該按鈕的數組值和空白按鈕交換。你快到了。這裏最重要的細節是按鈕ID,它始終保持不變。

您需要在單擊按鈕的ID和需要條件的空白按鈕的ID之間添加比較。

我不打算爲您提供代碼,因爲我不想只給出答案。我要給你的邏輯,而不是:

在你的最後一個函數,if(currentBoard [i] == 0)zeroIndex = i;

**Else if** the id(clicked button) == id(blank button)-1. OR id(blank button)+1. OR 
id(blank button)-4. OR id(blank button)+4 ........ 

Swap the elements. 

Else 

don't swap the elements. 

祝你好運!希望這可以幫助。