文章

随机世界生成算法

## 第一种思路

步骤

  1. 添加一个连接点(属于Position类)

  2. 对每个连接点生成一个符合条件的模块房间(Room)或走廊(Hallway))

  3. 在该模块上添加更多的连接点

  4. 重新建立一个目前未连接的出口的列表

  5. 重复步骤2、3、4

    注意:遍历连接点的方式会影响世界的连通效果

    1. 先遍历单个母模块上的连接点
    2. 先使用子模块上的连接点

    可以类比一下DFS与BFS,显然前者能生成的路线更多:

    1. 在房间上添加至少一个连接点(不能在四个角上)
    2. 将所有的新连接点加入一个队列(Queue)中
    3. 最后从队列中提出一个连接点
    4. 重复1~3

第二种思路

步骤:

  1. 生成随机房间

  2. 将除房间以外的部分用迷宫生成算法填充

  3. 连接房间与走廊

  4. 去除一些deadends,减少复杂度

    但是这样做很有局限性,同时对游戏界面的尺寸要求也很高,

    至少我自己在测试的时候(85,35)是行得通的。

最后的参考文献

迷宫生成算法

花了一周多完成了这个玩意吧,最后总结下来感觉学到了很多。起码对Java的理解和大工程的工作过程有了直观感受,同时也学习了很多思路。

内容量太大,以至于学了和没学一样

这应该是2024年我的第一篇学习笔记吧hh

本文由作者按照 CC BY 4.0 进行授权