我想爲自己寫一個簡單的地圖生成器,我不知道如何咬人。場將不得不抽籤六角形。如何編寫自己的地圖生成器?
當我生成隨機瓷磚時,我必須留意鄰居。那麼我必須考慮到已經有兩個鄰居等遞歸?我確定該領域可能是水,地球,山脈 - 但在一個領域可能是從一個水域到另一個水域的過渡。
一個數組將包含一個指定瓦片類型的數字。 我想用python做 - 學習。
請多多指教。
我想爲自己寫一個簡單的地圖生成器,我不知道如何咬人。場將不得不抽籤六角形。如何編寫自己的地圖生成器?
當我生成隨機瓷磚時,我必須留意鄰居。那麼我必須考慮到已經有兩個鄰居等遞歸?我確定該領域可能是水,地球,山脈 - 但在一個領域可能是從一個水域到另一個水域的過渡。
一個數組將包含一個指定瓦片類型的數字。 我想用python做 - 學習。
請多多指教。
可能沒有必要使用遞歸。既然你這樣做是一個學習練習,我只會向你提供如何進步的大綱。
六邊形網格將需要一個座標系統,用於行和列。
創建一個函數neighbours
,給定座標x,y的瓦片返回該瓦片的所有鄰居。
使用您的座標系統遍歷所有圖塊。對於每個tile,檢索它的鄰居。如果鄰居沒有類型,則可以忽略它,否則,根據鄰居的字符確定瓦片的字符。
我認爲最重要的事情是要表示的方式,這使得檢查的鄰居容易在地圖上的六邊形......
一個明智的選擇可能是使用二維元組,從而使六邊形(1, 1)的6個鄰居是(1,0),(2,0),(2,2),(1,2),(0,2)和(1,1) - 從北/順時針。
要填充地圖,您可以對所有方塊進行迭代,從允許的方塊集合(基於它的當前鄰居)中隨機選擇一個方塊。
很多很多年前,我實現了一些hexmap例程。我不記得具體的細節,但我使用了一個座標系統,每一行從下一個偏移1。
像這樣:
00 01 02 03 04 05 06 07
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
30 31 32 33 34 35 36 37
,那麼你可以通過應用這些偏移到六角自己的座標找到一個十六進制的鄰居的座標(上面和左邊,順時針十六進制開始):
-1,-1 -1,0 0,1 1,0 1,-1 0,-1
所以十六進制24的鄰居是: 13,14,25,34,33,24
你必須要知道,當然地圖的邊緣。