0

簡単な三目並べゲームを作成しようとしていますが、問題が発生しました。winConditions という 2D 配列を作成し、xMoves および oMoves と比較して誰かが勝ったかどうかを判断しましたが、determinWin 関数を呼び出しても何も起こっていないようです。私は配列とスコープが本当に苦手なので、問題は不適切なスコープの問題にあると思いますが、これは私の頭を少し超えています。誰かがこのコードの問題を特定するのを手伝ってくれませんか? http://jsfiddle.net/Skww6/1/ (これはおそらく私が間違っている機能です)

var determineWin = function (pMoves) {
    var winAlert;
    for (var i = 0; i < winConditions.length; i++) {
        if (winConditions[i].length > pMoves.length) {
            continue;
        }
    for (var j = 0; j < winConditions[i].length; j++) {
        winAlert = false;
        for (var k = 0; k < pMoves.length; k++) {
            if (pMoves[k] === winConditions[i][j]) {
                winAlert = true;
                break;
            }

        }
        if (!winAlert) break;
    }
        if (winAlert) {
            alert(currentPlayer + "wins!");
            break;
        }
    }
};
4

1 に答える 1

2

配列内のアイテムを引用するのを忘れました。

あなたのjsFiddleで、

変化する:

var winConditions = [[c1, c2, c3], [c4, c5, c6], [c7, c8, c9], [c1,c4, c7], [c2, c5, c8], [c3, c6, c9], [c1, c5, c9], [c3, c5, c7]];

に:

var winConditions = [['c1', 'c2', 'c3'], ['c4', 'c5', 'c6'], ['c7', 'c8', 'c9'], ['c1','c4', 'c7'], ['c2', 'c5', 'c8'], ['c3', 'c6', 'c9'], ['c1', 'c5', 'c9'], ['c3', 'c5', 'c7']];

上記のコードは問題なく動作するはずです。

Live Demo

于 2013-06-09T02:19:04.287 に答える