gpt4 book ai didi

java - 简单的java游戏: Filling up figures drawn by a moving cursor

转载 作者:行者123 更新时间:2023-11-30 11:34:40 25 4
gpt4 key购买 nike

所以我正在做 Java 入门类(class)的项目,似乎我选择了一些超出我能力范围的东西。 :P
任何帮助将不胜感激。这就是我遇到的问题:

You have a cursor that is controlled by a player (goes forward or turns 90°) which leaves a colored line as it goes. If you manage to go over your own line and close a polygon of any shape (only right angles though), its surface changes color into the color of your line.

我可以检测到这种情况何时出现,但我有点迷茫,因为如何实际填充刚刚关闭的正确多边形。我似乎无法想象一种算法可以涵盖任何可能的情况。

我查看了扫描线填充算法,但我认为本地图中已经填充了一些多边形时,它就会开始出现问题。如果我有办法在多边形内找到一个点,Floodfill 算法将是完美的,但是,由于存在许多不同的可能性,我想不出一个通用规则。

我使用的是一个 2x2 整数数组,其中每种颜色都由一个数字表示。

有没有人知道如何解决这个问题?

最佳答案

如果你能检测到这种情况,那么这可以用非常简单的方式解决。问题是选择哪个点作为填充的起点。简单的答案是:全部尝试。当然,只从与光标所在位置相邻的点开始是有意义的。在这种情况下,您最多可以检查 8 个点。更好的是 - 如果当前点形成一个多边形,至少其中 2 个已经被绘制。

所以你有 8 个点要检查。从每个点开始启动 floodfill 8 次。

您可能应该记住两件事:

  1. 您应该尝试在您的字段的克隆版本中填充该区域,以便在 floodfill 找不到多边形时能够返回。

  2. 第二次启动 floodfill,稍后您应该重新使用您的字段的这个克隆版本,看看它是否在那里被填充。这将允许您最多检查每个点一次,这将使您的 8 个 floodfill 几乎与 1 个 floodfill 一样快。

关于java - 简单的java游戏: Filling up figures drawn by a moving cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com