Java 如何确定栅格单元是否位于单元的封闭周界内
我一直在做一个游戏(在JavaFX中),玩家在游戏板上画一条路径,当他关闭路径时,内部的瓷砖成为他的控制区域 我看到这几乎奏效了。我在所讨论的点的右侧迭代瓷砖,并计算我输入一系列作为周界一部分的瓷砖的次数。如果它是奇数,它就在里面(计数1是一个特例) 问题在于下图中的P1点和P2点。向右计数,两个计数相同,但一个在内部,一个在封闭区域外部。我不知道如何定义这个特殊情况 任何建议或想法都是非常受欢迎的 根据第一条评论进行编辑:此示例显示了如何通过上/下和/或左/右查看两侧的点来进行确定可能不起作用Java 如何确定栅格单元是否位于单元的封闭周界内,java,javafx,tile,discrete-mathematics,game-development,Java,Javafx,Tile,Discrete Mathematics,Game Development,我一直在做一个游戏(在JavaFX中),玩家在游戏板上画一条路径,当他关闭路径时,内部的瓷砖成为他的控制区域 我看到这几乎奏效了。我在所讨论的点的右侧迭代瓷砖,并计算我输入一系列作为周界一部分的瓷砖的次数。如果它是奇数,它就在里面(计数1是一个特例) 问题在于下图中的P1点和P2点。向右计数,两个计数相同,但一个在内部,一个在封闭区域外部。我不知道如何定义这个特殊情况 任何建议或想法都是非常受欢迎的 根据第一条评论进行编辑:此示例显示了如何通过上/下和/或左/右查看两侧的点来进行确定可能不起作
< P> > P>我不考虑坐在边界细胞上的穴位。您必须定义这样一个点是在该区域的内部还是外部
算法:R
P
标记为unvisited
,以确定其是否在区域内或区域外P
位于该区域内C
,并将其标记为已访问的
C
是R
的边界单元格,P
位于区域外C
(顶部、底部、左侧、右侧)中未标记为未访问的或已访问的或是该区域的边界单元格的所有nighbor单元格,并将其标记为未访问的
p
位于区域外。这是通过绿色渲染单元的算法的步骤5.
检测到的
示例2:
在本例中,点p
位于区域内。如果您继续使用剩余的两个未访问的单元格,则通过算法的步骤3.
可以检测到这一点
示例3:
在本例中,点
p
位于区域外。这可通过绿色渲染单元算法的步骤5.
检测到。为什么不垂直检查点,即检查瓷砖是否在上方和下方。使用这种方法,您不必担心上面或下面的瓷砖数量。我编辑了我的问题,添加了一个示例,其中上/下和/或左/右查找也不太有效。谢谢你的建议。这看起来是个不错的方法,谢谢你花时间回复。它很简单,应该更有效,足以满足我的需要。谢谢,开始代码和测试吧!