• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
素年已逝
博客园    首页    新随笔    联系   管理    订阅  订阅
【JavaScriptGame】迷宫(其一)

其实最开始是为了学习A*算法,谷歌娘搜到的JavaScript版本看起来很复杂,至少我看了2遍还是一头雾水,就决定用jQuery写一个效率低,但思路比较清晰的版本,测试阶段嫌每次测试都要重画寻路的障碍物麻烦,又干脆先丢在一边另写一个迷宫生成算法,结果从jQuery开始,到原生代码重构,零零总总用了几天休息时间,算是做出一份能够拿出来见得人的版本了,于是发出来望大家点评。

——————————————————分割线——————————————————

所谓迷宫,就是一个挖坑(生成)和填坑(破解)的过程。

如图所示,我们把迷宫的最初形态设定成这样。

其中每一个格子可以想象为一个4面都是墙壁的房间。

而迷宫生成的过程,则可以想象成挖坑er被随机扔到其中一个房间里,在迷茫中随便挑一面墙砸开,在下一个房间里继续重复砸墙,直到走出迷宫。

这说明了什么?害人先害己,有木有?

而要害人的人,肯定会有点小聪明,所以,重复的路他必定不会再走。至于为什么他会知道墙壁对面的房间是自己曾经走过的路,暂时先别考虑这个问题。

如果碰到死路,就回到上个房间重新选一面墙砸开,继续走。

最后,即使他已经找到了终点,但是他在迷宫中转悠大半天,已经人格扭曲,没理由自己找了半天的路被别人捡了便宜,于是他继续把剩下的房间都走一遍,把能砸的墙壁都砸开,企图让下一个进入迷宫的人迷路。

他也许会把某一面对面是已经走过的路的墙砸开,让别人走了半天发现自己又回到了起点,这即是单迷宫和复迷宫的区别。

最后贴张效果图和最初的DEMO,下次说说新的思路,这种方式实在太慢了╮(╯▽╰)╭

DEMO下载

posted on 2011-03-30 15:53  素年已逝  阅读(983)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3