[英]Color the tiles that lead to the target using .pgm and python
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]
哪里,
我使用以下代碼將像素寫入.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()
上面的代碼將輸出插入下面的圖像:
我需要什么代碼來指示計算機為通向目標的圖塊着色?
要找到A和B之間的路徑,您需要最短路徑算法。 他們大多數使用圖。
首先,您需要將迷宮轉換為圖形。 這是簡單的部分。 節點是迷宮中的1、2和3,並且所有連接在一起的節點之間都有一條邊。 使用坐標來區分節點。 2是(1,1),它連接到1(1,2),然后連接到(1,3),后者又連接到(1,4)和(2,3)...
之后,您可以實施最短路徑算法以查找從A(1,1)到B(11,7)的路徑。 如果您不熟悉這種算法,則很難做到這一點。 最著名的兩個是Bellman-Ford和Dijkstra。 我將搜索它們,因為它們都有最好的情況,並且取決於圖的大小以及路徑是否可以循環。
擁有路徑后,可以用其他顏色為路徑的像素着色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.