终于决定在这里再开一个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的时候,就将这个值减少一定的量,并且此时不进行任何其他的动作(除了角色显示相关的以外)。这样就实现了硬直的效果。
当然这个只是一个简单的设想,并没有填充一些细节的东西,不过也算是一个创意的暂时保存吧!希望有高手能够指出不足或者告诉我更好的实现方法。等到我的知识准备足够之后,我一定要尝试将这个想法实现!
今天已经考完了期中考试,五一长假也正式开始了,兴奋中……魔兽世界已经开始公测了,不试试可不对不住我这个深爱正统奇幻和游戏的家伙了。
昨天在电脑报上看到消息说真·三国无双要移植到电脑上,感觉挺复杂的,我一向以为用电脑玩游戏是畸形的行为。这么好的游戏往电脑上搬,算不算自降身价?
管他算不算,我先魔兽世界去了~~~