RandomMap
在指定的 Width 和 Height 下, 要求有M個不能相連的房間, 並串聯房間生成一副迷宮地圖。git
思路
- 1, 首先生成 M 個房間, 要求是房間位置隨機, 房間之間的距離(Math.Abs(x) + Math.Abs(y))不小於 Density。可指定隨機次數,在次數內檢測位置是否知足,一直未隨機到就按順序找一個空位置。
- 2, 生成 N 個野外鏈接點,方法同上
- 3, 分別找到每一個房間與其最近的一個鏈接點,作隨機鏈接,中間產生的空白點標記爲Path,此處我是用AStar
- 4, 刪除多餘未使用的鏈接點
- 5, 遍歷鏈接點,測試每一個鏈接點是否能相互連通,優先使用鏈接點和已存在路徑測試, 不行則使用鏈接點+已存在路徑+空白點, 路徑中產生的空白的一樣標記爲路徑點
效果圖
圖中紅色爲房間、綠色爲鏈接點、黃色爲路徑點, 藍色表示兩個有顏色的格子只有經過此才能鏈接github
個人代碼 : https://github.com/garsonlab/RandomMapdom