2012-03-29 17 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

+0

これらの機能と関連するHTMLを投稿する必要があります。 – j08691

+0

["Lose"](http://dictionary.reference.com/browse/lose)は綴られていません["Loose"](http://dictionary.reference.com/browse/loose)...それらを見てください。 – Sparky

答えて

1

あなたのチェック(およびcheckLoose)は、クリック中にのみ呼び出されます。 コール()関数内にoを追加した行の後に勝ちと敗北をチェックする必要があります。

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

関数呼び出しでは、(trueを返していないからcheckLooseの原因となる)のセルに「O」の文字を追加する前に、勝者/敗者をチェック。以前に追加した場合、checkLooseはtrueを返します(ゲームが正常に更新されます)。

人間が勝った場合、コンピュータは引き続き「o」を追加しますしかし、ゲームは "あなたが勝つ"と言うでしょう) - これは様々な方法で対処することができます。私はあなたがそれを理解できるようにします:)

+1

ありがとう、これは本当に本当に役に立ちました。 –

関連する問題