问题标题: 啊

0
0
已解决
段辰曦
段辰曦
初级守护
初级守护

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>

// 玩家结构体
struct Player
{
    char name[21];
    int attack;
    int defense;
    int health;
    long int max_health;
    int level;
    int exp;
    int range_exp;
    long int max_exp;
} player = {"勇者",50,40,100,100,1,0,0,100};

// 怪物结构体
struct Enemy
{
    char name[20];
    char wupin[12];
    int attack;
    int defense;
    int health;
    int money;
    long int exp;
    int wupin_sign;
    int wupinpro;
    int double_attack;
    int miss;
} strongman= {"森林巨人","黄金圣衣",40,50,350,200,100,1,2,1,0},
witch= {"森林女巫","银甲",25,15,100,50,50,2,2,1,1},
xiyi= {"森林蜥蜴","铁甲",18,10,50,30,35,3,3,2,2},
big_strongman= {"森林巨人王","巨人晶石",200,250,1000,1000,500,4,4,2,0},
lion= {"草原雄狮","绝世好剑",60,30,280,200,100,5,2,1,0},
horse= {"草原野马","碧血剑",28,12,90,50,50,6,2,1,1},
bee= {"草原黄蜂","长剑",17,11,60,30,35,7,3,2,2},
shitu= {"使徒","\0",480,240,2240,1600,800,9,1,1,0},
guai= {"\0","\0",0,0,0,0,0,0,0,0,0};

// 场景结构体
struct Place
{
    int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
} place= {1,2,3,4,5,6,7,8};

// 全局变量
int max_exp=0;
int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
int jingyancao=0,jingyanbao=0,jingyanshi=0;
char gongname[20]="无",fangname[20]="无";
char proof;

// 函数声明
void AddWupin(int);
int AttackResult();
void BattleAct();
void ChooseWupin();
void DisplayState();
void OrdinaryAct();
int SuiJi();
int SuiJi100();
void WhetherLevelUp();
void SlowDisplay(char *str);
void SaveGame();
void LoadGame();

// 随机数生成(修复重复初始化问题)
int SuiJi()
{
    static int first = 1;
    if(first)
    {
        srand((unsigned)time(NULL));
        first = 0;
    }
    return rand()%10;
}

int SuiJi100()
{
    static int first = 1;
    if(first)
    {
        srand((unsigned)time(NULL));
        first = 0;
    }
    return rand()%100;
}

// 慢速打印文字(修复原重复定义printf问题)
void SlowDisplay(char *str)
{
    while(*str != '\0')
    {
        printf("%c", *str++);
        Sleep(50);
    }
    printf("\n");
}

// 物品添加函数
void AddWupin(int wupin_sign)
{
    switch(wupin_sign)
    {
        case 1:
            fang4n++;
            SlowDisplay("获得黄金圣衣!");
            break;
        case 2:
            fang3n++;
            SlowDisplay("获得银甲!");
            break;
        case 3:
            fang2n++;
            SlowDisplay("获得铁甲!");
            break;
        case 4:
            strongman_arm=1;
            SlowDisplay("获得巨人晶石!");
            break;
        case 5:
            gong4n++;
            SlowDisplay("获得绝世好剑!");
            break;
        case 6:
            gong3n++;
            SlowDisplay("获得碧血剑!");
            break;
        case 7:
            gong2n++;
            SlowDisplay("获得长剑!");
            break;
        default:
            SlowDisplay("AddWupin error");
    }
}

// 攻击结果处理
int AttackResult()
{
    if(guai.health<=0)
    {
        battle=0;
        char msg[100];
        sprintf(msg, "战斗胜利!获得金币%d,经验%d", guai.money, guai.exp);
        SlowDisplay(msg);
        player.exp+=guai.exp;
        player.range_exp+=guai.exp;
        money+=guai.money;
        
        s=SuiJi();
        if(s<guai.wupinpro)
        {
            SlowDisplay("从敌人尸骸中发现");
            SlowDisplay(guai.wupin);
            AddWupin(guai.wupin_sign);
        }
        
        WhetherLevelUp();
        
        if(strcmp(guai.name,"使徒")==0)
        {
            SlowDisplay("战斗胜利,救出公主!!!");
            SlowDisplay("恭喜你完成了冒险,游戏结束!");
            SaveGame();
            getchar();
            exit(0);
        }
        return 1;
    }
    else
    {
        int s=SuiJi();
        int damage = guai.attack + s - player.defense/3;
        if(damage < 0) damage = 1;
        
        player.health -= damage;
        char msg[100];
        sprintf(msg, "%s反击,你的HP减少了%d", guai.name, damage);
        SlowDisplay(msg);
        
        if(player.health<0)
        {
            battle=0;
            int lose_money = player.level * 500;
            if(money < lose_money) lose_money = money;
            money -= lose_money;
            
            sprintf(msg, "%s战败!金币掉落%d", player.name, lose_money);
            SlowDisplay(msg);
            
            player.health = player.max_health / 5;
            OrdinaryAct();
            return 1;
        }
    }
    return 0;
}

