以下是一个使用C++编写的打怪游戏的简单示例,把各种作业设置成怪物。在游戏中,玩家需要完成作业,打败怪物。
#include <iostream>
#include <vector>
#include <string>
class Monster {
private:
std::string name;
int health;
int damage;
public:
Monster(const std::string& _name, int _health, int _damage)
: name(_name), health(_health), damage(_damage) {
}
bool isDead() const {
return health <= 0;
}
void takeDamage(int damage) {
health -= damage;
}
int getDamage() const {
return damage;
}
void displayInfo() const {
std::cout << "Monster: " << name << std::endl;
std::cout << "Health: " << health << std::endl;
}
};
class Player {
private:
std::string name;
int health;
int damage;
public:
Player(const std::string& _name, int _health, int _damage)
: name(_name), health(_health), damage(_damage) {
}
bool isDead() const {
return health <= 0;
}
void takeDamage(int damage) {
health -= damage;
}
int getDamage() const {
return damage;
}
void displayInfo() const {
std::cout << "Player: " << name << std::endl;
std::cout << "Health: " << health << std::endl;
}
};
class Game {
private:
Player player;
std::vector<Monster> monsters;
int currentMonsterIndex;
public:
Game(const Player& _player, const std::vector<Monster>& _monsters)
: player(_player), monsters(_monsters), currentMonsterIndex(0) {
}
void attackMonster() {
Monster& currentMonster = monsters[currentMonsterIndex];
int playerDamage = player.getDamage();
currentMonster.takeDamage(playerDamage);
std::cout << "You attacked " << currentMonster.name << " and dealt " << playerDamage << " damage." << std::endl;
if (currentMonster.isDead()) {
std::cout << currentMonster.name << " has been defeated!" << std::endl;
currentMonsterIndex++;
}
}
void attackPlayer() {
Monster& currentMonster = monsters[currentMonsterIndex];
int monsterDamage = currentMonster.getDamage();
player.takeDamage(monsterDamage);
std::cout << currentMonster.name << " attacked you and dealt " << monsterDamage << " damage." << std::endl;
}
bool isGameOver() const {
return player.isDead() || currentMonsterIndex >= monsters.size();
}
void play() {
std::cout << "======= Welcome to the Homework Monster Game! =======\n" << std::endl;
while (!isGameOver()) {
player.displayInfo();
monsters[currentMonsterIndex].displayInfo();
std::cout << "Choose an action:" << std::endl;
std::cout << "1. Attack the monster" << std::endl;
std::cout << "2. Skip a turn" << std::endl;
std::cout << "Enter your choice: ";
int choice;
std::cin >> choice;
std::cout << std::endl;
switch (choice) {
case 1:
attackMonster();
if (!monsters[currentMonsterIndex].isDead()) {
attackPlayer();
}
break;
case 2:
attackPlayer();
break;
default:
std::cout << "Invalid choice. Try again." << std::endl;
break;
}
std::cout << std::endl;
}
if (player.isDead()) {
std::cout << "Game Over! You have been defeated by the Homework Monster." << std::endl;
} else {
std::cout << "Congratulations! You have defeated all the Homework Monsters!" << std::endl;
}
}
};
int main() {
Player player("Player 1", 100, 20);
std::vector<Monster> monsters;
monsters.push_back(Monster("Math Monster", 50, 10));
monsters.push_back(Monster("Science Monster", 60, 15));
monsters.push_back(Monster("English Monster", 40, 12));
monsters.push_back(Monster("History Monster", 55, 14));
Game game(player, monsters);
game.play();
return 0;
}
在这个示例中,玩家需要与各种作业怪物战斗。玩家和怪物都有血量和攻击力属性。游戏将循环进行,直到玩家死亡或击败所有怪物。
在游戏中,玩家可以选择攻击怪物或者跳过回合。当玩家选择攻击怪物时,玩家会对当前怪物造成伤害,并减少怪物的血量。如果怪物被打败,游戏将继续下一个怪物。如果怪物没有被打败,怪物将反击玩家,减少玩家的血量。
游戏将循环进行,直到玩家死亡或者击败所有的作业怪物。最终,游戏会显示相关的胜利或失败信息。
这个简单的打怪游戏示例展示了使用C++编程创建互动游戏的基本概念。玩家通过与怪物进行战斗来完成游戏目标,同时需要关注自己的血量和伤害输出,以便取得胜利。