JavaScript游戏玛丽医生Dr Mario实现原理

dh20156 2009-10-13 09:26:23
加精
在很久很久以前,我们这些80后的小朋友终于玩上了自己的小霸王游戏机,超级玛丽,玛丽医生,雪人兄弟,诸多经典游戏让人无法忘怀,成为一个心结!

在完成了俄罗斯方块后,这是我写的又一个JavaScript游戏,玛丽医生Dr.Mario





游戏方法:

3颗相同颜色的药丸与同色的病毒在横向纵向上相连时,则可杀死该病毒得分。

方向键:上:药丸形状及颜色切换,左、右、下:左移、右移、下落。

实现流程:

药丸落下 -> 边界检测 -> 不可再动 -> 加入到groups -> 杀病毒检测 -> 消除 -> 重新整理groups -> 无支撑的药丸掉落 -> 回到杀毒检测,直到所有无支撑药丸掉落结束 -> 下一个

Groups概念:

在该游戏的实现中, 出现了一个groups的概念,它是一个数组,它记录了所有堆积的元素,这些元素是活动的,会在消除某些元素后掉落,所以,比较麻烦。

groups记录着每次掉落元素的坐标及样式,形如:[[[0,0,'red_left'],[0,1,'blue_right']],......]

在每次消除病毒后,它需要维护一次,维护的过程是,先将其按照每个元素的第1维进行倒序排列(用于保证越靠下的药丸在后面最先掉落),然后遍历每个元素,进行整理,如:某个与元素的一半被消除了,或者两个元素都被消除了,等等。

几个算法:

在该游戏中需要优化的几个算法:

取横向、纵向N个以上连续相同的内容(实现参见:http://www.jslab.org.cn/?tag=getsamelistfrommartix)

边界检测(与俄罗斯方块的边界检测算法类似,采用位与的方式)

groups维护(遍历数组)

如果能够优化以上算法,则程序运行效率会更高!


其他操作类似于俄罗斯方块,具体情况,可以去看它的源代码!


现在就来玩玩看这个JavaScript实现的Dr.Mario玛丽医生吧 ^_^
...全文
2514 127 打赏 收藏 转发到动态 举报
写回复
用AI写文章
127 条回复
切换为时间正序
请发表友善的回复…
发表回复
free_boy_xzh 2010-05-15
  • 打赏
  • 举报
回复
哦。忘了。我邮箱:xiao_zhang_hua@hotmail.com
感激不尽。
free_boy_xzh 2010-05-15
  • 打赏
  • 举报
回复
能把全部的代码打包发给我么?作为JS初学者,很想拿来学习学习下,查看源文件只有都看不到那些重要的JS文件。
mooneclipse 2010-05-11
  • 打赏
  • 举报
回复
确实厉害。。。
zzwuei1 2010-05-11
  • 打赏
  • 举报
回复
好强大啊,不过源代码在哪啊?想拿来学习下
herayuhang 2010-05-10
  • 打赏
  • 举报
回复
ding
masky5310 2010-04-08
  • 打赏
  • 举报
回复
确实厉害
gsq_0912 2010-03-19
  • 打赏
  • 举报
回复
很好,學習了!
lijinze12 2010-03-17
  • 打赏
  • 举报
回复
顶个  !
topcss 2010-01-25
  • 打赏
  • 举报
回复
楼主厉害,能不能解释些原理。
xiaojing7 2009-10-16
  • 打赏
  • 举报
回复
捧场学习
bmwdoc 2009-10-15
  • 打赏
  • 举报
回复
确实厉害,拿分走人。
lanqiaiyuanyuan 2009-10-15
  • 打赏
  • 举报
回复
学习中……请楼主多多指教!
JUSTACY 2009-10-15
  • 打赏
  • 举报
回复
厉害
hy_lihuan 2009-10-15
  • 打赏
  • 举报
回复
牛人就是不一样啊
xsnzp 2009-10-15
  • 打赏
  • 举报
回复
牛B!佩服。
LutzMark 2009-10-15
  • 打赏
  • 举报
回复
楼主的技术让我再次狂热了!
dh20156 2009-10-15
  • 打赏
  • 举报
回复
加上了抛掷的动作 ^_^
老纪@ToB Dev 2009-10-15
  • 打赏
  • 举报
回复
太强了。顶起来
YHL27 2009-10-15
  • 打赏
  • 举报
回复
强!!
xiaoxiangqing 2009-10-15
  • 打赏
  • 举报
回复
太强了.
加载更多回复(105)

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