C++实现猫狗游戏,定义cat和dog两个类,包括私有属性和公有方法,实现类的构造函数,攻击,补血,判断生死等方法
时间: 2024-10-15 19:10:29 浏览: 47
详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现
在C++中,我们可以创建一个简单的猫Dog游戏框架,通过定义Cat和Dog这两个类来模拟动物的行为。下面是一个基础的示例:
```cpp
// 定义一个Animal基类
class Animal {
public:
// 构造函数初始化基本属性
Animal(string name) : name_(name), health_(100) {}
protected:
string name_; // 私有属性:名字
int health_; // 私有属性:生命值
public:
// 公有方法:获取名称
virtual string getName() const { return name_; }
// 公有方法:攻击(默认伤害1)
virtual void attack() { health_ -= 1; }
// 公有方法:补血(恢复一定生命值,默认1点)
virtual void heal(int amount = 1) { health_ += amount; }
// 公有方法:判断生死
bool isDead() const { return health_ <= 0; }
};
// 猫类继承自Animal,并重写攻击方法(增加爪击伤害)
class Cat : public Animal {
public:
Cat(string name) : Animal(name) {}
// 重写attack方法,增加爪伤效果
void attack() override { health_ -= 5; }
};
// 狗类也继承自Animal,并重写攻击方法(增加咬伤伤害)
class Dog : public Animal {
public:
Dog(string name) : Animal(name) {}
// 重写attack方法,增加咬伤效果
void attack() override { health_ -= 3; }
};
int main() {
Cat cat("Mittens");
Dog dog("Rex");
cout << "Cat's name: " << cat.getName() << endl;
cout << "Dog's name: " << dog.getName() << endl;
// 模拟战斗过程
cat.attack();
dog.attack();
if (cat.isDead()) {
cout << cat.getName() << " is dead." << endl;
} else {
cout << cat.getName() << " has " << cat.health_ << " health left." << endl;
}
if (dog.isDead()) {
cout << dog.getName() << " is dead." << endl;
} else {
cout << dog.getName() << " has " << dog.health_ << " health left." << endl;
}
return 0;
}
```
在这个例子中,我们定义了一个`Animal`基类和它的两个派生类`Cat`和`Dog`。每个类都有构造函数、公共属性(如生命值)和方法。`Cat`和`Dog`都重写了`attack`方法,体现了多态性。在`main`函数中,我们实例化了猫和狗并模拟它们相互攻击的过程。
阅读全文