首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制台角色扮演游戏-攻击和健康功能- C++

控制台角色扮演游戏-攻击和健康功能- C++
EN

Stack Overflow用户
提问于 2015-05-04 15:09:54
回答 1查看 1.3K关注 0票数 0

我正在尝试写一个基于主机的RPG游戏,具有健康,防御,攻击力和装甲的角色。这个想法是你选择你想要使用的职业,然后选择你想要攻击的敌人。每个职业都有自己的生命值、防御值和装甲值,但攻击和防御都是基于角色的。

修改生命值的公式应该是((攻防卷)-装甲)。

编辑:我想出了如何处理一个职业的攻击伤害与另一个职业的防御:

基类声明:

代码语言:javascript
复制
        virtual void attack(Character* c1, Character* c2){}

这可能是纯虚拟的,以允许2v1,等等。

我的攻击函数如下:

代码语言:javascript
复制
        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()中的函数调用:

代码语言:javascript
复制
barba->attack(gobs, barba);

我有不同的get/set函数来获得攻击力,生命值和防御。感谢大家的帮助。当我完成时,我很乐意分享完整的代码。恐怕这是非常基础的。

EN

回答 1

Stack Overflow用户

发布于 2015-05-04 15:41:49

我没有看完整个代码,但乍一看,你遇到的问题似乎是,你不是修改类的成员变量,而是修改输入参数:

代码语言:javascript
复制
void modHP(int hp, int ap, int dp, int arp)
{
      hp = ((ap - dp) - arp);
}

这可能应该是:

代码语言:javascript
复制
void modHP( const int ap, const int dp, const int arp)
{
      hitpoints = ((ap - dp) - arp);
}

请注意,我还向参数添加了常量修饰符。

如果你想要一个函数根据它的旧值和攻击等来计算HP的新值,它应该通过返回值来实现:

代码语言:javascript
复制
int modHP(int hp, int ap, int dp, int arp)
{
   return hp - ((ap - dp) - arp);
}

在这种情况下,您应该使此函数成为类的静态成员,因为它不需要类的实例来执行其工作。如果你有更多的问题,请在评论中提出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30024457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档