如何在Python / Pygame中找到连接两种不同颜色像素的白色路径?

时间:2018-01-27 15:16:14

标签: python pygame sprite

我正在Pygame中制作一个管道连接游戏,你可以旋转一组给定的管道连接开始到结束,并且无法让游戏真正完成。我需要找到白色像素的任何路径(来自管件精灵)是否将任何红色像素连接到任何蓝色像素(开始和结束片段的颜色)。我怎么能这样做?背景颜色为黑色,如果有帮助的话。

2 个答案:

答案 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
  • 0 =无连接
  • 1 =红色
  • 2 =绿色
  • 3 =红色,绿色
  • 4 =蓝色
  • 5 =蓝色,红色
  • 6 =绿色,蓝色
  • 7 =红色,绿色,蓝色