我正在尝试编写一个基于控制台的RPG游戏,其中包含具有健康,防御,攻击力和护甲的角色。你的想法是选择你想要玩的类,然后选择你想要攻击的敌人。每个级别都有自己的健康,防御和护甲值,但攻击和防御都基于掷骰。
修改生命值的公式应为((攻击掷骰 - 防御掷骰) - 护甲)。
编辑:我想出了如何处理使用一个类的攻击伤害与另一个类中的防御:
基类声明:
virtual void attack(Character* c1, Character* c2){}
这可能是纯虚拟的,允许2 v 1等。
我的攻击功能如下:
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 - armor
int main()中的函数调用:
barba->attack(gobs, barba);
我还有各种攻击力,健康和防御的获取/设置功能。感谢大家的帮助。当我完成时,我很乐意分享完整的代码。它非常基本我害怕。
答案 0 :(得分:1)
我没有完成整个代码,但乍一看,您遇到的问题似乎是修改输入参数而不是修改类的成员变量:
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);
}
请注意,我还在参数中添加了const修饰符。
如果你想要一个基于旧值和攻击等计算HP新值的函数,它应该通过返回值来实现:
int modHP(int hp, int ap, int dp, int arp)
{
return hp - ((ap - dp) - arp);
}
在这种情况下,您应该使此函数成为类的静态成员,因为它不需要类的实例来完成其工作。如果您有其他问题,请随时在评论中询问。