-
个人简介
In order to continue moving forward, I will burn my heart!
*万物皆虚,万事皆允.瞬光斩黯黮,昭明破晦夜.
怎么有人要来抄代码啊? https://csacademy.com/ https://b.mc.js.cool/
//章愉霖的,不要盗! #include <iostream> #include <string> #include <vector> #include <cstdlib> #include <ctime> #include <fstream> using namespace std; // 角色类 class Character { protected: string name; int level; int health; int attack; int defense; int gold; string equip_weapon; string equip_armor; public: Character(string n, int l = 1, int h = 100, int a = 5, int d = 5, int g = 0) : name(n), level(l), health(h), attack(a), defense(d), gold(g) { equip_weapon = "普通短剑"; equip_armor = "普通布甲"; } void displayStatus() { cout << "\n--- 角色状态 ---" << endl; cout << "名字:" << name << endl; cout << "等级:" << level << endl; cout << "生命值:" << health << endl; cout << "攻击力:" << attack << endl; cout << "防御力:" << defense << endl; cout << "金币:" << gold << endl; cout << "装备:" << equip_weapon << ", " << equip_armor << endl; } string getName() { return name; } int getLevel() { return level; } int getHealth() { return health; } int getAttack() { return attack; } int getDefense() { return defense; } int getGold() { return gold; } string getEquipWeapon() { return equip_weapon; } string getEquipArmor() { return equip_armor; } void setHealth(int h) { health = h; } void setGold(int g) { gold = g; } void setEquipWeapon(string w) { equip_weapon = w; } void setEquipArmor(string a) { equip_armor = a; } void levelUp() { level++; health = 100; attack += 5; defense += 3; cout << "\n恭喜!你升级了!等级:" << level << endl; } }; // 玩家类 class Player : public Character { private: int exp; public: Player(string n) : Character(n) { exp = 0; } void gainExp(int e) { exp += e; if (exp >= 100 * getLevel()) { levelUp(); exp -= 100 * getLevel(); } } }; // 敌人类 class Enemy {//章愉霖的,不要盗! private: string name; int level; int health; int attack; int defense; int exp; int gold; public: Enemy(string n, int l, int h, int a, int d, int e, int g) : name(n), level(l), health(h), attack(a), defense(d), exp(e), gold(g) {} string getName() { return name; } int getLevel() { return level; } int getHealth() { return health; } int getAttack() { return attack; } int getDefense() { return defense; } int getExp() { return exp; } int getGold() { return gold; } void setHealth(int h) { health = h; } }; // 商店类 class Shop { private: vector<string> weapons; vector<string> armors; vector<int> weaponPrices; vector<int> armorPrices; public: Shop() { weapons = {"普通短剑", "铁剑", "钢剑"}; armors = {"普通布甲", "皮甲", "锁甲"}; weaponPrices = {0, 50, 100}; armorPrices = {0, 30, 60}; } void displayMenu(Character& player) { int choice; do { cout << "\n--- 商店菜单 ---" << endl; cout << "1. 购买武器" << endl; cout << "2. 购买护甲" << endl; cout << "3. 查看装备" << endl; cout << "4. 离开商店" << endl; cout << "请输入选择:"; cin >> choice; switch (choice) { case 1: buyWeapon(player); break; case 2: buyArmor(player); break; case 3: player.displayStatus(); break; case 4: cout << "感谢惠顾,再见!" << endl; break; default: cout << "无效选择,请重新输入。" << endl; break; } } while (choice != 4); } //章愉霖的,不要盗! void buyWeapon(Character& player) { cout << "\n--- 武器列表 ---" << endl; for (int i = 0; i < weapons.size(); i++) { cout << i + 1 << ". " << weapons[i] << " 价格:" << weaponPrices[i] << endl; } cout << "当前装备:" << player.getEquipWeapon() << "(攻击力加成:" << getWeaponBonus(player.getEquipWeapon()) << ")" << endl; cout << "请输入要购买的武器编号(0不购买):"; int choice; cin >> choice; if (choice == 0) return; if (choice >= 1 && choice < weapons.size()) { int cost = weaponPrices[choice]; if (player.getGold() >= cost) { player.setGold(player.getGold() - cost); player.setEquipWeapon(weapons[choice]); cout << "购买成功!装备已更新。" << endl; } else { cout << "金币不足,无法购买。" << endl; } } else { cout << "无效选择。" << endl; } } void buyArmor(Character& player) { cout << "\n--- 护甲列表 ---" << endl; for (int i = 0; i < armors.size(); i++) { cout << i + 1 << ". " << armors[i] << " 价格:" << armorPrices[i] << endl; } cout << "当前装备:" << player.getEquipArmor() << "(防御力加成:" << getArmorBonus(player.getEquipArmor()) << ")" << endl; cout << "请输入要购买的护甲编号(0不购买):"; int choice; cin >> choice; if (choice == 0) return; if (choice >= 1 && choice < armors.size()) { int cost = armorPrices[choice]; if (player.getGold() >= cost) { player.setGold(player.getGold() - cost); player.setEquipArmor(armors[choice]); cout << "购买成功!装备已更新。" << endl; } else { cout << "金币不足,无法购买。" << endl; } } else { cout << "无效选择。" << endl; } } int getWeaponBonus(string weapon) { if (weapon == "普通短剑") return 0; if (weapon == "铁剑") return 5; if (weapon == "钢剑") return 10; return 0; } int getArmorBonus(string armor) { if (armor == "普通布甲") return 0; if (armor == "皮甲") return 3; if (armor == "锁甲") return 6; return 0; } }; // 战斗系统 void battle(Player& player, Enemy& enemy) { cout << "\n战斗开始!你遇到了 " << enemy.getName() << "!" << endl; while (player.getHealth() > 0 && enemy.getHealth() > 0) { // 玩家攻击 int playerDamage = player.getAttack() + (player.getEquipWeapon() == "普通短剑" ? 0 : player.getEquipWeapon() == "铁剑" ? 5 : 10); playerDamage -= enemy.getDefense(); if (playerDamage < 1) playerDamage = 1; enemy.setHealth(enemy.getHealth() - playerDamage); cout << player.getName() << " 对 " << enemy.getName() << " 造成了 " << playerDamage << " 点伤害!" << endl; // 敌人攻击 if (enemy.getHealth() > 0) { int enemyDamage = enemy.getAttack() - player.getDefense(); if (enemyDamage < 1) enemyDamage = 1; player.setHealth(player.getHealth() - enemyDamage); cout << enemy.getName() << " 对 " << player.getName() << " 造成了 " << enemyDamage << " 点伤害!" << endl; } } if (player.getHealth() <= 0) { cout << "\n游戏结束,你被击败了。" << endl;//章愉霖的,不要盗! exit(0); } else { cout << "\n你击败了 " << enemy.getName() << "!" << endl; player.gainExp(enemy.getExp()); player.setGold(player.getGold() + enemy.getGold()); cout << "获得经验:" << enemy.getExp() << ",获得金币:" << enemy.getGold() << endl; } } // 游戏主循环 void gameLoop(Player& player) { vector<Enemy> enemies = { Enemy("普通士兵", 1, 50, 5, 2, 10, 10), Enemy("高级士兵", 2, 70, 8, 3, 20, 20), Enemy("最终BOSS", 10, 200, 20, 10, 100, 100) }; Shop shop; while (true) { int choice; cout << "\n--- 游戏主菜单 ---" << endl; cout << "1. 探索世界" << endl; cout << "2. 进入商店" << endl; cout << "3. 查看状态" << endl; cout << "4. 退出游戏" << endl; cout << "请输入选择:"; cin >> choice; switch (choice) { case 1: { // 添加大括号 int enemyIndex = rand() % enemies.size(); battle(player, enemies[enemyIndex]); break; } case 2: shop.displayMenu(player); break; case 3: player.displayStatus(); break; case 4: cout << "感谢游玩,再见!" << endl; return; default: cout << "无效选择,请重新输入。" << endl; break; } } } int main() { srand(time(0)); // 初始化随机数 string playerName; cout << "请输入你的角色名字:"; cin >> playerName;//章愉霖的,不要盗! Player player(playerName); cout << "\n欢迎你," << playerName << "!让我们开始冒险吧!" << endl; gameLoop(player); return 0; }
-
通过的题目
-
最近活动
- 蓝桥杯省赛练习第03周 作业
- 蓝桥杯省赛练习第02周 作业
- 蓝桥杯省赛练习第01周 作业
- 【蓝桥杯stema】202310真题练习 IOI
- 【CQMC】重庆小码王C++月赛 - 算法组(进阶练习) #2 IOI
- 【CQMC】重庆小码王C++月赛 - 语法组(进阶练习) #2 IOI
- 迎新训练赛 IOI
- 【CQMC】重庆小码王C++月赛 - 算法组 #2 IOI
- 【CQMC】重庆小码王C++月赛 - 语法组 #2 IOI
- 【蓝桥杯stema】202303真题练习 IOI
- 夏季清凉赛 IOI
- 暑期集训入营机试题目 IOI
- 暑期集训入营笔试题目 OI
- 数组映射 作业
- 蓝桥杯真题练习 IOI
- GESP-考试 IOI
- 基础语法测试 作业
- 蓝桥杯C++练习1 IOI
- 等级考试一级练习 作业
题目标签
- 初窥门径
- 100
- 顺序结构
- 48
- 循环结构
- 39
- 略有小成
- 33
- 分支结构
- 31
- 循环嵌套
- 18
- 一维数组
- 16
- 字符串
- 15
- 驾轻就熟
- 12
- 蓝桥杯
- 8
- 电子学会二级
- 8
- GESP二级
- 8
- 一本通编程启蒙
- 7
- 模拟
- 6
- 电子学会一级
- 5
- GESP四级
- 3
- 月赛语法
- 3
- 其他
- 2
- 二维数组
- 2
- 排序
- 2