0
私はjavascript/jqueryを使用して地雷探知機のゲームをプログラミングしています。私は空のセルを明らかにすることはできません。私のアルゴリズムは、クリックされた空のセルの8つの隣接を明らかにすることでした。私がdivをクリックすると、コンソールで8回クリックされ、adjElementsの値が失われます。どのように動作させるための助け?地雷探偵ゲームで空のセルを明らかにするには?
ここまで私が何をしたのですか?
//my divs are generated with a function from id '#s-1' to '#s-81'
var adj=[-10,-9,-8,-1,1,8,9,10];
$('.grid').find('div').click(function(event) {
var div=this.id;
var numDiv=div.replace(/[^\d.]/g, '');
revealSquare(numDiv);
});
var revealSquare=function(square) {
if(!($(square).hasClass('isMine'))) {
if($(square).find('span').text()=='') {
revealEmptyCells(square);
}
}
};
var revealEmptyCells=function(clickDiv) {
$.each(adj, function(index, val) {
if(val+clickDiv>0 && val+clickDiv<=81) {
var adjElements=val+clickDiv;
console.log('adj: '+adjElements); //it reveals odd numbers like for div #s-1 it reveals 19
$('#s-'+adjElements).css({
border: '4px solid #d4d4d3',
});
}
});
}
クリックDIVが空であると仮定すると、私はヴァルを除去+ clickDiv> 0とval + clickDiv < = 81。 div s-1をクリックすると、adj要素は-101、-91、-81、-11,11,81,91,101になります。なぜこれらの値を取得するのですか?
これは機能しました。ありがとうございました!なぜそれが働いたのか説明できますか?何が間違っていたのですか?私はjavascriptで新しいです。 – Ndx
私は私の答えでそれを説明したと思いますか?あなたのコードは1と9を19としてレンダリングしていましたが、10にレンダリングする必要がありました。オペランドは数字でなければ動作しません。 – trincot
はい、ありがとうございます!今分かります。 – Ndx