简单的java游戏:填充移动光标绘制的图形
所以我正在做一个Java入门课程的项目,似乎我选择了一些超出我能力范围的东西:P简单的java游戏:填充移动光标绘制的图形,java,2d-games,flood-fill,point-in-polygon,Java,2d Games,Flood Fill,Point In Polygon,所以我正在做一个Java入门课程的项目,似乎我选择了一些超出我能力范围的东西:P 任何帮助都将不胜感激。这就是我遇到的问题: 您有一个由玩家控制的光标(向前或向后) 旋转90°),在旋转过程中留下一条彩色线。如果你设法去的话 在自己的直线上闭合任意形状的多边形(仅直角 但是,它的表面会将颜色更改为线条的颜色 我可以检测到这种情况何时出现,但我有点迷茫,因为如何实际填充刚刚闭合的正确多边形。我似乎无法想象一个算法能覆盖任何可能的情况 我查看了扫描线填充算法,但我认为当地图中已经填充了一些多边形时,
任何帮助都将不胜感激。这就是我遇到的问题: 您有一个由玩家控制的光标(向前或向后) 旋转90°),在旋转过程中留下一条彩色线。如果你设法去的话 在自己的直线上闭合任意形状的多边形(仅直角 但是,它的表面会将颜色更改为线条的颜色 我可以检测到这种情况何时出现,但我有点迷茫,因为如何实际填充刚刚闭合的正确多边形。我似乎无法想象一个算法能覆盖任何可能的情况 我查看了扫描线填充算法,但我认为当地图中已经填充了一些多边形时,它就会开始出现问题。 如果我有办法在多边形内找到一个点,洪水填充算法将是完美的,但是,由于有许多不同的可能性,我想不出一个通用的规则 我使用的是一个2x2整数数组,其中每种颜色由一个数字表示
有人知道如何解决这个问题吗?如果你能发现这种情况,那么就可以用非常简单的方式解决。问题是选择哪个点作为洪水填充的起点。简单的答案是:尝试所有的方法。当然,只从光标所在位置附近的点开始是有意义的。在这种情况下,您最多需要检查8点。更妙的是,如果当前点形成多边形,则至少有2个点已经被绘制 所以你有8点要检查。从每个点开始进行8次注水 您可能应该记住两件事:
检查此问题,使用Graphics2和多边形填充任意多边形: 确定点是位于多边形内部还是外部:
确保使用双缓冲。如果设置单个像素,而不使用双缓冲,则在设置每个像素后,组件可能会重新绘制。能否发布一些代码?到目前为止,你尝试了什么?