// 升级判断
void WhetherLevelUp()
{
    int levelUp = 0;
    int addLevel = 0;
    int addAttack = 0, addDefense = 0, addHp = 0;
    
    // 重新设计升级逻辑,更合理
    while(player.exp >= player.max_exp && player.level < 1000)
    {
        levelUp = 1;
        addLevel++;
        player.level++;
        player.exp -= player.max_exp;
        
        // 不同等级段升级奖励不同
        if(player.level <= 20)
        {
            player.max_exp += 100;
            addAttack += 5;
            addDefense += 3;
            addHp += 30;
        }
        else if(player.level <= 50)
        {
            player.max_exp += 200;
            addAttack += 8;
            addDefense += 5;
            addHp += 50;
        }
        else
        {
            player.max_exp += 300;
            addAttack += 10;
            addDefense += 7;
            addHp += 80;
        }
        
        player.attack += addAttack;
        player.defense += addDefense;
        player.max_health += addHp;
        player.health = player.max_health;
    }
    
    if(levelUp)
    {
        char msg[200];
        if(addLevel == 1)
        {
            sprintf(msg, "%s 升级到%d级!攻击力+%d, 防御力+%d, HP上限+%d", 
                    player.name, player.level, addAttack, addDefense, addHp);
        }
        else
        {
            sprintf(msg, "%s 连升%d级!攻击力+%d, 防御力+%d, HP上限+%d", 
                    player.name, addLevel, addAttack, addDefense, addHp);
        }
        SlowDisplay(msg);
        SlowDisplay("HP已回满!");
    }
}

// 物品选择与使用
void ChooseWupin()
{
    char menu[500];
    sprintf(menu, "物品列表:\n1,止血草(%d个) - HP+60\n2,急救包(%d个) - HP+80\n3,云南白药(%d个) - HP+120\n4,超级云南白药(%d个) - HP+200\n5,手雷(%d个) - 敌HP-100\n6,毒标(%d个) - 敌HP-200\n7,手抛式炸弹(%d个) - 敌HP-666666\n8,经验草(%d个) - 等级+10\n9,经验包(%d个) - 等级+2\n10,经验石(%d个) - 等级+10\n11,巨人晶石(%d个) - 等级+16\n0,返回",
            cao,jijiubao,baiyao,superbaiyao,boom,dubiao,atom_boom,jingyancao,jingyanbao,jingyanshi,strongman_arm);
    SlowDisplay(menu);
    
    scanf("%d",&choose_number);
    switch(choose_number)
    {
        case 1:
            if(cao>0)
            {
                cao--;
                int addHp = 60;
                if(player.health + addHp > player.max_health)
                {
                    addHp = player.max_health - player.health;
                    player.health = player.max_health;
                }
                else
                {
                    player.health += addHp;
                }
                char msg[50];
                sprintf(msg, "使用止血草,HP增加%d", addHp);
                SlowDisplay(msg);
            }
            else SlowDisplay("没有止血草了");
            break;
        case 2:
            if(jijiubao>0)
            {
                jijiubao--;
                int addHp = 80;
                if(player.health + addHp > player.max_health)
                {
                    addHp = player.max_health - player.health;
                    player.health = player.max_health;
                }
                else
                {
                    player.health += addHp;
                }
                char msg2[50];
                sprintf(msg2, "使用急救包,HP增加%d", addHp);
                SlowDisplay(msg2);
            }
            else SlowDisplay("没有急救包了");
            break;
        case 3:
            if(baiyao>0)
            {
                baiyao--;
                int addHp = 120;
                if(player.health + addHp > player.max_health)
                {
                    addHp = player.max_health - player.health;
                    player.health = player.max_health;
                }
                else
                {
                    player.health += addHp;
                }
                char msg3[50];
                sprintf(msg3, "使用云南白药,HP增加%d", addHp);
                SlowDisplay(msg3);
            }
            else SlowDisplay("没有云南白药了");
            break;
        case 4:
            if(superbaiyao>0)
            {
                superbaiyao--;
                int addHp = 200;
                if(player.health + addHp > player.max_health)
                {
                    addHp = player.max_health - player.health;
                    player.health = player.max_health;
                }
                else
                {
                    player.health += addHp;
                }
                char msg4[50];
                sprintf(msg4, "使用超级云南白药,HP增加%d", addHp);
                SlowDisplay(msg4);
            }
            else SlowDisplay("没有超级云南白药了");
            break;
        case 5:
            if(battle)
            {
                if(boom>0)
                {
                    boom--;
                    guai.health-=100;
                    SlowDisplay("使用手雷,敌人HP减少100");
                    AttackResult();
                }
                else SlowDisplay("没有手雷了");
            }
            else SlowDisplay("非战斗状态,不能使用手雷!");
            break;
        case 6:
            if(battle)
            {
                if(dubiao>0)
                {
                    dubiao--;
                    guai.health-=200;
                    SlowDisplay("使用毒标,敌人HP减少200");
                    AttackResult();
                }
                else SlowDisplay("没有毒标了");
            }
            else SlowDisplay("非战斗状态,不能使用毒标!");
            break;
        case 7:
            if(battle)
            {
                if(atom_boom>0)
                {
                    atom_boom--;
                    guai.health-=666666666;
                    SlowDisplay("使用手抛式炸弹,敌人HP减少666666666");
                    AttackResult();
                }
                else SlowDisplay("没有手抛式炸弹了");
            }
            else SlowDisplay("非战斗状态,不能使用手抛式炸弹!");
            break;
        case 8:
            if(jingyancao>0 && player.level<1000)
            {
                jingyancao--;
                player.level+=10;
                if(player.level > 1000) player.level = 1000;
                char msg8[50];
                sprintf(msg8, "使用经验草,等级增加10级,当前等级:%d", player.level);
                SlowDisplay(msg8);
            }
            else if(jingyancao<1) SlowDisplay("没有经验草了");
            else SlowDisplay("等级超过1000级,无法使用经验草");
            break;
        case 9:
            if(jingyanbao>0 && player.level<1000)
            {
                jingyanbao--;
                player.level+=2;
                if(player.level > 1000) player.level = 1000;
                char msg9[50];
                sprintf(msg9, "使用经验包,等级增加2级,当前等级:%d", player.level);
                SlowDisplay(msg9);
            }
            else if(jingyanbao<1) SlowDisplay("没有经验包了");
            else SlowDisplay("等级超过1000级,无法使用经验包");
            break;
        case 10:
            if(jingyanshi>0 && player.level<1000)
            {
                jingyanshi--;
                player.level+=10;
                if(player.level > 1000) player.level = 1000;
                char msg10[50];
                sprintf(msg10, "使用经验石,等级增加10级,当前等级:%d", player.level);
                SlowDisplay(msg10);
            }
            else if(jingyanshi<1) SlowDisplay("没有经验石了");
            else SlowDisplay("等级超过1000级,无法使用经验石");
            break;
        case 11:
            if(strongman_arm>0 && player.level<1000)
            {
                strongman_arm--;
                player.level+=16;
                if(player.level > 1000) player.level = 1000;
                char msg11[50];
                sprintf(msg11, "使用巨人晶石,等级增加16级,当前等级:%d", player.level);
                SlowDisplay(msg11);
            }
            else if(strongman_arm<1) SlowDisplay("没有巨人晶石了");
            else SlowDisplay("等级超过1000级,无法使用巨人晶石");
            break;
        case 0:
            break;
        default:
            SlowDisplay("输入错误,请重新选择!");
    }
}

