使用C++简单写一个基于面向对象思想,分二级建立王者荣耀游戏中的英雄类(抽象的英雄、特定类型的英雄)。在类中对英雄的属性(比如英雄的种类、魔法值、生命值、物理攻击值)及行为(比如魔法攻击、物理攻击)进行具体描述。随机建立两个英雄,设计PK规则,实现两个英雄的PK,直至分开胜负,并且在PK过程中输出两个英雄的状态变化的代码。
时间: 2024-03-21 07:44:24 浏览: 68
好的,我会根据您的要求回答问题。
以下是一个基于面向对象思想的英雄类的C++代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Hero {
public:
Hero(string n, int m, int h, int p) : name(n), mana(m), health(h), physical_attack(p) {}
virtual void magic_attack(Hero& enemy) {};
virtual void physical_attack(Hero& enemy) {};
void print_status() {
cout << name << " [魔法值:" << mana << " 生命值:" << health << "]" << endl;
}
protected:
string name;
int mana;
int health;
int physical_attack;
};
class AbstractHero : public Hero {
public:
AbstractHero(string n, int m, int h, int p) : Hero(n, m, h, p) {}
virtual void magic_attack(Hero& enemy) {
int damage = rand() % mana;
enemy.health -= damage;
mana -= damage;
cout << name << " 对 " << enemy.name << " 造成了 " << damage << " 点魔法伤害" << endl;
}
};
class SpecificHero : public Hero {
public:
SpecificHero(string n, int m, int h, int p, string t) : Hero(n, m, h, p), type(t) {}
virtual void physical_attack(Hero& enemy) {
int damage = rand() % physical_attack;
enemy.health -= damage;
cout << name << " 对 " << enemy.name << " 造成了 " << damage << " 点物理伤害" << endl;
}
protected:
string type;
};
int main() {
srand(time(nullptr));
AbstractHero abs_hero("虚无之灵", 100, 200, 10);
SpecificHero spe_hero("貂蝉", 50, 300, 15, "法师");
int round = 1;
while (abs_hero.health > 0 && spe_hero.health > 0) {
cout << "第 " << round << " 回合" << endl;
abs_hero.magic_attack(spe_hero);
spe_hero.physical_attack(abs_hero);
abs_hero.print_status();
spe_hero.print_status();
cout << endl;
round++;
}
if (abs_hero.health > 0) {
cout << abs_hero.name << " 获胜!" << endl;
} else {
cout << spe_hero.name << " 获胜!" << endl;
}
return 0;
}
```
这个英雄类中包含一个基类`Hero`和两个派生类`AbstractHero`和`SpecificHero`。
`Hero`类中包含英雄的属性和行为,以及一个打印状态的函数。
`AbstractHero`类是一个抽象的英雄,只能使用魔法攻击,攻击伤害随机,并消耗相应的魔法值。
`SpecificHero`类是一个特定类型的英雄,可以使用物理攻击和魔法攻击,攻击伤害随机。
在主函数中,我们随机创建了一个抽象英雄和一个特定英雄,并按照一定规则进行PK,直到分开胜负。在每个回合中,英雄们会进行攻击并打印状态。最后输出获胜方的名字。
希望这个代码能够帮助到您!如果您有任何问题,请随时问我。
阅读全文