【问题标题】:Color the tiles that lead to the target using .pgm and python使用 .pgm 和 python 为通向目标的图块着色
【发布时间】:2018-11-03 04:04:13
【问题描述】:

import Labyrinthe laby = Labyrinthe.creer(9,13)

此代码将创建以下列表数组:

[0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 2, 1, 1, 1, 1, 1, 1, 0]
[0, 0, 0, 0, 0, 1, 0, 1, 0]
[0, 1, 1, 1, 1, 1, 0, 1, 0]
[0, 1, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 1, 1, 1, 1, 1, 1, 0]
[0, 1, 0, 0, 0, 0, 0, 1, 0]
[0, 1, 0, 1, 0, 1, 1, 1, 0]
[0, 1, 0, 1, 0, 1, 0, 0, 0]
[0, 1, 0, 1, 0, 1, 1, 1, 0]
[0, 1, 0, 1, 0, 0, 0, 1, 0]
[0, 1, 1, 1, 1, 1, 0, 3, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0]

在哪里,

  • '0' - 是一堵墙
  • '1' - 是路径
  • '2' - 起始图块
  • '3' - 目标图块

我使用以下代码将像素写入 .pgm 文件并将它们的颜色设置为 0 到 255 之间的色调,其中 0(100% 白色)是最浅的色调, 255 是最暗的(100% 黑色)。

size = 20  #size of a tile in pixels
rows = len(laby)
columns = len(laby[0])
height = size * rows 
width = size * columns

f = open("laby.pgm", "w")
f.write("P2\n" + str(width) + " " + str(height) + "\n255\n") 

for y in range(height):
    for x in range(width):
        indx = x // size
        indy = y // size
        a = laby[indy][indx]
        if a == 0:
            f.write(str(50) + " ")   # colors the pixels
        elif a == 2:
            f.write(str(100) + " ")
        elif a == 3:
            f.write(str(170) + " ")
        else:
            f.write(str(a) + " ")
f.close()

上面的代码将输出如下插入的图像:

我需要什么代码来指示计算机为通向目标的图块着色?

【问题讨论】:

    标签: python python-3.x list pgm


    【解决方案1】:

    要找到 A 和 B 之间的路径,您需要一个最短路径算法。他们中的大多数使用图表。

    首先,您需要将迷宫转换为图表。这是简单的部分。节点是迷宫中的 1、2 和 3,所有连接在一起的节点之间都有一条边。使用坐标来区分节点。 2 是 (1,1),它连接到 1 (1,2),连接到 (1,3),连接到 (1,4) 和 (2,3)...

    之后,您可以实现最短路径算法来找到从 A (1,1) 到 B (11,7) 的路径。如果您不熟悉这种算法,则很难做到这一点。最著名的两个是贝尔曼福特和戴克斯特拉。我会让你搜索它们,因为它们都有最好的情况,这取决于图形的大小以及路径是否可以循环。

    当你有了路径时,你可以用另一种颜色为路径的像素上色。

    【讨论】:

    • 我可以在没有图表的帮助下完成吗?如何列出连接起点和终点的“1”的坐标?
    • @MisterTusk 在这样的地图中连接起点和终点的唯一方法是测试所有可能性。地图越大,需要的时间越长。这就是创建最短路径算法的原因。图表是表示路径之间联系的最简单和最好的方式。
    猜你喜欢
    • 2022-06-10
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多