// 显示角色状态
void DisplayState()
{
    printf("\n=================== 角色状态 ===================\n");
    printf("姓名: %s\n", player.name);
    printf("等级: %d\n", player.level);
    printf("经验: %ld/%ld (还需%ld升级)\n", player.exp, player.max_exp, player.max_exp - player.exp);
    printf("攻击力: %d (基**%d + 装备%d)\n", player.attack + gong, player.attack, gong);
    printf("防御力: %d (基**%d + 装备%d)\n", player.defense + fang, player.defense, fang);
    printf("生命值: %d/%d\n", player.health, player.max_health);
    printf("当前装备: 武器[%s] 防具[%s]\n", gongname, fangname);
    printf("金币: %d\n", money);
    printf("===============================================\n\n");
}

// 战斗行为
void BattleAct()
{
    SlowDisplay("进入战斗状态!");
    char enemyInfo[100];
    sprintf(enemyInfo, "敌人: %s HP:%d 攻击力:%d 防御力:%d", guai.name, guai.health, guai.attack, guai.defense);
    SlowDisplay(enemyInfo);
    
    while(1)
    {
        printf("\n=================== 战斗菜单 ===================\n");
        printf("1,攻击 2,物品 3,查看状态 4,逃跑\n");
        printf("===============================================\n");
        printf("请选择操作: ");
        
        scanf("%d",&choose_number);
        switch(choose_number)
        {
            case 1:
                s=SuiJi();
                int damage = player.attack + s + gong - guai.defense/3;
                if(damage < 1) damage = 1;
                guai.health -= damage;
                
                char msg[100];
                sprintf(msg, "%s攻击! %sHP减少%d (剩余%d)", player.name, guai.name, damage, guai.health);
                SlowDisplay(msg);
                
                if(AttackResult()) return;
                break;
            case 2:
                ChooseWupin();
                break;
            case 3:
                DisplayState();
                break;
            case 4:
                s=SuiJi();
                if(s<4)
                {
                    SlowDisplay("成功逃跑!");
                    battle=0;
                    return;
                }
                else
                {
                    SlowDisplay("逃跑失败!敌人发起了反击!");
                    // 逃跑失败被反击
                    int damage = guai.attack + SuiJi() - player.defense/3;
                    if(damage < 1) damage = 1;
                    player.health -= damage;
                    
                    char msg2[100];
                    sprintf(msg2, "%s反击,你的HP减少了%d (剩余%d)", guai.name, damage, player.health);
                    SlowDisplay(msg2);
                    
                    if(player.health <= 0)
                    {
                        battle=0;
                        int lose_money = player.level * 500;
                        if(money < lose_money) lose_money = money;
                        money -= lose_money;
                        
                        sprintf(msg2, "%s战败!金币掉落%d", player.name, lose_money);
                        SlowDisplay(msg2);
                        
                        player.health = player.max_health / 5;
                        OrdinaryAct();
                        return;
                    }
                }
                break;
            default:
                SlowDisplay("输入错误,请重新选择!");
        }
    }
}

// 保存游戏
void SaveGame()
{
    FILE *fp = fopen("savegame.dat", "wb");
    if(fp == NULL)
    {
        SlowDisplay("保存失败!");
        return;
    }
    
    // 保存核心数据
    fwrite(&player, sizeof(struct Player), 1, fp);
    fwrite(&money, sizeof(int), 1, fp);
    fwrite(&gong, sizeof(int), 1, fp);
    fwrite(&fang, sizeof(int), 1, fp);
    fwrite(&gong1n, sizeof(int), 1, fp);
    fwrite(&gong2n, sizeof(int), 1, fp);
    fwrite(&gong3n, sizeof(int), 1, fp);
    fwrite(&gong4n, sizeof(int), 1, fp);
    fwrite(&fang1n, sizeof(int), 1, fp);
    fwrite(&fang2n, sizeof(int), 1, fp);
    fwrite(&fang3n, sizeof(int), 1, fp);
    fwrite(&fang4n, sizeof(int), 1, fp);
    fwrite(&cao, sizeof(int), 1, fp);
    fwrite(&jijiubao, sizeof(int), 1, fp);
    fwrite(&baiyao, sizeof(int), 1, fp);
    fwrite(&superbaiyao, sizeof(int), 1, fp);
    fwrite(&boom, sizeof(int), 1, fp);
    fwrite(&dubiao, sizeof(int), 1, fp);
    fwrite(&atom_boom, sizeof(int), 1, fp);
    fwrite(&jingyancao, sizeof(int), 1, fp);
    fwrite(&jingyanbao, sizeof(int), 1, fp);
    fwrite(&jingyanshi, sizeof(int), 1, fp);
    fwrite(&strongman_arm, sizeof(int), 1, fp);
    
    fclose(fp);
    SlowDisplay("游戏已保存!");
}

