-
个人简介
#include #include #include #include <windows.h> // 仅用于睡眠效果,跨平台可删除
using namespace std;
// 角色结构体(玩家 / BOSS 共用) struct Fighter { string name; // 名字 int hp; // 生命值 int attack; // 基础攻击 int defend; // 防御 };
// 函数声明 void showStatus(Fighter player, Fighter boss); // 显示状态 void playerAttack(Fighter &player, Fighter &boss); // 玩家攻击 void bossAttack(Fighter &boss, Fighter &player); // BOSS攻击 bool isGameOver(Fighter player, Fighter boss); // 判断游戏结束
int main() { // 设置随机数种子 srand((unsigned)time(NULL));
// 初始化角色 Fighter player = {"勇士", 150, 25, 8}; // 玩家 Fighter boss = {"擂台霸主", 200, 30, 5}; // BOSS cout << "===== 欢迎来到 C++ 擂台游戏 =====" << endl; cout << "玩家:" << player.name << " VS 对手:" << boss.name << endl; cout << "战斗开始!\n" << endl; Sleep(1000); // 战斗循环 while (true) { showStatus(player, boss); // 玩家回合 cout << "\n【你的回合】" << endl; cout << "1. 普通攻击 2. 强力技能 3. 回血" << endl; cout << "请选择操作:"; int choice; cin >> choice; playerAttack(player, boss); // 判断是否胜利 if (isGameOver(player, boss)) { cout << "\n🎉 恭喜你击败了擂台霸主!你胜利了!" << endl; break; } Sleep(800); // BOSS 回合 cout << "\n【" << boss.name << " 的回合】" << endl; bossAttack(boss, player); // 判断是否失败 if (isGameOver(player, boss)) { cout << "\n💀 你被击败了...游戏结束" << endl; break; } Sleep(800); } system("pause"); return 0;}
// 显示双方状态 void showStatus(Fighter player, Fighter boss) { cout << "\n----------------------------------------" << endl; cout << player.name << " 血量:" << player.hp << " 攻击:" << player.attack << endl; cout << boss.name << " 血量:" << boss.hp << " 攻击:" << boss.attack << endl; cout << "----------------------------------------" << endl; }
// 玩家攻击逻辑 void playerAttack(Fighter &player, Fighter &boss) { int damage = 0; int choice; cin >> choice;
switch (choice) { case 1: // 普通攻击:基础伤害 ± 随机值 damage = player.attack + rand() % 10 - 3; damage = max(damage, 5); // 最低伤害5 boss.hp -= damage; cout << "💥 你发动普通攻击,造成 " << damage << " 点伤害!" << endl; break; case 2: // 强力技能:高伤害,但有最小伤害保障 damage = player.attack * 1.5 + rand() % 15; boss.hp -= damage; cout << "⚡ 你使用强力技能,造成 " << damage << " 点伤害!" << endl; break; case 3: // 回血技能 int heal = 30 + rand() % 20; player.hp += heal; cout << "❤️ 你使用回血,恢复了 " << heal << " 点生命值!" << endl; break; default: cout << "⚠️ 输入错误,默认普通攻击" << endl; damage = player.attack; boss.hp -= damage; cout << "💥 造成 " << damage << " 点伤害!" << endl; } // 血量不能为负 if (boss.hp < 0) boss.hp = 0;}
// BOSS 攻击逻辑 void bossAttack(Fighter &boss, Fighter &player) { // BOSS 随机攻击/技能 int type = rand() % 3; int damage = 0;
if (type == 0) { damage = boss.attack + rand() % 8 - 2; damage = max(damage, 8); player.hp -= damage; cout << "💥 " << boss.name << " 普通攻击,造成 " << damage << " 点伤害!" << endl; } else { damage = boss.attack * 1.3 + rand() % 12; player.hp -= damage; cout << "⚡ " << boss.name << " 使用技能,造成 " << damage << " 点伤害!" << endl; } if (player.hp < 0) player.hp = 0;}
// 判断游戏结束 bool isGameOver(Fighter player, Fighter boss) { return player.hp <= 0 || boss.hp <= 0; }
-
最近活动
- L1-30班计数排序作业 作业
- L1-30班排序算法作业 作业
- L1-30班插入排序作业 作业
- GESP一级模拟赛编程题 IOI
- GESP一级模拟赛选择题 OI
- L1-30班一维数组的基本操作作业 作业
- L1-30班布尔数组课堂练习 作业
- L1-30班布尔数组作业 作业
- GESP-10班2025.12真题测试-大题 IOI
- GESP-10班2025.12真题测试-选择题 OI
- GESP-10班2025.9真题测试-大题 IOI
- GESP-10班2025.9真题测试-选择题 OI
- GESP一级10班2025.6编程大题 IOI
- GESP一级10班2025.6选择题 OI
- GESP一级10班编程大题 IOI
- GESP一级10班真题选择题测试 OI
- GESP-10班集训题单 作业
- L1-30班一维数组作业 作业
- L1-30班循环测试补题 作业
- L1-30班循环阶段测试 IOI
- L1-30班循环综合课堂练习 作业
- L1-30班循环综合练习作业 作业
- L1-30班质数专题课堂练习 作业
- L1-30班质数专题作业 作业
- L1-30班循环嵌套作业 作业
- L1-30班do…while循环作业 作业
- 2026年南昌斯坦星球 1 月月赛-L1语法阶段 IOI
- L1-30班while循环作业 作业
- L1-30班for循环应用作业 作业
- L1-30班for循环作业 作业
- L1-30班分支结构订正 作业
- L1-30班分支结构编程题 IOI
- L1-30班分支结构选择题 OI
- L1-30班switch作业 作业
- 2025年南昌斯坦星球 11 月月赛-L2算法阶段 IOI
- 2025年南昌斯坦星球 11 月月赛-L1语法阶段 IOI
- L1-30班多分支作业 作业
- L1-30班流程与分支作业 作业
- L1-30班关系与逻辑作业 作业
- L1-30班顺序结构强化2作业 作业
- L1-30班顺序结构课堂小测 OI
- L1-30班顺序结构强化作业 作业
- L1-30班顺序结构课堂练习 作业
- L1-30班格式化输入输出作业 作业
- L1-30班数学函数作业 作业
- L1-30班类型转换作业 作业
- L1-30班数据类型作业 作业
- L1-30班变量与输入作业 作业
- L1-30班计算机原理与输出作业 作业