我在创建路径生成算法方面寻求帮助 here , Taekahn 非常亲切地帮助了我。除了IsNotMarked
函数这一节外,我理解他的所有代码。
function IsNotMarked(row, column) {
//if row is out of bounds, it is not marked
if (row < 0 || row >= matrix.length) return true;
//if column is out of bounds, it is not marked
if (column < 0 || column >= matrix[row].length) return true;
//if ahead node (east of East Node) is not part of path... it's not marked
return matrix[row][column].data('partOfPath') != true;
}
即:return matrix[row][column].data('partOfPath') != true;
上面的函数IsNotMarked()
,CreateNewFrontier()
,应该先检查每个方向(北,东,南,西)的相邻节点如果他们在边界内......
然后 AddToFrontier()
应该检查与 those 节点相邻的节点(东节点以东的节点)以检查它们是否未标记(路径的一部分) ,因为要保持单一路径,一个节点只能有一个邻居。
问题:
1) 我尝试替换
return matrix[row][column].data('partOfPath') != true;
与
if (matrix[row][column].data('partOfPath') == false) return true;
我认为这意味着同样的事情,但它只标记根节点并且不起作用。这两个有什么不同?如果该节点不是路径的一部分,则返回 IsNotMarked
为真,这不是真的吗?
2) 我还尝试通过简单地检查节点是否是直接在 AddToFrontier()
中的路径的一部分来完全删除 IsNotMarked()
来简化它,但现在什么都没有完全绘制:
if (row - 1 >= 0 && matrix[row-1][column].data('partOfPath') == true) { //check if it IS marked...
markedNeighbors++;
}
任何帮助都会很棒!
最佳答案
当 matrix[row][column].data('partOfPath')
既不是 true 也不是 false(例如 null
或 undefined
).
在这种情况下,以下语句返回 true
:
return matrix[row][column].data('partOfPath') != true;
但以下返回 false(请注意您还需要 else 语句):
if (matrix[row][column].data('partOfPath') == false)
return true;
else
return false;
关于javascript - 路径生成算法混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27809844/