参考资料 http://www.roguebasin.com/index.php?title=Dungeon-Building_Algorithm http://www.roguebasin.com/index.php?title=Grid_Based_Dungeon_Generator
www.roguebasin.com 有很多相关的roguelike资料 相当有价值
首先随机生成一套地图世界有几个概念。 数据结构 1.world 2.map 3.room 4.corridor
地图的类型也有很多种 1.maze 2.dungeon 3.island 4.cave 5.castle
生成房间的算法也分为很多类别 我先实现了 最简单的一个地图类型 类似于dungeon的地图类型
生成的数据大概是这样
算法逻辑 1.在world创建room 2.判断room是否碰撞 碰撞重新生成 3.房间生成门 4.查找最近的房间 使用astar 生成房间直接连通的街道。
一些c#代码
public void generatePCGBasic(byte[,] g) { base.generatePCG(g); // Init grid this.initRooms(); // Initialize rooms //this.initCorridors(); // Initialize corridors }
public void initRooms()
{
this.rooms = new ArrayList();
//room_num = 1;
// New room arraylist
//Log.info("room_num",this.room_num);
for (int n = 0; n < this.room_num; n++)
{