• 个人简介

    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;
    }
  • 通过的题目

  • 最近活动

题目标签

初窥门径
100
顺序结构
48
循环结构
39
略有小成
33
分支结构
31
循环嵌套
18
一维数组
16
字符串
15
驾轻就熟
12
蓝桥杯
8
电子学会二级
8
GESP二级
8
一本通编程启蒙
7
模拟
6
电子学会一级
5
GESP四级
3
月赛语法
3
其他
2
二维数组
2
排序
2