2012-03-29 54 views
0

我試圖做簡單的XO遊戲,它似乎工作得很好,但當我到達3「Os」 函數調用(),它不會給我你在if語句 鬆散,它確實給你贏了,我達到3「Xs」。任何人都可以告訴我爲什麼這個jquery代碼不響應正確嗎?

<script type="text/javascript" src="jquery.js" ></script> 
<script type="text/javascript" > 



    function call() { 
     var x = Math.floor((Math.random() * 9) + 1); 
     if ($('#td' + x).text() === "x" || $('#td' + x).text() === "o") { 
      call(); 
     } 

     else if (check() === true) { 
      $('div').text("You win "); 
      return false; 
     } 

     else if (checkLoose() === true) { 
     $('p').text("You Loose "); 
      return false; 
     } 

     else 
      $('#td' + x).text("o"); 
     } 



    function win(as, bs, cc) { 
     return ($('#td'+as).text() === "x" && $('#td'+bs).text() === "x" && $('#td'+cc).text() === "x") ; 

    } 

    function check(){ 

     if (win(1, 2, 3) || win(1, 4, 7) || win(4, 5, 6) || win(7, 8, 9) || win(2, 5, 8) || win(3, 6, 9) || win(1, 5, 9) || win(3, 5, 7) === true) 
       return true; 
} 

function checkLoose() { 

    if (lose(1, 2, 3) || lose(1, 4, 7) || lose(4, 5, 6) || lose(7, 8, 9) || lose(2, 5, 8) || lose(3, 6, 9) || lose(1, 5, 9) || lose(3, 5, 7) === true) { 

     return true; 
    } 
} 




    function lose(as, bs, cc) { 
     return ($('#td' + as).text() === "o" && $('#td' + bs).text() === "o" && $('#td' + cc).text() === "o"); 

    } 

    function dsd(sad) { 

     if ($('#td' + sad).text() === "x" || $('#td' + sad).text() === "o") 
      return false; 

     else if (check() === true) 
      return false; 

     else if (checkLoose() === true) { 

      return false; 
     } 
     else { 
      $("#td" + sad).text("x"); 
      call(); 
     }  
     } 

     $(document).ready(function(){ 
     $("td").hover(function() { 
      $(this).css("background-color", "yellow"); 
     }, function() { 
      $(this).css("background-color", "white"); 
     }); 
    }); 

</script> 

</head> 
<body> 




<center> 
<h1 >"  X ,O Game "</h1><br /> 
<div></div> 
<p></p> 
<table> 
    <tr> 
     <td id="td1" onclick="dsd(1);" ></td> 
     <td id="td2" onclick="dsd(2);"></td> 
     <td id="td3" onclick="dsd(3);"></td> 
    </tr> 

    <tr> 
     <td id="td4" onclick="dsd(4);"></td> 
     <td id="td5" onclick="dsd(5);"></td> 
     <td id="td6" onclick="dsd(6);"></td> 
    </tr> 

    <tr> 
     <td id="td7" onclick="dsd(7);"></td> 
     <td id="td8" onclick="dsd(8);"></td> 
     <td id="td9" onclick="dsd(9);"</td> 
    </tr> 
</table> 
</center> 
+0

'checkloose'必須是'checkLoose'大寫 – mgraph 2012-03-29 22:52:41

+0

需要發佈那些函數做什麼和任何關聯的HTML。 – j08691 2012-03-29 22:58:43

+0

[「Lose」](http://dictionary.reference.com/browse/lose)不拼寫[「Loose」](http://dictionary.reference.com/browse/loose)...查找它們。 – Sparky 2012-03-29 23:28:18

回答

1

您的支票(和checkLoose)只在點擊過程中被調用。 您需要檢查您在call()函數內添加o的行後的獲勝和損失。

$('#td' + x).text("o"); 
/* add calls to check() and checkLoose() here */ 
0

在函數調用,您加入「O」字母的電池(這將導致checkLoose從沒有返回true)之前檢查贏家/失敗者。如果你之前添加它,checkLoose將返回true(並且遊戲將會正確更新)

然而,它有一個副作用,即移動它:如果人贏了,計算機仍然會添加一個「o」(然而,遊戲會說「你贏了」) - 你可以通過各種方式解決這個問題。我會讓你找出那個:)

+1

謝謝,這真的很有幫助。 – 2012-03-30 00:16:06

相關問題