我正在尝试写一个基于主机的RPG游戏,具有健康,防御,攻击力和装甲的角色。这个想法是你选择你想要使用的职业,然后选择你想要攻击的敌人。每个职业都有自己的生命值、防御值和装甲值,但攻击和防御都是基于角色的。
修改生命值的公式应该是((攻防卷)-装甲)。
编辑:我想出了如何处理一个职业的攻击伤害与另一个职业的防御:
基类声明:
virtual void attack(Character* c1, Character* c2){}这可能是纯虚拟的,以允许2v1,等等。
我的攻击函数如下:
void attack(Character* c1, Character* c2){
double tdmg, hp, arm, tots;
hp = c1->health(); //set health to current health
tdmg = (c2->getap() - c1->getd()); //set tdmg to attack power - defense
tots = tdmg - c1->getarm(); //set tots to tdmg - armorint main()中的函数调用:
barba->attack(gobs, barba);我有不同的get/set函数来获得攻击力,生命值和防御。感谢大家的帮助。当我完成时,我很乐意分享完整的代码。恐怕这是非常基础的。
发布于 2015-05-04 15:41:49
我没有看完整个代码,但乍一看,你遇到的问题似乎是,你不是修改类的成员变量,而是修改输入参数:
void modHP(int hp, int ap, int dp, int arp)
{
hp = ((ap - dp) - arp);
}这可能应该是:
void modHP( const int ap, const int dp, const int arp)
{
hitpoints = ((ap - dp) - arp);
}请注意,我还向参数添加了常量修饰符。
如果你想要一个函数根据它的旧值和攻击等来计算HP的新值,它应该通过返回值来实现:
int modHP(int hp, int ap, int dp, int arp)
{
return hp - ((ap - dp) - arp);
}在这种情况下,您应该使此函数成为类的静态成员,因为它不需要类的实例来执行其工作。如果你有更多的问题,请在评论中提出。
https://stackoverflow.com/questions/30024457
复制相似问题