// 加载游戏
void LoadGame()
{
    FILE *fp = fopen("savegame.dat", "rb");
    if(fp == NULL)
    {
        SlowDisplay("没有找到存档文件!");
        return;
    }
    
    // 加载数据
    fread(&player, sizeof(struct Player), 1, fp);
    fread(&money, sizeof(int), 1, fp);
    fread(&gong, sizeof(int), 1, fp);
    fread(&fang, sizeof(int), 1, fp);
    fread(&gong1n, sizeof(int), 1, fp);
    fread(&gong2n, sizeof(int), 1, fp);
    fread(&gong3n, sizeof(int), 1, fp);
    fread(&gong4n, sizeof(int), 1, fp);
    fread(&fang1n, sizeof(int), 1, fp);
    fread(&fang2n, sizeof(int), 1, fp);
    fread(&fang3n, sizeof(int), 1, fp);
    fread(&fang4n, sizeof(int), 1, fp);
    fread(&cao, sizeof(int), 1, fp);
    fread(&jijiubao, sizeof(int), 1, fp);
    fread(&baiyao, sizeof(int), 1, fp);
    fread(&superbaiyao, sizeof(int), 1, fp);
    fread(&boom, sizeof(int), 1, fp);
    fread(&dubiao, sizeof(int), 1, fp);
    fread(&atom_boom, sizeof(int), 1, fp);
    fread(&jingyancao, sizeof(int), 1, fp);
    fread(&jingyanbao, sizeof(int), 1, fp);
    fread(&jingyanshi, sizeof(int), 1, fp);
    fread(&strongman_arm, sizeof(int), 1, fp);
    
    fclose(fp);
    SlowDisplay("存档加载成功!");
    OrdinaryAct();
}

