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是空的,并且我除去VAL + 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