[游戏设计]随机迷宫简易实现

本文介绍的是一种简易实现基础随机迷宫的方式。

可以将迷宫简化成15种基本单元,这15种基本单元包含了4方向迷宫的全部可能情况:

  • 拐角 * 4方向
  • 丁字路口 * 4方向
  • 十字路口
  • 终点 * 4方向
  • 直线通路 * 2方向

对于每种基本单元,进而可抽象成3*3的二维矩阵,通路为1,不通为0。比如横向直线通路可抽象为:

    \[ \begin{bmatrix} 0 & 0 & 0\\ 1 & 1 & 1\\ 0 & 0 & 0 \end{bmatrix} \]

因此全部基本单元可抽象为15个矩阵:

 

如何进行随机?

基本的随机流程是对未随机的单元进行随机,并对其四个方向(上下左右)可能存在的下一个单元进行随机。

对于一个未随机的单元:

  • 如果相邻单元已随机
    • 相邻行/列中间值为1(通路),则对应中间值为1(通路)
    • 相邻行/列中间值为0(不通),则对应中间值为0(不通)
  • 如果相邻单元未随机,对应中间值在1(通路)与0(不通)之间随机
  • 如果相邻单元不存在(已到边界),对应中间值为0(不通)

且每个单元随机时(1,1)点必为1(通路)

当一个单元随机完成后,对其四个方向(上下左右)可能存在的下一个单元进行随机:

  • 如果上方行对应中间值为1(通路),则对上方单元进行随机
  • 如果左侧列对应中间值为1(通路),则对左侧单元进行随机
  • 如果下方行对应中间值为1(通路),则对下方单元进行随机
  • 如果右侧列对应中间值为1(通路),则对右侧单元进行随机

最终使用循环递归即可生成全部地图


成果展示:

发表评论

电子邮件地址不会被公开。 必填项已用*标注