// 主菜单行为
void OrdinaryAct()
{
    while(1)
    {
        system("cls"); // 清屏,提升体验
        printf("\n=================== 苍穹世界 2.2 正式版 ===================\n");
        printf("欢迎回来,%s!\n", player.name);
        printf("===========================================================\n");
        printf("1,移动 2,道具 3,对话 4,查看状态 5,装备 6,关于游戏 7,保存游戏 8,加载游戏 0,退出游戏\n");
        printf("===========================================================\n");
        printf("请选择操作: ");
        
        scanf("%d",&choose_number);
        switch(choose_number)
        {
            case 1: // 移动
                printf("\n=================== 移动菜单 ===================\n");
                printf("1,happy酒吧 2,方舟酒店 3,北朝商会 4,红玉拍卖行 5,冒险荒野\n");
                printf("===============================================\n");
                printf("请选择目的地: ");
                
                scanf("%d",&choose_number);
                switch(choose_number)
                {
                    case 1:
                        place_sign=place.bar;
                        SlowDisplay("你来到了happy酒吧,这里人声鼎沸!");
                        break;
                    case 2:
                        place_sign=place.hotel;
                        char moneyMsg[50];
                        sprintf(moneyMsg, "当前金币:%d", money);
                        SlowDisplay(moneyMsg);
                        SlowDisplay("方舟酒店 - 休息需要200金币(HP回满)");
                        SlowDisplay("1,休息 0,离开");
                        printf("请选择: ");
                        
                        scanf("%d",&choose_number);
                        if(choose_number == 1)
                        {
                            if(money >= 200)
                            {
                                money -= 200;
                                player.health = player.max_health;
                                SlowDisplay("好好休息了一晚,HP已回满!");
                                sprintf(moneyMsg, "剩余金币:%d", money);
                                SlowDisplay(moneyMsg);
                            }
                            else
                            {
                                SlowDisplay("金币不足,无法休息!");
                            }
                        }
                        else
                        {
                            SlowDisplay("下次再来!");
                        }
                        break;
                    case 3: // 北朝商会(购买装备)
                        SlowDisplay("欢迎来到北朝商会!");
                        printf("\n=================== 商会菜单 ===================\n");
                        printf("1,攻击装备 2,防御装备 3,一次**伤害武器 0,离开\n");
                        printf("===============================================\n");
                        printf("请选择: ");
                        
                        int yongju;
                        scanf("%d",&yongju);
                        switch(yongju)
                        {
                            case 1: // 攻击装备
                                printf("\n攻击武器列表:\n");
                                printf("1,匕首¥300 (攻击力+8) 当前拥有:%d\n", gong1n);
                                printf("2,长剑¥500 (攻击力+15) 当前拥有:%d\n", gong2n);
                                printf("3,碧血剑¥1000 (攻击力+25) 当前拥有:%d\n", gong3n);
                                printf("4,绝世好剑¥2000 (攻击力+60) 当前拥有:%d\n", gong4n);
                                printf("0,返回\n");
                                printf("请选择: ");
                                
                                int gongChoice;
                                scanf("%d",&gongChoice);
                                switch(gongChoice)
                                {
                                    case 1:
                                        if(money >= 300)
                                        {
                                            gong1n++;
                                            money -= 300;
                                            SlowDisplay("购买了匕首!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 2:
                                        if(money >= 500)
                                        {
                                            gong2n++;
                                            money -= 500;
                                            SlowDisplay("购买了长剑!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 3:
                                        if(money >= 1000)
                                        {
                                            gong3n++;
                                            money -= 1000;
                                            SlowDisplay("购买了碧血剑!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 4:
                                        if(money >= 2000)
                                        {
                                            gong4n++;
                                            money -= 2000;
                                            SlowDisplay("购买了绝世好剑!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 0:
                                        break;
                                    default:
                                        SlowDisplay("输入错误!");
                                }
                                break;
                            case 2: // 防御装备
                                printf("\n防御装备列表:\n");
                                printf("1,布衣¥300 (防御力+10) 当前拥有:%d\n", fang1n);
                                printf("2,铁甲¥500 (防御力+20) 当前拥有:%d\n", fang2n);
                                printf("3,银甲¥1000 (防御力+40) 当前拥有:%d\n", fang3n);
                                printf("4,黄金圣衣¥2000 (防御力+100) 当前拥有:%d\n", fang4n);
                                printf("0,返回\n");
                                printf("请选择: ");
                                
                                int fangChoice;
                                scanf("%d",&fangChoice);
                                switch(fangChoice)
                                {
                                    case 1:
                                        if(money >= 300)
                                        {
                                            fang1n++;
                                            money -= 300;
                                            SlowDisplay("购买了布衣!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 2:
                                        if(money >= 500)
                                        {
                                            fang2n++;
                                            money -= 500;
                                            SlowDisplay("购买了铁甲!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 3:
                                        if(money >= 1000)
                                        {
                                            fang3n++;
                                            money -= 1000;
                                            SlowDisplay("购买了银甲!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 4:
                                        if(money >= 2000)
                                        {
                                            fang4n++;
                                            money -= 2000;
                                            SlowDisplay("购买了黄金圣衣!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 0:
                                        break;
                                    default:
                                        SlowDisplay("输入错误!");
                                }
                                break;
                            case 3: // 一次**武器
                                printf("\n一次**伤害武器:\n");
                                printf("1,手雷¥300 (敌HP-100) 当前拥有:%d\n", boom);
                                printf("2,毒标¥600 (敌HP-200) 当前拥有:%d\n", dubiao);
                                printf("3,手抛式炸弹¥1000 (敌HP-666666) 当前拥有:%d\n", atom_boom);
                                printf("0,返回\n");
                                printf("请选择: ");
                                
                                int bombChoice;
                                scanf("%d",&bombChoice);
                                switch(bombChoice)
                                {
                                    case 1:
                                        if(money >= 300 && boom < 10)
                                        {
                                            boom++;
                                            money -= 300;
                                            SlowDisplay("购买了手雷!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else if(boom >= 10)
                                        {
                                            SlowDisplay("携带的手雷已达上限!");
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 2:
                                        if(money >= 600 && dubiao < 5)
                                        {
                                            dubiao++;
                                            money -= 600;
                                            SlowDisplay("购买了毒标!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else if(dubiao >= 5)
                                        {
                                            SlowDisplay("携带的毒标已达上限!");
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 3:
                                        if(money >= 1000 && atom_boom < 3)
                                        {
                                            atom_boom++;
                                            money -= 1000;
                                            SlowDisplay("购买了手抛式炸弹!");
                                            sprintf(moneyMsg, "剩余金币:%d", money);
                                            SlowDisplay(moneyMsg);
                                        }
                                        else if(atom_boom >= 3)
                                        {
                                            SlowDisplay("携带的炸弹已达上限!");
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 0:
                                        break;
                                    default:
                                        SlowDisplay("输入错误!");
                                }
                                break;
                            case 0:
                                break;
                            default:
                                SlowDisplay("输入错误!");
                        }
                        break;
                    case 4: // 红玉拍卖行(出售装备)
                        SlowDisplay("欢迎来到红玉拍卖行!");
                        printf("\n=================== 拍卖行 ===================\n");
                        printf("攻击装备: \n");
                        printf("1,匕首(售价240) 当前:%d\n2,长剑(售价400) 当前:%d\n3,碧血剑(售价800) 当前:%d\n4,绝世好剑(售价1500) 当前:%d\n",gong1n,gong2n,gong3n,gong4n);
                        printf("防御装备: \n");
                        printf("5,布衣(售价240) 当前:%d\n6,铁甲(售价400) 当前:%d\n7,银甲(售价800) 当前:%d\n8,黄金圣衣(售价1500) 当前:%d\n",fang1n,fang2n,fang3n,fang4n);
                        printf("9,巨人晶石(售价2000) 当前:%d\n0,离开\n",strongman_arm);
                        printf("===============================================\n");
                        printf("请选择要出售的物品: ");
                        
                        int sellChoice, sellCount;
                        scanf("%d",&sellChoice);
                        if(sellChoice == 0) break;
                        
                        SlowDisplay("请输入出售数量: ");
                        scanf("%d",&sellCount);
                        if(sellCount <= 0)
                        {
                            SlowDisplay("数量错误!");
                            break;
                        }
                        
                        switch(sellChoice)
                        {
                            case 1:
                                if(gong1n >= sellCount)
                                {
                                    gong1n -= sellCount;
                                    money += sellCount * 240;
                                    SlowDisplay("出售匕首成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*240, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 2:
                                if(gong2n >= sellCount)
                                {
                                    gong2n -= sellCount;
                                    money += sellCount * 400;
                                    SlowDisplay("出售长剑成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*400, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 3:
                                if(gong3n >= sellCount)
                                {
                                    gong3n -= sellCount;
                                    money += sellCount * 800;
                                    SlowDisplay("出售碧血剑成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*800, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 4:
                                if(gong4n >= sellCount)
                                {
                                    gong4n -= sellCount;
                                    money += sellCount * 1500;
                                    SlowDisplay("出售绝世好剑成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*1500, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 5:
                                if(fang1n >= sellCount)
                                {
                                    fang1n -= sellCount;
                                    money += sellCount * 240;
                                    SlowDisplay("出售布衣成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*240, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 6:
                                if(fang2n >= sellCount)
                                {
                                    fang2n -= sellCount;
                                    money += sellCount * 400;
                                    SlowDisplay("出售铁甲成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*400, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 7:
                                if(fang3n >= sellCount)
                                {
                                    fang3n -= sellCount;
                                    money += sellCount * 800;
                                    SlowDisplay("出售银甲成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*800, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 8:
                                if(fang4n >= sellCount)
                                {
                                    fang4n -= sellCount;
                                    money += sellCount * 1500;
                                    SlowDisplay("出售黄金圣衣成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*1500, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("装备数量不足!");
                                }
                                break;
                            case 9:
                                if(strongman_arm >= sellCount)
                                {
                                    strongman_arm -= sellCount;
                                    money += sellCount * 2000;
                                    SlowDisplay("出售巨人晶石成功!");
                                    sprintf(moneyMsg, "获得金币:%d,剩余金币:%d", sellCount*2000, money);
                                    SlowDisplay(moneyMsg);
                                }
                                else
                                {
                                    SlowDisplay("晶石数量不足!");
                                }
                                break;
                            default:
                                SlowDisplay("没有该物品!");
                        }
                        break;
                    case 5: // 冒险荒野
                        while(1)
                        {
                            printf("\n=================== 冒险荒野 ===================\n");
                            printf("1,神秘沼泽(★) 2,星耀草原(★) 3,诡异森林(★★★)\n");
                            printf("4,荒漠矿场(★★★) 5,炽热炎洞(★★★★) 6,花朵宫殿(★★★★★)\n");
                            printf("0,返回城镇\n");
                            printf("===============================================\n");
                            printf("请选择冒险区域: ");
                            
                            int area;
                            scanf("%d",&area);
                            if(area == 0) break;
                            
                            place_sign = 0;
                            s = SuiJi();
                            battle = 1;
                            
                            switch(area)
                            {
                                case 1: // 神秘沼泽
                                    place_sign=place.forest1;
                                    if(s<7) { guai=xiyi; }
                                    else if(s<9) { guai=witch; }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                case 2: // 星耀草原
                                    place_sign=place.grass1;
                                    if(s<7) { guai=bee; }
                                    else if(s<9) { guai=horse; }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                case 3: // 诡异森林
                                    place_sign=place.forest2;
                                    if(s<7) { guai=witch; }
                                    else if(s<9) { guai=strongman; }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                case 4: // 荒漠矿场
                                    place_sign=place.grass2;
                                    if(s<7) { guai=horse; }
                                    else if(s<9) { guai=lion; }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                case 5: // 炽热炎洞
                                    place_sign=place.forest3;
                                    if(s<7) { guai=strongman; }
                                    else if(s<9) { guai=big_strongman; }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                case 6: // 花朵宫殿
                                    place_sign=place.grass3;
                                    if(s<7) { guai=lion; }
                                    else if(s<9)
                                    {
                                        if(strongman_arm)
                                        {
                                            SlowDisplay("神秘老人:哈哈,年轻人,你上当啦!巨人晶石我要了,公主你也别想带走!");
                                            guai=shitu;
                                        }
                                        else
                                        {
                                            battle=0;
                                            SlowDisplay("神秘老人:年轻人,你好啊.如果你有巨人晶石,我可以告诉你公主的下落哦~");
                                            break;
                                        }
                                    }
                                    else { battle=0; SlowDisplay("这里暂时安全!"); break; }
                                    break;
                                default:
                                    SlowDisplay("未知区域,无法进入!");
                                    battle=0;
                                    break;
                            }
                            
                            if(battle)
                            {
                                char encounter[50];
                                sprintf(encounter, "%s扑了过来!", guai.name);
                                SlowDisplay(encounter);
                                BattleAct();
                            }
                        }
                        break;
                    default:
                        SlowDisplay("无效的目的地!");
                }
                break;
                
            case 2: // 道具
                ChooseWupin();
                break;
                
            case 3: // 对话
                if(place_sign==place.bar)
                {
                    printf("\n=================== 酒吧对话 ===================\n");
                    printf("1,红发女郎 2,赏金猎人 3,酒吧老板 4,药品商人 0,返回\n");
                    printf("===============================================\n");
                    printf("请选择对话对象: ");
                    
                    scanf("%d",&choose_number);
                    switch(choose_number)
                    {
                        case 1:
                            SlowDisplay("红发女郎:吧台边那个Hunter好帅啊!(~脸红~)听说他经常外出打猎,外面的路他应该很熟悉的!");
                            break;
                        case 2:
                            if(fang1n<1 && gong1n<1)
                            {
                                SlowDisplay("赏金猎人:你要救公主啊!好胆量!不过外面的世界很险恶,这是匕首和布衣,拿去吧!");
                                gong1n++;
                                fang1n++;
                                SlowDisplay("获得匕首和布衣!");
                            }
                            else
                            {
                                SlowDisplay("赏金猎人:加油吧,年轻人!不要被外面世界所吓倒!");
                            }
                            break;
                        case 3:
                            SlowDisplay("酒吧老板:要喝点什么?");
                            while(1)
                            {
                                printf("\n1,二锅头¥25 (HP+20) 2,XO酒¥80 (HP+50) 3,人头马面¥150 (HP+100) 0,返回\n");
                                printf("请选择: ");
                                
                                scanf("%d",&choose_number);
                                if(choose_number == 0) break;
                                
                                switch(choose_number)
                                {
                                    case 1:
                                        if(money >=25)
                                        {
                                            money -=25;
                                            int addHp = 20;
                                            if(player.health + addHp > player.max_health)
                                            {
                                                addHp = player.max_health - player.health;
                                                player.health = player.max_health;
                                            }
                                            else
                                            {
                                                player.health += addHp;
                                            }
                                            char msg[50];
                                            sprintf(msg, "喝下二锅头,HP+%d!剩余金币:%d", addHp, money);
                                            SlowDisplay(msg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 2:
                                        if(money >=80)
                                        {
                                            money -=80;
                                            int addHp = 50;
                                            if(player.health + addHp > player.max_health)
                                            {
                                                addHp = player.max_health - player.health;
                                                player.health = player.max_health;
                                            }
                                            else
                                            {
                                                player.health += addHp;
                                            }
                                            char msg[50];
                                            sprintf(msg, "喝下XO酒,HP+%d!剩余金币:%d", addHp, money);
                                            SlowDisplay(msg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    case 3:
                                        if(money >=150)
                                        {
                                            money -=150;
                                            int addHp = 100;
                                            if(player.health + addHp > player.max_health)
                                            {
                                                addHp = player.max_health - player.health;
                                                player.health = player.max_health;
                                            }
                                            else
                                            {
                                                player.health += addHp;
                                            }
                                            char msg[50];
                                            sprintf(msg, "喝下人马头面,HP+%d!剩余金币:%d", addHp, money);
                                            SlowDisplay(msg);
                                        }
                                        else
                                        {
                                            SlowDisplay("金币不足!");
                                        }
                                        break;
                                    default:
                                        SlowDisplay("输入错误!");
                                }
                            }
                            break;
                        case 4:
                            SlowDisplay("药品商人:你要干什么?1,买东西 2,聊天");
                            printf("请选择: ");
                            
                            int buyChoice;
                            scanf("%d",&buyChoice);
                            if(buyChoice == 1)
                            {
                                while(1)
                                {
                                    printf("\n药品商店:\n");
                                    printf("1,止血草¥100 (HP+60) 当前:%d (上限6)\n", cao);
                                    printf("2,急救包¥150 (HP+80) 当前:%d (上限5)\n", jijiubao);
                                    printf("3,云南白药¥250 (HP+120) 当前:%d (上限4)\n", baiyao);
                                    printf("4,超级云南白药¥400 (HP+200) 当前:%d (上限3)\n", superbaiyao);
                                    printf("5,经验草¥150 (等级+10) 当前:%d\n", jingyancao);
                                    printf("6,经验包¥300 (等级+2) 当前:%d\n", jingyanbao);
                                    printf("7,经验石¥500 (等级+10) 当前:%d\n", jingyanshi);
                                    printf("0,离开\n");
                                    printf("请选择: ");
                                    
                                    int itemChoice;
                                    scanf("%d",&itemChoice);
                                    if(itemChoice == 0) break;
                                    
                                    switch(itemChoice)
                                    {
                                        case 1:
                                            if(money >=100 && cao <6)
                                            {
                                                cao++;
                                                money -=100;
                                                SlowDisplay("购买了止血草!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else if(cao >=6)
                                            {
                                                SlowDisplay("止血草已达携带上限!");
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 2:
                                            if(money >=150 && jijiubao <5)
                                            {
                                                jijiubao++;
                                                money -=150;
                                                SlowDisplay("购买了急救包!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else if(jijiubao >=5)
                                            {
                                                SlowDisplay("急救包已达携带上限!");
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 3:
                                            if(money >=250 && baiyao <4)
                                            {
                                                baiyao++;
                                                money -=250;
                                                SlowDisplay("购买了云南白药!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else if(baiyao >=4)
                                            {
                                                SlowDisplay("云南白药已达携带上限!");
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 4:
                                            if(money >=400 && superbaiyao <3)
                                            {
                                                superbaiyao++;
                                                money -=400;
                                                SlowDisplay("购买了超级云南白药!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else if(superbaiyao >=3)
                                            {
                                                SlowDisplay("超级云南白药已达携带上限!");
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 5:
                                            if(money >=150)
                                            {
                                                jingyancao++;
                                                money -=150;
                                                SlowDisplay("购买了经验草!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 6:
                                            if(money >=300)
                                            {
                                                jingyanbao++;
                                                money -=300;
                                                SlowDisplay("购买了经验包!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        case 7:
                                            if(money >=500)
                                            {
                                                jingyanshi++;
                                                money -=500;
                                                SlowDisplay("购买了经验石!");
                                                char msg[50];
                                                sprintf(msg, "剩余金币:%d", money);
                                                SlowDisplay(msg);
                                            }
                                            else
                                            {
                                                SlowDisplay("金币不足!");
                                            }
                                            break;
                                        default:
                                            SlowDisplay("输入错误!");
                                    }
                                }
                            }
                            else
                            {
                                SlowDisplay("药品商人:去去去,老子没时间陪你聊。");
                            }
                            break;
                        case 0:
                            break;
                        default:
                            SlowDisplay("没有这个人物!");
                    }
                }
                else if(place_sign==place.hotel)
                {
                    SlowDisplay("老板娘!我...");
                    SlowDisplay("我忙着呢,没空理你~");
                }
                else
                {
                    SlowDisplay("这里没人可以聊天!");
                }
                break;
                
            case 4: // 查看状态
                DisplayState();
                SlowDisplay("按任意键继续...");
                getchar();
                getchar();
                break;
                
            case 5: // 装备
                printf("\n=================== 装备界面 ===================\n");
                printf("攻击装备:\n");
                printf("1,匕首(+8攻) 当前:%d 2,长剑(+15攻) 当前:%d\n",gong1n,gong2n);
                printf("3,碧血剑(+25攻) 当前:%d 4,绝世好剑(+60攻) 当前:%d\n",gong3n,gong4n);
                printf("防御装备:\n");
                printf("5,布衣(+10防) 当前:%d 6,铁甲(+20防) 当前:%d\n",fang1n,fang2n);
                printf("7,银甲(+40防) 当前:%d 8,黄金圣衣(+100防) 当前:%d\n",fang3n,fang4n);
                printf("0,返回\n");
                printf("===============================================\n");
                printf("请选择要装备的物品: ");
                
                scanf("%d",&choose_number);
                switch(choose_number)
                {
                    case 1:
                        if(gong1n >=1)
                        {
                            gong = gong1;
                            strcpy(gongname, "匕首");
                            SlowDisplay("装备了匕首!");
                        }
                        else
                        {
                            SlowDisplay("没有匕首可以装备!");
                        }
                        break;
                    case 2:
                        if(gong2n >=1)
                        {
                            gong = gong2;
                            strcpy(gongname, "长剑");
                            SlowDisplay("装备了长剑!");
                        }
                        else
                        {
                            SlowDisplay("没有长剑可以装备!");
                        }
                        break;
                    case 3:
                        if(gong3n >=1)
                        {
                            gong = gong3;
                            strcpy(gongname, "碧血剑");
                            SlowDisplay("装备了碧血剑!");
                        }
                        else
                        {
                            SlowDisplay("没有碧血剑可以装备!");
                        }
                        break;
                    case 4:
                        if(gong4n >=1)
                        {
                            gong = gong4;
                            strcpy(gongname, "绝世好剑");
                            SlowDisplay("装备了绝世好剑!");
                        }
                        else
                        {
                            SlowDisplay("没有绝世好剑可以装备!");
                        }
                        break;
                    case 5:
                        if(fang1n >=1)
                        {
                            fang = fang1;
                            strcpy(fangname, "布衣");
                            SlowDisplay("装备了布衣!");
                        }
                        else
                        {
                            SlowDisplay("没有布衣可以装备!");
                        }
                        break;
                    case 6:
                        if(fang2n >=1)
                        {
                            fang = fang2;
                            strcpy(fangname, "铁甲");
                            SlowDisplay("装备了铁甲!");
                        }
                        else
                        {
                            SlowDisplay("没有铁甲可以装备!");
                        }
                        break;
                    case 7:
                        if(fang3n >=1)
                        {
                            fang = fang3;
                            strcpy(fangname, "银甲");
                            SlowDisplay("装备了银甲!");
                        }
                        else
                        {
                            SlowDisplay("没有银甲可以装备!");
                        }
                        break;
                    case 8:
                        if(fang4n >=1)
                        {
                            fang = fang4;
                            strcpy(fangname, "黄金圣衣");
                            SlowDisplay("装备了黄金圣衣!");
                        }
                        else
                        {
                            SlowDisplay("没有黄金圣衣可以装备!");
                        }
                        break;
                    case 0:
                        break;
                    default:
                        SlowDisplay("输入错误!");
                }
                break;
                
            case 6: // 关于游戏
                SlowDisplay("苍穹世界 2.2 正式版");
                SlowDisplay("游戏背景:雅莉亚王国的罗茜公主被使徒绑架,你需要击败魔物,救出公主!");
                SlowDisplay("隐藏彩蛋:创建角色时输入“神斗士”可获得无敌属**!");
                SlowDisplay("按任意键继续...");
                getchar();
                getchar();
                break;
                
            case 7: // 保存游戏
                SaveGame();
                break;
                
            case 8: // 加载游戏
                LoadGame();
                return; // 加载后重新进入主菜单
                
            case 0: // 退出游戏
                SlowDisplay("确定退出游戏?(Y/N)");
                getchar();
                proof=getchar();
                if(proof=='y'||proof=='Y')
                {
                    SlowDisplay("正在保存数据...");
                    SaveGame();
                    SlowDisplay("按回车退出游戏...");
                    getchar();
                    exit(0);
                }
                else
                {
                    SlowDisplay("继续游戏!");
                }
                break;
                
            default:
                SlowDisplay("输入错误,请重新选择!");
        }
        
        // 操作后暂停,提升体验
        if(choose_number != 4 && choose_number != 0)
        {
            SlowDisplay("\n按任意键继续...");
            getchar();
            getchar();
        }
    }
}

// 主函数
int main()
{
    char player_name[21];
    
    system("chcp 65001"); // 解决中文乱码
    Sleep(1000);
    SlowDisplay("--------------------------欢迎来到 [苍穹世界] 2.2 正式版-----------------------");
    Sleep(1000);
    SlowDisplay("这里是苍穹世界! 雅莉亚王国的罗茜公主被陌生人绑架了!");
    SlowDisplay("伟大的勇者啊~拿起你们的武器,营救公主!");
    SlowDisplay("输入你的名字: (最多20个字符)");
    
    scanf("%s", player_name);
    strncpy(player.name, player_name, 20);
    
    // 隐藏彩蛋
    if(strcmp(player.name,"神斗士")==0)
    {
        SlowDisplay("\n封印多年的圣剑血统啊!你终于觉醒了!");
        SlowDisplay("神斗士,你成为了天选之人,请你救出公主吧!");
        player.attack=999;
        player.defense=999;
        player.health=9999;
        player.max_health=9999;
        money = 99999;
    }
    
    getchar();
    OrdinaryAct();
    
    return 0;
}


0
0
于行衍
于行衍
中级天翼
中级天翼

好玩,就是太长了,容易**机

0
我要回答