1. 程式人生 > >隨機地圖生成

隨機地圖生成

RandomMap

在指定的 Width 和 Height 下, 要求有M個不能相連的房間, 並串聯房間生成一副迷宮地圖。

思路

  • 1, 首先生成 M 個房間, 要求是房間位置隨機, 房間之間的距離(Math.Abs(x) + Math.Abs(y))不小於 Density。可指定隨機次數,在次數內檢測位置是否滿足,一直未隨機到就按順序找一個空位置。
  • 2, 生成 N 個野外連線點,方法同上
  • 3, 分別找到每個房間與其最近的一個連線點,做隨機連線,中間產生的空白點標記為Path,此處我是用AStar
  • 4, 刪除多餘未使用的連線點
  • 5, 遍歷連線點,測試每個連線點是否能相互連通,優先使用連線點和已存在路徑測試, 不行則使用連線點+已存在路徑+空白點, 路徑中產生的空白的同樣標記為路徑點

效果圖

圖中紅色為房間、綠色為連線點、黃色為路徑點, 藍色表示兩個有顏色的格子只有通過此才能連線

我的程式碼 : https://github.com/garsonlab/RandomMap