游戏地址: http://www.alloyteam.com/2012/05/html5-streetfighter-demo/主机:移动: W: 上, D: 前, A: 后, S:下攻击: J: 轻拳, K: 重拳, U: 轻腿, I: 重腿特殊技能: 下→前→拳: 波动拳, 下→后→腿:旋风腿, 前→下→前→拳:升龙拳副机(小键盘):移动: ↑: 上, ←: 前, →: 后, ↓:下攻击: 1: 轻拳, 2: 重拳, 4: 轻腿, 5: 重腿特殊技能: 下→前→拳: 波动拳, 下→后→腿:旋风腿, 前→下→前→拳:升龙拳按F2暂停游戏, 1键大战电脑ai, 2键双人对打.

解决方案 »

  1.   

    其实我觉得还是下面作者的开发心得值得去研究学习..以下是引用 ---------写游戏和写普通的应用有点不一样的地方是, 游戏需要更好的抽象出每个场景之间的共同点, 或者找出他们的不同点. 要尽量尽量少写if else. 除非是逼不得已. 当你写了一个if, 就意味着可能要写N个else if. 当逻辑越来越多的时候, 维护这些if会异常痛苦.街头霸王里面的动作有很多种, 比如跳跃的时候不能移动, 攻击的时候既不能跳跃也不能移动, 跌倒的时候既不能跳跃也不能攻击也不能移动. 死亡之后啥也干不了. 那么怎么处理这些逻辑呢. 想想如果是写这样的代码.
    If ( isJump ){If ( move ) return false;}else if( isAttack ){If ( move || jump ) return false;}else if ( fall_down ){If ( move || jump || attack ) return false;}…游戏里的具体逻辑比这复杂的多, 我也想不到得写多少个if else, if else. 闭上眼睛就是if else.现在我是这样实现的. 给每种动作在配置文件里加一个锁. 精灵在动的时候, 总是被它锁住的. 移动的锁是0级, 跳跃是1级, 攻击是2级. 摔倒是3级. 当要执行一个新的动作的时候, 比如攻击的时候突然被踢倒. 会先比较2个动作的锁的级别. 如果后面动作的级别大于之前动作的级别. 就会打破之前的锁, 执行新的动作. 反之会无视新的动作. 比如攻击的时候移动和跳跃都是没用的.