【发布时间】:2016-03-30 17:59:24
【问题描述】:
我正在尝试比较一个节点的值。使用洪水填充算法,我能够垂直和水平地检查网格的每个节点。现在我必须更新我的代码以检查位于对角线上的单元格,如下图所示:
红色表示当前节点,黄色表示需要检查的单元格。
这是我目前所拥有的sn-p:
var mapWidth = Math.sqrt(mapData.length);
var currentCell = $('[data-x="'+ x +'"][data-y="'+ y +'"]');
if (x < 0 || y < 0 || x > mapWidth || y > mapWidth) {
return;
}
if(mapData[x*mapWidth+y] !== 0 || currentCell.hasClass('cell-grey')) {
if(mapData[x*mapWidth+y] > 0) {
currentCell.addClass('cell-grey').css('opacity', '1');
}
if(mapData[(x-1)*mapWidth+(y-1)] > 0 && mapData[(x-1)*mapWidth+(y-1)] < mapWidth) {
currentCell.addClass('cell-grey').css('opacity', '1');
return;
}
if(mapData[(x-1)*mapWidth+(y+1)] > 0 && mapData[(x-1)*mapWidth+(y+1)] < mapWidth) {
currentCell.addClass('cell-grey').css('opacity', '1');
return;
}
if(mapData[(x+1)*mapWidth+(y-1)] > 0 && mapData[(x+1)*mapWidth+(y-1)] < mapWidth) {
currentCell.addClass('cell-grey').css('opacity', '1');
return;
}
if(mapData[(x+1)*mapWidth+(y+1)] > 0 && mapData[(x+1)*mapWidth+(y+1)] < mapWidth) {
currentCell.addClass('cell-grey').css('opacity', '1');
return;
}
return true;
}
mapWidth是包含网格所有单元格的变量,currentCell是当前节点单元格。这个 sn-p 真的不适合我。
【问题讨论】:
-
如果您有适用于横向移动的代码,那么没有理由在最小更新后它不适用于对角线移动。我们可以看到其他代码吗?
-
“没有真正工作”没有提供信息。可以多说吗?
-
没有真正工作,我的意思是对角线邻居没有检查
标签: javascript algorithm multidimensional-array cells