1

私はjqueryminesweeperを作成して0おり、現在、隣接する地雷があるブロックをクリックしたときの表示機能に取り組んでいます。意図した結果は、隣接する8つのブロックすべてをループして、それらのブロックを明らかにすることです。それらが' 0'ブロックでもある場合は、そのブロックに対して繰り返されます。

function reveal(block) {
    block.removeClass('hide');
    var thex = getXY(block)[0];
    var they = getXY(block)[1];
    if (blockNumber(block) == '0') {
        alert('test');
        --they;
        --thex;
        var nearmines = 0;
        for (mody=0;mody<3;mody++){
            for (modx=0;modx<3;modx++){
                var newx = thex + modx;
                var newy = they + mody;
                reveal(bl(newx,newy));
            }
        }
    }
}

現在、この関数は、関数が繰り返されるたびに最初のブロックがチェックされた後に停止しています。呼び出しが壊れているようですfor loops

4

1 に答える 1

1

直接的にも間接的にも、無限の再帰があると確信しています。呼び出しreveal(bl(2,2))reveal(bl(2,2))ループで呼び出します。また、 bl(1,2)もの場合、各近隣を検索するとき0にも呼び出されます。reveal(bl(2,2))

最初の行で「基本ケース」を確認する必要があります。

if(!block.hasClass('hide'))
    return;
于 2011-10-11T06:16:17.227 に答える