对格斗游戏的一点想法

终于决定在这里再开一个blog主页了。这里给我的感觉真的很好,简洁,实用,不花哨,特别适合程序员(虽然我还不是)。好了,在这里我可以尽情的谈我所爱的编程技术了。不过我只是菜鸟一个,那些真正的高手们不要笑话我的浅薄,如果可能,你们的建议将会给我带来莫大的帮助。好了,废话少说,赶紧开说!

最近一直在玩真·三国无双advance,是GBA平台上的,虽然画面比PS2有很大很大的差距,但是那种连击的爽快感一样能够体会到。对,连击,这个就是这篇文章的主角。我认为连击之所以能够形成,是因为敌人在受到攻击后会有一段时间的硬直,在这段硬直时间里,敌人不能进行任何动作。所以当我们发动后续的进攻时,敌人会继续中招,继续受到伤害。所以怎么实现硬直效果是我今天想研究的东西。

我一直在用allegro库开发程序,所以我也想用这个库来说明问题。

class character
{
       public:
              character();
              ~character();
              ......

              void update();
              void draw(BITMAP*);
              void attack(const character&);
             void baAttacked(const attack_type&);  //attack_type是一个类,用来表示攻击类型
             ......
       private:
               int _x,_y;   //角色的坐标
               BITMAP *frames[N]; //游戏角色的图片
               int stopFrames    //这个就是硬直时间对应的变量
               ......

};

这个就是我想出来的类框架,其中update()接口用来控制角色的坐标,图片帧和硬直等,draw()接口用来向一个位图对象绘制游戏角色,attck()就是攻击其他人的接口,beAttack()就是受到攻击的接口。

最关键的是stopFrames成员,这个用来控制硬直的时间,当角色受到攻击的时候,根据攻击类型的不同,产生不同的硬直时间,即改变这个成员的值。然后在update()中,当程序检查到stopFrames不为0的时候,就将这个值减少一定的量,并且此时不进行任何其他的动作(除了角色显示相关的以外)。这样就实现了硬直的效果。

当然这个只是一个简单的设想,并没有填充一些细节的东西,不过也算是一个创意的暂时保存吧!希望有高手能够指出不足或者告诉我更好的实现方法。等到我的知识准备足够之后,我一定要尝试将这个想法实现!

今天已经考完了期中考试,五一长假也正式开始了,兴奋中……魔兽世界已经开始公测了,不试试可不对不住我这个深爱正统奇幻和游戏的家伙了。

昨天在电脑报上看到消息说真·三国无双要移植到电脑上,感觉挺复杂的,我一向以为用电脑玩游戏是畸形的行为。这么好的游戏往电脑上搬,算不算自降身价?

管他算不算,我先魔兽世界去了~~~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值