2016-04-13 9 views
1

私は仕事していますチックタックトウ jQueryを使用してゲーム。私はほとんど終わりましたが、ポイントで立ち往生しました。 squareClicked関数の最後にコードを追加して、勝者が存在するかどうかを確認するにはどうすればよいですか?存在する場合は、bgreenクラスを正方形(tds)に割り当てたいと思います。jQueryを使用して関数内の別の関数に属するオブジェクトのプロパティにアクセスするには?

$('table').on('click', squareClicked); 

function squareClicked(e) { 
    var $sqr = $(e.target); 
    var player = $('.current-player').attr('id'); 
    if (!$sqr.attr('class')) { 
     $sqr.addClass(player + '-marker'); 
     switchPlayer(); 
    } 
} 

function getBoard() { 
    var board = []; 
    $('td').each(function() { 
     board.push(this.className[0]); 
    }); 
    return board; 
} 

function checkWin() { 
    var board = getBoard(); 
    // array of possible win sets 
    var winArray = [ 
     [0, 1, 2], [3, 4, 5], [6, 7, 8], 
     [0, 3, 6], [1, 4, 7], [2, 5, 8], 
     [0, 4, 8], [2, 4, 6]]; 
    var winInfo = { 
     win: false 
    }; 
    // loop through the possible win sets 
    for (var i = 0; i < winArray.length; i++) { 
     // get the marks at the three win locations 
     a = board[winArray[i][0]]; 
     b = board[winArray[i][1]]; 
     c = board[winArray[i][2]]; 
     // see if the same marker is at each location 
     if (a && a === b && b === c) { 
      winInfo.win = true; 
      winInfo.play = winArray[i]; 
      winInfo.winner = a; 
      return winInfo; 
     } 
    } 
    return winInfo; 
} 

JS Fiddle

私はsquareClicked関数内checkWin();と呼ばれるが、それはまったく実行されません。

+0

あなたは私たちを示してもらえますか?おそらくJSFiddleが役に立ちます。 – mjohnsonengr

+0

「まったく動かない」とはどういう意味ですか?エラーメッセージが表示されますか? checkWin()はグローバルオブジェクトで定義されていますか? – Damon

+0

ありがとうございます。さて、checkWinの戻り値が何であるかを考えてみましょう:プロパティが勝利、遊び、勝者を持つオブジェクト。私はsquareClickedの終わりに、あなたはそれを呼び出してその値を変数に代入したいと思っています。勝利のプロパティを真実にチェックしてください。 – mjohnsonengr

答えて

1

注意checkWin()はwin、play、winnerの3つのプロパティを持つオブジェクトを返します。結果を変数に代入し、勝利の正当性をチェックして、プレーヤーが勝ったかどうかを判断します。あなたは()checkWinと呼ばれる方法を

function squareClicked(e) { 
    var $sqr = $(e.target); 
    var player = $('.current-player').attr('id'); 
    if (!$sqr.attr('class')) { 
     $sqr.addClass(player + '-marker'); 
     switchPlayer(); 
    } 
    var winInfo = checkWin(); 
    if (winInfo.win) { 
     console.log("You won!"); 
     // do win stuff here 
    } 
} 
1
function squareClicked(e) { 
    var $sqr = $(e.target); 
    var player = $('.current-player').attr('id'); 
    if (!$sqr.attr('class')) { 
     $sqr.addClass(player + '-marker'); 
     switchPlayer(); 
    } 
    var result = checkWin(); 
    if (result.win){ 
     // do something here ... 
    } 
} 
関連する問題