经典格斗游戏《街头霸王》的Javascript实现

  继 《天机》 之后,这次又山寨了个名为《街斗霸主》的经典格式游戏《街头霸王》的模仿版Demo,花了几个月的业余时间写了这么个东西,算是对目前的技术学习的一种练习吧。

其实这种练习的结果不是很重要,主要是体会其中的过程,虽然大部分的时间是在痛苦中渡过,但也是有很多收获的,同时也暴露出很多技术方面的不足,也为以后的学习明确了一些目标。

技术方面因为考虑到大部分IE用户(而且是非IE9),所以没有用HTML5的canvas,用的div的方式处理的,这样挑战也相对大了一些,

不过确实,性能上还是不理想,IE下的表现还是比较糟糕(特别是IE6。。。恩。。。- -!)。
目前兼容IE6/7/8(理论上也兼容IE9,只是没有测试),safari,FF3.5+(因为FF2.0/3.0不支持水平翻转的样式。。- -!),Chrome,Opera。
自己写了一个小型框架,包括了开发流程和js类库,类库用了OOP Like的方式包了个语法糖衣,看上去还算是像个OOP的样子,不过因为为了追求“优雅”,直接扩展了function的prototype,所以不建议在其它地方使用。
框架开发的整体思路就是用PHP作后端代码合并输出,js代码里用$import去建立了各个代码文件之间的关系,然后页面引用合并js的PHP文件,该模式需要在本地建立一个web服务器才能作测试,并且需要设置hosts为 127.0.0.1 aralork

 

 

  游戏说明

 

    游戏是一个Demo版本,实现了核心的整体流程。游戏分为“单人游戏”模式、“双人对战”模式和“练习模式”三种玩法,不过其实实现都是一样,只是改改初始化的参数而已,挺坑爹的。。。

    游戏只需要键盘操作,不需要鼠标,

    菜单的操作是方向键移动,Enter键选择,ESC键取消;

    玩家1的操作:

       上:W,下:S,左:A,右:D,拳:J / K / L,腿:U / I / O

     玩家2的操作:

      上:↑,下:↓,左:←,右:→,拳:小键盘 1 / 2 / 3,腿:小键盘 4 / 5 / 6

    这里的 ↑ ↓ ← → 代表方向键。

 

 

 

  游戏截图

 

   

 

   

 

  其它说明

 

    目前游戏还有很多BUG,所以玩的时候要有心理准备,不要被怪异的情况所震惊。。。    

           游戏里的素材取自于CAPCOM公司的《街霸II》,版权归CAPCOM公司所有。

           大家有什么问题都可以在这里回复,欢迎大家拍砖,谢谢。

 

 

 

    游戏演示地址

 

    完整源代码下载

 

 

 

      更新记录

            [2011.04.11 23:30]

                解决Chrome下一直Loading的问题

                处理了被对手逼近角落时连续攻击无法还手的问题

 

转载于:https://www.cnblogs.com/Random/archive/2011/04/11/2011962.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一款html5版街头霸王游戏源码 大概是1个月前开始学习HTML5, 就写了这样一个东东练手. 不过说来惭愧, 至今也只学会了canvas的drawImage. 每天的业余时间不太固定, 有时候一天能写三小时, 有时候一天能写三分钟. 代码也写的相当潦草. 总的来说有点虎头蛇尾. 本来准备找个时间再重构一下, 突然发现失去了兴致, 欧洲杯又马上开始了. 对我来说, 已经差不多达到练手的目的, 所以还是罢了. 非常简单的记录一些实现思路. 暂且不讨论api. 一是因为api到处可以查阅, 二是因为我确实只认识drawImag. 本人技术也十分有限, 请轻砸. 代码里只有几个js文件, 每个文件的功能如下: Class.js 创建类和对象. Game.js 游戏入口文件. Map.js 绘制地图. Config.js 各种游戏人物动作打架挨打等等配置. Interface.js 各种接口 Main.js 负责游戏逻辑 Ai.js Ai Timer.js 全局定时器 Class.js. 为毛要搞这样一个东西呢. 保护原型, 继承的时候修正constructor什么的, 反正现在不搞个Class.create都有点不太好意思. 这里也借鉴了prototype框架里的一些思路. 相对于prototype里的换汤不换药. 这儿的class.create选择返回一个普通的object对象, 有点像jquery里$的搞法. 这样可以自由的扩展Class的各种方法,而不用再搭理Function的原型. 举个例子, Class.empty()可以秒杀这个类生成的所有对象. 比如现在正在设计一个飞机游戏. 有个大招可以清除屏幕上的所有子弹和敌机. 那么, 哼哼..

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值