2016-04-26 15 views
0

私はチックタックのつま先のゲームを構築しようとしていますが、それは動作していません、私はそれがゲームボードをクリックすると、私はゲームを開始し、今問題は、このゲームを人間対機械にして、機械部分(機能AI())が正しく動作しないようにすることです。javascript tic tac toe

は、ここで私は、ユーザーがJSファイルの末尾にあるゲームボード上でクリックしたときに実行する必要があり、「ゲーム」機能(ゲーム())ですべての私の機能を持っているリンクcodepen

です。

ちょうどゲームをプレイしようとすると、私が話していることを理解するでしょう - 奇妙な行動と私は私の目を傷つけているとまだ私は立ち往生しています。

誰かが私を助けることができれば本当に感謝します。ありがとう。

+0

お役に立てば幸いです。ありがとう。 –

答えて

1

AI()関数は多かれ少なかれ動作します。実際にはゲームをプレイしているのはAIだけです。あなたは、正方形がクリックされたsymbDisp()関数を教えていないので、プレイヤーの移動は機能しません(「本」の文書ではなく、四角を指し)

あなたは

$('.square').on('click', function() { 
    game($(this)); 
}); 
を形成するためのEventHandlerを変更することができます

この無名関数の中で、これは四角形を参照します。これは、イベントハンドラがバインドされた要素であるためです。

game()とsymbDisp()関数を変更し、その要素を引数として取り、symbDisp()内部でそれを使用することで、この正方形要素を少しでも渡す必要があります。例えば

function game(elem){ 
    symbDisp(elem); 
    //more stuff 

function symbDisp(elem) { 
    if(elem.text()==='') { 
    //more stuff 

あり、あなたのゲーム内の他のバグもありますが、私はあなたが取り組むのものを残しておきます。

+0

おかげで、私はバグに取り組もうとしていますが、彼らはただ笑いを止めません。今は理解していますが、これはオブジェクトではなく、イベントがアタッチされているため、 "this"をsymbDisp()に言うと、 "this"が何であるか分かりません。私は正しい?今問題はそれがアイコンをトグルし続けることです、それはなぜですか? –

0

最初のsymbDispは、tdの代わりにthisとしてwindowを受信して​​います。

チェンジ・ライン10なぜなら、あなたがサブ関数にthisを渡す必要が変化

$('.square').on('click', function() { game(this) }); 

へ。だから、次のように変更します。

124: function game(ths){ 
125:  
126: symbDisp(ths); 

をし、その後にsymbDispを変更します。

function symbDisp (ths) { 
    if($(ths).text()==='') { 
    $(ths).text(pTurn); 
     if(pTurn == player){ 
     pTurn =comp; 
     }else{ 
     pTurn=player; 
     } 
    } 
} 

別のエラーがあります:それは最初symbDisp機能に到達したときpTurnは未定義です。だから、にuserIcon変更:

function userIcon() { 
    if($(this).attr("id")=="x"){ 
     player = pTurn ="X"; 
     comp ="O"; 
    } else if($(this).attr("id")=="o"){ 
     player = pTurn ="O"; 
     comp ="X"; 
    } 
    $('#user').fadeOut(1000); 
    } 

プレーヤーがsettedされたとき、私はpTurnをsettedていることがわかります。

これだけです。今はうまくいくはずです。私はここで作業バージョンをフォーク:

http://codepen.io/anon/pen/oxPyej

は、それはあなたが答えが有用であることが判明した場合、あなたが最も有用だったと思うものをupvoteし、受け入れてください

+0

player = pTurn = "X";なぜ私は変数pturn = playerを既に宣言しているのですか?そしてそれは正常に動作していないので、アイコンをトグルし続けるのですが、それはなぜですか? http://codepen.io/anon/pen/oxPyej –