我正在Pygame中制作一个管道连接游戏,你可以旋转一组给定的管道连接开始到结束,并且无法让游戏真正完成。我需要找到白色像素的任何路径(来自管件精灵)是否将任何红色像素连接到任何蓝色像素(开始和结束片段的颜色)。我怎么能这样做?背景颜色为黑色,如果有帮助的话。
答案 0 :(得分:0)
我会制作类似刮刀的工具:
1从每个红色像素检查连接白/蓝像素,将它们放在列表中
2从列表中的每个白色像素,检查是否可以到达蓝色像素,如果是,返回True
3添加连接到列表中已有的白色像素的任何白色像素(但不添加列表中已有的任何像素)
4如果没有添加新的白色像素且找不到蓝色像素,则返回False。否则,请回到第2步
答案 1 :(得分:0)
根本不使用颜色来解决这个问题。颜色仅在可视化期间使用。其他任何东西都是抽象的。
e.g。每个字段都是一个3 x 3阵列。您可以通过添加维度来处理更多类型。
您可以使用单独的矩阵作为颜色,如下所示(0表示没有连接,1表示连接。
x 1 x x 1 x x 0 x
1 0 0 1 0 x 0 0 0
x 0 x x 1 x x 0 x
你甚至可以使用位场魔术并且每个场使用一个矩阵:
x 1 x
2 0 3
x 4 x
bit 0 (1) = red
bit 1 (2) = green
bit 2 (4) = blue