JavaScript游戏玛丽医生Dr Mario实现原理
在很久很久以前,我们这些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玛丽医生吧 ^_^
[解决办法]
JF
[解决办法]
再接再厉 多奉献好东西...
[解决办法]
顶。。。
[解决办法]
先顶再看
[解决办法]
很不错,学习
还原得很好,不过就是如果右边医生丢药丸的动作能加进去就完美了
[解决办法]
不会玩~~~,怎么感觉和俄罗斯方块差不多?
顶~~
[解决办法]
没玩过,
[解决办法]
很强大。。。
js无极限。。。
[解决办法]
很厉害啊,学习了
[解决办法]
dddddddddd
[解决办法]
zxczs
[解决办法]
uP
[解决办法]
LZ好强大
[解决办法]
看不懂!~
T_T.......
[解决办法]
介于牛1和牛3之间 佩服啊
[解决办法]
好,支持
[解决办法]
好强啊!顶楼主一个!·
[解决办法]
支持,怎么进去了,没看到哪里能玩啊。。。
[解决办法]
~jF
[解决办法]
我顶,接分
[解决办法]
顶下,接分!!
[解决办法]
真是越来越喜欢这游戏了,下载谢谢!
[解决办法]
我也下载试试
[解决办法]
非常不错,很专业。
------解决方案--------------------
33
[解决办法]
很牛啊
[解决办法]
确实 不错 学习了
[解决办法]
小时候一直希望自己以后是制作游戏卡的人。如今……
[解决办法]
我顶,接分
[解决办法]
很强大
[解决办法]
想玩
[解决办法]
这么牛?!!!!!!!
[解决办法]
很好很强大!!
学习......
[解决办法]
呵呵 老是积分不够顶顶,先
[解决办法]
很好很强大
[解决办法]
up
[解决办法]
攒个
[解决办法]
向lz。
[解决办法]
顶起
[解决办法]
很牛
[解决办法]
来看看谢谢了分享
[解决办法]
真的很厉害,而且怀恋
[解决办法]
jf
[解决办法]
厉害
[解决办法]
牛大发了
[解决办法]
真强,先去玩玩看
[解决办法]
的确很怀念啊~
[解决办法]
JF
玩玩 看
[解决办法]
强淫啊~~~
[解决办法]
的确很强!
[解决办法]
的确很强!
[解决办法]
不错
[解决办法]
感谢啊~~~支持原创~~~
LZ好厉害
[解决办法]
怀念小时候
[解决办法]
LZ很厉害
[解决办法]
程序玩到最后出现了bug
[解决办法]
。
[解决办法]
帮顶~
[解决办法]
看一下呀!
[解决办法]
楼主我想问你一个问题,希望你能回答一下
这两个游戏的开发给你带来商业价值了吗,我个人感觉这种开发是纯爱好的。
还有就是你的游戏性能很好,我跟踪了一下内存。
[解决办法]
[解决办法]
牛
[解决办法]
挺牛的 小弟也学JS滴
[解决办法]
good狂顶啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··
[解决办法]
好牛啊,学习喽。。。
[解决办法]
顶
[解决办法]
楼主真厉害,可以告诉我一些学习js的技巧吗?我虽然学了一些但是还觉得没有合适的学习方法
[解决办法]
高手!
[解决办法]
很好,很强大
[解决办法]
顶~
接分~
[解决办法]
jf.~
[解决办法]
好东西..顶起.顺便JF..
[解决办法]
恩,以前试过 星际 。。
[解决办法]
小的时候 经常玩这个游戏 。还有 俄罗斯方块 。超级经典啊 !!!!! 接分
[解决办法]
mark
[解决办法]
卧槽,LZ太牛了!
[解决办法]
牛的B 都被LZ 强完了....
[解决办法]
很好啊
想学学
[解决办法]
很厉害,好想学 啊
[解决办法]
支持支持,正好愁SE写俄罗斯方块没有思路呢
[解决办法]
牛XXXXXXXX
[解决办法]
佩服佩服
[解决办法]
牛人一个啊!!狂顶!!
[解决办法]
太厉害了~~~~~~~~
[解决办法]
弓虽。
[解决办法]
N年前玩过 ,怀念啊
[解决办法]
好,要顶
[解决办法]
确实厉害