随机Prim法创建随机迷宫(C#实现)

因为这两天想参加一个比赛,所以就在上网找素材,刚好看到了迷宫生成,就决定拿这个开刀了。

参考的原文地址为(来源页面

源地址中是使用AS实现的,没学过AS,所以直接不会运行,于是就自己根据原文的概念进行了模(chao)仿(xi)。

 

废话说完了,现在来说一下随机Prim法的原理:

1.建立两个数组,一个是用于存储地图的二维数组α,另一个是用于存储待处理的墙的数组β。

2.将α的所有方格全部初始化为墙。

3.选定起点,并将该位置的墙变为路,将其四周的四块置入β数组中(出界的直接筛掉,就不说了)。

4.当β数组不为空时,循环以下步骤

1)从β数组中随机选择一块,暂且叫他A。

2)遍历该方块四周,并选定其中的某一块为路的方块,暂且叫他B。

3)判断相对于A,在B的对侧的方块C是否为墙(假如B在A左侧,就判定A右边的方块;B在A上方,就判定A下方的方块;以此类推……),若为墙,则:

①将A、C均置为路。

②将C周围是墙的所有方块,均置入待β数组中。

4)将A从β数组中去掉。

 

执行完之后迷宫就生成好啦~

 

目前我还是只完成了任务目标的10%不到,现在这个版本还是只能生成迷宫而已,而且代码也没有足够的优化。后续慢慢更新(在不影响比赛的前提下),直到整个工程结束。

 

源码地址:

http://pan.baidu.com/share/link?shareid=4019441680&uk=756504557

转载于:https://www.cnblogs.com/myKennel/p/4018113.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值