游戏 秘境

#include<iostream>
#include<windows.h>
#include<cmath>
#include<conio.h>
#include<time.h>
void cls(){system("cls");}
void color(int a){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}
using namespace std;
typedef long long ll;
typedef char c;
typedef string s;
ll probability,start,gold,accumulate,NOT,dodge,atk,CD_1,CD_2,fault,freeze,burn,thing=2,reborn;
c answer,boss;
s ji_neng_1_name[5]= {"三连斩","怒攻","瞬杀","穿心","强击"};
s ji_neng_2_name[5]= {"雪刺","磐石古盾","神隐","万箭","寒冰"};
s ji_neng_3_name[5]= {"死战","反刺","隐瞬","利箭","冰魔"};
s ji_neng_1_explain[5]= {"连续攻击三次(无视怪物闪避/抵挡,本身暴击)","造成100伤害","如果怪物血量低于闪避则将其斩杀","造成暴击率+暴击量的伤害","造成魔法值双倍的伤害"};
s ji_neng_2_explain[5]= {"造成的伤害转化为回血(无视怪物闪避/抵挡,本身暴击)","抵挡本次伤害","若闪避则将怪物斩杀","造成100-怪物闪避的伤害","50%概率冰冻一回合并造成魔法值等量的伤害"};
s ji_neng_3_explain[5]= {"造成的伤害增加血量上限-血量","抵挡时怪物受到四分之一的基本伤害","若闪避则攻击乘2","怪物防御减少一半","法师的技能没有冷却,但由魔法值发起"};
s mission[5]= {"任务一:升到5级","任务二:升到10级","任务三:通过副本:巨魔堡垒","任务四:通过副本:瞬影森林","任务五:通过副本:熔岩之地"};
s thing_name[3]= {"双刃斧碎片","双刃斧图纸"};
s daybook[11]={"我不知道我的名字,森林在召唤我,我必须去看看......","我迷路了,这里只有怪物......","怪物无处不在,这里只有黑夜......","远方有一处亮光,我使劲地跑......","我找到他了,死神......","我好冷,身上的火柴也没了......","这是什么?这到底是什么?","我错了,废墟上什么也没有......","我无助地望向远方......","这里有本书,神话......","我明白了,这就是我的使命!"};
int main();
struct status{
    ll ATK,DEF,HP,HPM,CTH,CTP,SPD,HEL,LEV,MP,EXP;
    c JOB;
} status;
struct player{
    ll WEO,AMR,SWEO,GOLD,SKL1,SKL2,DURW,DURA,POTION,SWORD,DMG,LVW,LVA,MSN,THG[3];
} player;
struct monster{
    ll ATK,DEF,HP,HPM,CTH,CTP,SPD,DMG,LEV,LVB,HEL,TYPE;
} monster;
void type (s a, ll x){
    for(int j=0; j<=a.length(); j++)
        cout<<a[j],Sleep(x);
}
void clean (){
    Sleep(500);
    system("cls");
}
void save (){
    freopen("game_save.txt","w",stdout);
    cout<<status.ATK<<" "<<status.DEF<<'\n';
    cout<<status.HP<<" "<<status.HPM<<'\n';
    cout<<status.CTH<<" "<<status.CTP<<'\n';
    cout<<status.SPD<<'\n';
    cout<<status.HEL<<'\n';
    cout<<status.LEV<<" "<<status.EXP<<'\n';
    cout<<status.JOB<<'\n';
    cout<<player.WEO<<" "<<player.AMR<<" "<<player.SWEO<<'\n';
    cout<<player.GOLD<<'\n';
    cout<<player.SKL1<<" "<<player.SKL2<<'\n';
    cout<<player.DURW<<" "<<player.DURA<<'\n';
    cout<<player.SWORD<<" "<<player.POTION<<'\n';
    cout<<monster.LEV<<" "<<monster.LVB<<'\n';
    for(int j=0; j<=thing-1; j++)
        cout<<player.THG[j]<<" ";
    exit(0);
}
void equipment(){
    type("武器:",10);
    if(player.WEO==0)
        type("无; ",10);
    if(player.WEO==1)
        type("普通的武器; ",10);
    if(player.WEO==2)
        if(status.JOB=='4')
            type("巨力神弓; ",10);
        else if(status.JOB=='5')
            type("强杖; ",10);
        else
            type("狂暴之刃; ",10);
    if(player.WEO==3)
        if(status.JOB=='4')
            type("血弩; ",10);
        else if(status.JOB=='5')
            type("万圣杖",10);
        else
            type("嗜血怒戟; ",10);
    cout<<'\n';
    type("武器耐久度:",10);
    cout<<player.DURW<<'\n';
    type("武器等级:",10);
    cout<<player.LVW<<"级"<<'\n';
    type("防具:",10);
    if(player.AMR==0)
        type("无; ",10);
    if(player.AMR==1)
        type("普通的防具; ",10);
    if(player.AMR==2)
        type("神速闪避靴; ",10);
    if(player.AMR==3)
        type("圣光回血盾; ",10);
    cout<<'\n';
    type("防具耐久度:",10);
    cout<<player.DURA<<'\n';
    type("防具等级:",10);
    cout<<player.LVA<<"级"<<'\n';
}
void death (){
    clean();
    if(monster.HP!=0)
        type("你将要死了……",10);
    else
        type("同归于尽……",10);
    cout<<'\n';
    if(player.GOLD>=20){
        type("死神拿走了你的20个金币......",10);
        player.GOLD-=20;
        type("你满血复活!!!!!!!",20);
        status.HP=status.HPM;
        return;
    }
    type("有什么遗言吗?",10);
    cout<<'\n';
    cin>>answer;
    type("The End",10);
    exit(0);
}
void war(){
    type("怪物攻击:",10);
    cout<<monster.ATK<<'\n';
    type("怪物防御:",10);
    cout<<monster.DEF<<'\n';
    type("怪物血量:",10);
    cout<<monster.HP<<'\n';
    type("怪物暴击率:",10);
    cout<<monster.CTP<<"%"<<'\n';
    type("怪物暴击量:",10);
    cout<<monster.CTH<<"%"<<'\n';
    type("怪物闪避率:",10);
    cout<<monster.SPD<<"%"<<'\n';
    type("怪物等级:",10);
    cout<<monster.LVB<<'\n';
    type("怪物回血:",10);
    cout<<monster.HEL<<'\n';
    Sleep(200);
    CD_1=0;
    CD_2=0;
    NOT=1;
    accumulate=0;
    status.MP=100;
    while(1){
        clean();
        dodge=0;
        player.DMG=0;
        monster.DMG=0;
        if(CD_1!=0)
            CD_1--;
        if(CD_2!=0)
            CD_2--;
        if(freeze!=0)
            freeze--;
        if(status.JOB=='4')
            monster.DEF/=2;
        if(status.HP==0)
            death();
        if(monster.HP==0)
            return;
error:
        fault=0;
        probability=(rand()%3)+1;
        type("怪物攻击:",10);
        cout<<monster.ATK<<'\n';
        type("怪物防御:",10);
        cout<<monster.DEF<<'\n';
        type("怪物血量:",10);
        cout<<monster.HP<<'\n';
        cout<<'\n';
        type("你的攻击:",10);
        cout<<status.ATK<<'\n';
        type("你的防御:",10);
        cout<<status.DEF<<'\n';
        type("你的血量:",10);
        cout<<status.HP<<'\n';
        if(status.JOB=='5')
            cout<<"魔法值:"<<status.MP<<'\n';
        cout<<'\n';
        type("0,逃跑;1,攻击;2,防御;",10);
        if(player.SWEO>0&&NOT==1)
            type("3,神兵",10);
        cout<<'\n';
        type("a:",10);
        if(status.JOB=='5')
            if(status.MP>=20)
                type(ji_neng_1_name[4],10);
            else
                cout<<"魔法值不够";
        else
            if(CD_1==0)
                type(ji_neng_1_name[status.JOB-'0'-1],10);
            else
                cout<<"冷却"<<CD_1<<"回合;";
        type("b:",10);
        if(status.JOB=='5')
            if(status.MP>=25)
                type(ji_neng_2_name[4],10);
            else
                cout<<"魔法值不够";
        else
            if(CD_2==0)
                type(ji_neng_2_name[status.JOB-'0'-1],10);
            else
                cout<<"冷却"<<CD_2<<"回合;";
        cout<<'\n';
        answer=_getch();
        if(answer=='0')
            return;
        if(boss=='3'&&probability==2){
            type("焚世!",10);
            cout<<'\n';
            type("灼伤!",10);
            cout<<'\n';
            burn=1;
        }
        else if(probability!=0&&freeze!=1)
            if(((rand()%100)+1)>status.SPD){
                if(((rand()%100)+1)<=monster.CTP){
                    monster.DMG=monster.ATK+monster.ATK/(100/monster.CTH);
                    type("怪物暴击!",10);
                    cout<<'\n';
                }else{
                    monster.DMG=monster.ATK;
                    if(monster.TYPE==2)
                        monster.DMG*=3;
                }
                if(answer=='2'){
                    monster.DMG=monster.ATK-status.DEF;
                    if(monster.DMG<=0){
                        monster.DMG=0;
                        type("抵挡!",10);
                        status.HP+=status.HEL;
                        status.HP=min(status.HP,status.HPM);
                        cout<<'\n';
                        if(status.JOB=='2')
                            monster.HP-=monster.ATK;
                    }
                }
            }else{
                type("闪避!",10);
                dodge=1;
                cout<<'\n';
            }
        if(answer=='1')
            if(((rand()%100)+1)>monster.SPD){
                player.DMG=status.ATK;
                if(status.JOB=='1')
                    player.DMG+=status.HPM-status.HP;
                if(((rand()%100)+1)<=status.CTP){
                    player.DMG+=status.ATK/(100/status.CTH);
                    type("暴击!",10);
                    cout<<'\n';
                }
                if(probability==0&&freeze!=1){
                    player.DMG-=monster.DEF;
                    if(player.DMG<=0){
                        player.DMG=0;
                        type("怪物抵挡!",10);
                        monster.HP+=monster.HEL;
                        cout<<'\n';
                    }
                }
                if(player.WEO==3){
                    status.HP+=player.DMG/2;
                    status.HP=min(status.HP,status.HPM);
                    type("嗜血!",10);
                    cout<<'\n';
                }
            }
            else{
                type("怪物闪避!",10);
                cout<<'\n';
            }
        if(answer=='3'&&NOT==1){
            NOT--;
            if(player.SWEO==1){
                type("巨人之锤!",10);
                cout<<'\n';
                if(rand()%100<monster.SPD){
                    type("怪物闪避!",10);
                    cout<<'\n';
                }
                else{
                    player.DMG=status.LEV*4;
                    if(player.WEO==3){
                        status.HP+=status.LEV;
                        if(status.HP>status.HPM)
                            status.HP=status.HPM;
                    }
                    if(probability==1){
                        player.DMG=status.LEV*4-monster.DEF;
                        if(player.DMG<=0){
                            player.DMG=0;
                            type("怪物抵挡!",10);
                            cout<<'\n';
                        }
                    }
                }
            }
            if(player.SWEO==2){
                monster.HP/=2;
                type("创伤之剑!",10);
                cout<<'\n';
            }
            if(player.SWEO==3){
                type("请输入攻击值",10);
                cout<<'\n';
                cin>>atk;
                monster.HP-=atk*2;
                status.HP-=atk;
                monster.DMG=0;
                type("双刃斧!",10);
                cout<<'\n';
            }
        }
        if(dodge==1&&status.JOB=='3')
            player.DMG*=2;
        if(answer=='a')
            if(status.JOB=='5')
                if(status.MP>=20){
                    cout<<ji_neng_1_name[4]<<"!"<<'\n';
                    status.MP-=20;
                    monster.HP-=status.MP*2;
                }else{
                    cout<<"魔法值不够!"<<'\n';
                    fault=1;
                }
            else
                if(CD_1==0){
                    CD_1=4;
                    cout<<ji_neng_1_name[status.JOB-'0'-1]<<"!"<<'\n';
                    if(status.JOB=='1')
                        player.DMG=3*status.ATK;
                    else if(status.JOB=='2')
                        player.DMG=100;
                    else if(status.JOB=='3')
                        if(status.SPD>=monster.HP)
                            monster.HP=0;
                    else
                        player.DMG=status.CTH+status.CTP;
                }
                else{
                    cout<<"一技能冷却中!"<<'\n';
                    fault=1;
                }
        if(answer=='b'&&CD_2==0)
            if(status.JOB=='5')
                if(status.MP>=25){
                    status.MP-=25;
                    cout<<ji_neng_2_name[4]<<"!"<<'\n';
                    if(rand()%2==1){
                        type("冰冻!",10);
                        freeze=2;
                        monster.HP-=status.MP;
                    }
                }
                else{
                    cout<<"魔法值不够!"<<'\n';
                    fault=1;
                }
            else
                if(CD_2==0){
                    CD_2=6;
                    cout<<ji_neng_2_name[status.JOB-'0'-1]<<"!"<<'\n';
                    if(status.JOB=='1'){
                        player.DMG=status.ATK;
                        status.HP+=status.ATK;
                        status.HP=min(status.HP,status.HPM);
                    }
                    else if(status.JOB=='2'){
                        monster.DMG=0;
                    }
                    else if(status.JOB=='3')
                        if(dodge==1)
                            monster.HP=0;
                    else
                        player.DMG=100-monster.SPD;
                }
                else{
                    cout<<"二技能冷却中!"<<'\n';
                    fault=1;
                }
        if(answer!='1'&&answer!='2'&&answer!='3'&&answer!='a'&&answer!='b')
            fault=1;
        if(fault==1)
            goto error;
        status.MP+=5;
        if(status.MP>100)
            status.MP=100;
        if(monster.TYPE==1)
            player.DMG/=2;
        status.HP-=monster.DMG;
        monster.HP-=player.DMG;
        if(burn==1)
        {
            burn=0;
            status.HP-=monster.DMG/5;
        }
        if(status.HP<0)
            status.HP=0;
        if(monster.HP<0)
            monster.HP=0;
        if(status.JOB=='4')
            monster.DEF/=2;
    }
}
void fight ()
{
    monster.TYPE=rand()%3;
    monster.ATK=(rand()%15)+monster.LEV;
    monster.DEF=(rand()%40)+monster.LEV*2;
    monster.HP=(rand()%200)+monster.LEV*8;
    monster.HPM=(rand()%200)+monster.LEV*8;
    monster.CTP=rand()%50;
    monster.CTH=rand()%50;
    monster.SPD=rand()%50;
    monster.HEL=rand()%50;
    gold=(monster.ATK+monster.HP+monster.LEV)/2;
    type("怪物种类:",10);
    cout<<'\n';
    if(monster.TYPE==0)
    {
        type("普通怪物",10);
        cout<<'\n';
    }
    if(monster.TYPE==1)
    {
        type("法盾怪物",10);
        cout<<'\n';
    }
    if(monster.TYPE==2)
    {
        type("巨锤怪物",10);
        cout<<'\n';
    }
    war();
    if(monster.HP==0)
    {
        monster.LEV++;
        status.EXP++;
        if(status.EXP==status.LEV)
        {
            type("升级!",10);
            type("已解锁新的剧情!",10);
            status.LEV++;
            status.ATK++;
            status.DEF++;
            status.HPM++;
            status.EXP=0;
            status.HP=status.HPM;
        }
        cout<<'\n';
        if(status.LEV%10==0)
        {
            status.HP=status.HPM;
            type("回复至满!",10);
            cout<<'\n';
        }
        if(status.LEV==5)
        {
            type("死亡商店已开启!",10);
            cout<<'\n';
        }
        if(status.LEV==10)
        {
            type("BOSS已开启!",10);
            cout<<'\n';
        }
        if(monster.TYPE==2&&player.WEO!=2){
            type("怪物掉落了一把武器,你是否拾取?(按1)",10);
            cout<<'\n';
            answer=_getch();
            if(answer=='1'){
                type("你获得了一把武器",10);
                cout<<'\n';
                player.WEO=2;
                player.DURW=10;
                status.ATK+=10;
                status.CTH+=20;
                status.CTP+=20;
            }
        }
        type("金币+",10);
        cout<<gold<<"$"<<'\n';
        player.GOLD+=gold;
        answer=0;
        if(player.DURW!=0)
            player.DURW--;
        if(player.DURA!=0)
            player.DURA--;
        if(player.DURW==0&&player.WEO!=0){
            status.ATK-=player.WEO*5;
            if(player.WEO==2){
                status.CTH-=20;
                status.CTP-=20;
            }
            status.ATK-=player.LVW;
            player.LVW=0;
            player.WEO=0;
            type("武器磨损!",10);
            cout<<'\n';
        }
        if(player.DURA==0&&player.AMR!=0){
            status.DEF-=player.AMR*10;
            status.HPM-=player.AMR*10;
            status.HEL-=player.AMR*10;
            if(status.HP>status.HPM)
                status.HP=status.HPM;
            if(player.AMR==2)
                status.SPD-=20;
            if(player.AMR==3)
                status.HEL-=10;
            status.DEF-=player.LVA;
            status.HPM-=player.LVA;
            status.HEL-=player.LVA;
            player.LVA=0;
            player.AMR=0;
            type("防具磨损!",10);
            cout<<'\n';
        }
        if(monster.TYPE==0){
            type("你获得了一块碎片",10);
            cout<<'\n';
            player.THG[0]++;
        }
    }
    else{
        type("你成功逃跑,但在逃跑过程中撒了一地金币……",10);
        cout<<'\n';
        player.GOLD/=2;
        if(status.HP>=status.HPM/2&&player.AMR!=3){
            type("你在逃跑过程中找到了一副防具,要不要拾取?(按1)",10);
            cout<<'\n';
            answer=_getch();
            if(answer=='1'){
                type("你获得了一副防具",10);
                cout<<'\n';
                player.AMR=3;
                player.DURA=15;
                status.HEL+=40;
                status.DEF+=30;
            }
        }
    }
    clean();
}
void shop (){
    while(1){
        type("你有:",10);
        cout<<"$"<<player.GOLD<<'\n';
        type("1,血瓶(+20血量),",10);
        cout<<"$"<<player.POTION<<";"<<'\n';
        type("2,",10);
        if(player.SWORD==0)
            type("创伤之剑",10);
        else
            type("普通的武器",10);
        type(",$50;",10);
        cout<<'\n';
        type("3,普通的防具,$50",10);
        cout<<'\n';
        type("4,双刃斧碎片,$50",10);
        cout<<'\n';
        type("5,双刃斧图纸,$",10);
        cout<<max(0,int(200-10*player.THG[0]))<<'\n';
        type("按0退出",10);
        cout<<'\n';
        answer=_getch();
        if(answer=='1')
            if(player.GOLD>=player.POTION)
                if(status.HP==status.HPM){
                    type("血满了",10);
             	   clean(); 
                }else{
                    status.HP+=20;
                    if(status.HP>status.HPM)
                        status.HP=status.HPM;
                    player.GOLD-=player.POTION;
                    type("购买成功",10);
  	            	clean(); 
                    player.POTION+=5;
                }
            else{
                type("钱不够",10);
                clean(); 
            }
        if(answer=='2')
            if(player.GOLD>=50){
                if(player.SWORD==0){
                    player.SWEO=2;
                    player.GOLD-=50;
                    type("购买成功",10);
        	        clean();
                }else{
                    player.WEO=1;
                    player.DURW=5;
                    player.GOLD-=50;
                    status.ATK+=5;
                    type("购买成功",10);
                	clean();
                }
                player.SWORD=rand()%4;
            }
            else{
                type("钱不够",10);
                clean();
            }
        if(answer=='3')
            if(player.GOLD>=50){
                player.GOLD-=50;
                player.AMR=1;
                player.DURA=5;
                status.HPM+=10;
                status.DEF+=10;
                status.HEL+=10;
                type("购买成功",10);
                clean();
            }else{
                type("钱不够",10);
                clean();
            }
        if(answer=='4')
            if(player.GOLD>=50){
                player.GOLD-=50;
                player.THG[0]++;
                type("购买成功",10);
                clean();
            }else{
                type("钱不够",10);
                clean();
            }
        if(answer=='5')
            if(player.GOLD>=max(0,int(200-10*player.THG[0]))){
                player.GOLD-=200-10*player.THG[0];
                player.THG[1]++;
                type("购买成功",10);
                clean();
            }else{
                type("钱不够",10);
                clean();
            }
        if(answer=='0'){
            clean();
            break;
        }
    }
}
void backpack (){
    while(1){
        type("职业:",10);
        if(status.JOB=='1')
            type("战士",10);
        else if(status.JOB=='2')
            type("坦克",10);
        else if(status.JOB=='3')
            type("刺客",10);
        else if(status.JOB=='4')
            type("射手",10);
        else
            type("法师",10);
        cout<<'\n';
        type("攻击:",10);
        cout<<status.ATK<<" ";
        type("防御:",10);
        cout<<status.DEF<<'\n';
        type("血量:",10);
        cout<<status.HP<<" ";
        type("血量上限:",10);
        cout<<status.HPM<<'\n';
        type("暴击率:",10);
        cout<<status.CTP<<"%"<<" ";
        type("暴击量:",10);
        cout<<status.CTH<<"%"<<'\n';
        type("回血:",10);
        cout<<status.HEL<<" ";
        type("闪避:",10);
        cout<<status.SPD<<"%"<<'\n';
        type("金币:",10);
        cout<<player.GOLD<<" "<<'\n';
        type("等级:",10);
        cout<<status.LEV<<" ";
        type("经验:",10);
        cout<<status.EXP<<"/"<<status.LEV<<'\n';
        type("经验进度:",10);
        cout<<round(status.EXP/status.LEV*100)<<"%"<<'\n';
        cout<<'\n';
        equipment();
        type("神兵:",10);
        if(player.SWEO==1){
            type("巨人之锤",10);
            cout<<'\n';
        }
        if(player.SWEO==2){
            type("创伤之剑",10);
            cout<<'\n';
        }
        if(player.SWEO==3){
            type("双刃斧",10);
            cout<<'\n';
        }
        if(player.SWEO==0){
            type("无",10);
            cout<<'\n';
        }
        cout<<'\n';
        type("背包:",10);
        cout<<'\n';
        for(int j=0; j<=thing-1; j++)
            if(player.THG[j]>0)
                cout<<thing_name[j]<<":"<<player.THG[j]<<'\n';
        cout<<'\n';
        type("任务:",10);
        cout<<'\n';
        if(player.MSN==4){
            type("任务全部完成!",10);
            clean(); 
        }
        else
            cout<<mission[player.MSN]<<'\n';
        cout<<'\n';
        type("按0退出",10);
        cout<<'\n';
        answer=_getch();
        if(answer=='0'){
            clean();
            break;
        }
    }
}
void skill (){
    while(1){
        type("你有$",10);
        cout<<player.GOLD<<'\n';
        type("1,天龙之击:",10);
        cout<<player.SKL1<<"级"<<'\n';
        if(player.SKL1==0)
            type("100$,",10);
        else
            cout<<player.SKL1*10<<"$,";
        type("每升一级攻击加5",10);
        cout<<'\n';
        type("2,圣光之力:",10);
        cout<<player.SKL2<<"级"<<'\n';
        if(player.SKL2==0)
            type("100$,",10);
        else
            cout<<player.SKL2*10<<"$,";
        type("每升一级回血加5",10);
        cout<<'\n';
        cout<<'\n';
        type("自带技能:",10);
        cout<<'\n';
        type("主动技能:",10);
        cout<<'\n';
        type(ji_neng_1_name[status.JOB-'0'-1],10);
        cout<<":";
        type(ji_neng_1_explain[status.JOB-'0'-1],10);
        cout<<'\n';
        type(ji_neng_2_name[status.JOB-'0'-1],10);
        cout<<":";
        type(ji_neng_2_explain[status.JOB-'0'-1],10);
        cout<<'\n';
        type("被动技能:",10);
        cout<<'\n';
        type(ji_neng_3_name[status.JOB-'0'-1],10);
        cout<<":";
        type(ji_neng_3_explain[status.JOB-'0'-1],10);
        cout<<'\n';
        type("按0退出",10);
        cout<<'\n';
        answer=_getch();
        if(answer=='1')
            if(player.SKL1==0)
                if(player.GOLD>=100){
                    player.GOLD-=100;
                    player.SKL1=1;
                    status.ATK+=5;
                    type("获得技能!",10);
                    clean();
                }else{
                    type("钱不够",10);
                    clean();
                }
            else
                if(player.GOLD>=player.SKL1*10){
                    player.GOLD-=player.SKL1*10;
                    player.SKL1++;
                    status.ATK+=5;
                    type("技能升级!",10);
                    clean();
                }else{
                    type("钱不够",10);
                    clean();
                }
        if(answer=='2')
            if(player.SKL2==0)
                if(player.GOLD>=100){
                    player.GOLD-=100;
                    player.SKL2=1;
                    status.HEL+=5;
                    type("获得技能!",10);
                    clean();
                }else{
                    type("钱不够",10);
                    clean();
                }
            else
                if(player.GOLD>=player.SKL2*10){
                    player.GOLD-=player.SKL2*10;
                    player.SKL2++;
                    status.HEL+=5;
                    type("技能升级!",10);
                    clean();
                }else{
                    type("钱不够",10);
                    clean();
                }
        if(answer=='0'){
            clean();
            break;
        }
    }
}
void forge(){
    while(1){
        equipment();
        type("1,修复装备;",10);
        cout<<'\n';
        type("2,升级装备;",10);
        cout<<'\n';
        type("3,制造装备;",10);
        cout<<'\n';
        type("按0退出",10);
        cout<<'\n';
        answer=_getch();
        clean();
        if(answer=='1'){
            type("1,修复武器:",10);
            cout<<'\n';
            cout<<"$"<<(player.WEO*4-player.DURW)*10;
            cout<<'\n';
            type("2,修复防具:",10);
            cout<<'\n';
            cout<<"$"<<(player.AMR*4-player.DURA)*10;
            cout<<'\n';
            answer=_getch();
            if(answer=='1')
                if(player.GOLD>=(player.WEO*4-player.DURW)*10){
                    type("修复成功!",10);
                    player.GOLD-=(player.WEO*4-player.DURW)*10;
                    player.DURW=player.WEO*4;
                }
                else
                    type("钱不够",10);
            if(answer=='2')
                if(player.GOLD>=(player.AMR*4-player.DURA)*10){
                    type("修复成功!",10);
                    player.GOLD-=(player.AMR*4-player.DURA)*10;
                    player.DURA=player.AMR*4;
                }
                else
                    type("钱不够",10);
            answer=' ';
            clean();
        }
        if(answer=='2'){
            type("1,升级武器:",10);
            cout<<'\n';
            cout<<"$"<<(player.LVW+1)*10;
            cout<<'\n';
            type("2,升级防具:",10);
            cout<<'\n';
            cout<<"$"<<(player.LVA+1)*10;
            cout<<'\n';
            answer=_getch();
            if(answer=='1')
                if(player.GOLD>=(player.LVW+1)*10){
                    type("升级成功!",10);
                    player.GOLD-=(player.LVW+1)*10;
                    player.LVW++;
                    status.ATK++;
                }
                else
                    type("钱不够",10);
            if(answer=='2')
                if(player.GOLD>=(player.LVA+1)*10){
                    type("修复成功!",10);
                    player.GOLD-=(player.LVA+1)*10;
                    player.LVA++;
                    status.DEF++;
                    status.HPM++;
                    status.HEL++;
                }
                else
                    type("钱不够",10);
            clean();
            answer=' ';
        }
        if(answer=='3'){
            type("1,制造双刃斧",10);
            cout<<'\n';
            type("需要:双刃斧碎片*10;双刃斧图纸*1;金币*100;",10);
            cout<<'\n';
            type("按0退出;",10);
            cout<<'\n';
            answer=_getch();
            if(answer=='1')
                if(player.THG[0]>=10&&player.THG[1]>=1&&player.GOLD>=100){
                    type("制造成功!",10);
                    cout<<'\n';
                    player.THG[0]-=10;
                    player.THG[1]-=1;
                    player.GOLD-=100;
                    player.SWEO=3;
                }
                else{
                    type("原料不足",10);
                    cout<<'\n';
                }
            clean();
        }
        if(answer=='0')
            break;
    }
}
void deathshop (){
    type("欢迎来到神秘的死亡商店",10);
    cout<<'\n';
    type("在这里你得用血量来买东西",10);
    cout<<'\n';
    while(1){
        type("血量:",10);
        cout<<status.HP<<'\n';
        type("1,神速闪避靴,价值:",10);
        cout<<status.HP/2<<'\n';
        type("2,升级瓶,价值:",10);
        cout<<status.LEV*2<<'\n';
        if(status.JOB=='4')
            type("3,血弩,价值:",10);
        else if(status.JOB=='5')
            type("3,血杖,价值:",10);
        else
            type("3,嗜血怒戟,价值:",10);
        cout<<pow((player.WEO+1)*5,2)<<'\n';
        type("按0退出",10);
        cout<<'\n';
        answer=_getch();
        if(answer=='1'&&player.AMR!=2){
            status.HP=status.HP-status.HP/2;
            type("消费成功",10);
            cout<<'\n';
            player.AMR=2;
            player.DURA=10;
            status.HPM+=20;
            status.HEL+=20;
            status.SPD+=20;
        }
        if(answer=='2')
            if(status.HP<=status.LEV*2){
                type("命不够",10);
                cout<<'\n';
            }else{
                type("消费成功",10);
                cout<<'\n';
                status.HP=status.HP-status.LEV*2;
                status.LEV++;
                status.EXP=0;
                status.ATK++;
                type("升级!",10);
                cout<<'\n';
                if(player.MSN==1&&status.LEV==10){
                    type("任务二已完成!",10);
                    cout<<'\n';
                    type("金币+100",10);
                    cout<<'\n';
                    player.GOLD+=100;
                    player.MSN++;
                }
                if(status.LEV==10){
                    type("BOSS已开启!",10);
                    cout<<'\n';
                }
            }
        if(answer=='3')
            if(status.HP<=pow((player.WEO+1)*5,2)){
                type("命不够",10);
                cout<<'\n';
            }
            else{
                type("消费成功",10);
                cout<<'\n';
                status.HP-=pow((player.WEO+1)*5,2);
                player.WEO=3;
                player.DURW=15;
                status.ATK+=15;
            }
        if(answer=='0'){
            clean();
            break;
        }
    }
}
void BOSS (){
    NOT=1;
boss:
    type("你要挑战哪个副本?",10);
    cout<<'\n';
    type("1,巨魔堡垒;",10);
    cout<<'\n';
    type("2,瞬影森林;",10);
    cout<<'\n';
    type("3,熔岩之地;",10);
    boss=_getch();
    if(boss=='1'){
        type("这座堡垒现在已经废弃,不知这里曾经的主人在哪里...",20);
        cout<<'\n';
        type("午夜时分",20);
        cout<<'\n';
        type("传出一声怒吼",20);
        cout<<'\n';
        type("瘫倒的堡垒开始颤抖...",20);
        cout<<'\n';
        monster.ATK=80+monster.LVB*5;
        monster.DEF=60+monster.LVB*5;
        monster.HP=200+monster.LVB*5;
        monster.HPM=200+monster.LVB*5;
        monster.CTP=40;
        monster.CTH=40;
        monster.SPD=10;
        monster.HEL=20+monster.LVB*5;
    }
    else if(boss=='2'){
        type("森林一直不太宁静",20);
        cout<<'\n';
        type("总是发出如风扫过的声音",20);
        cout<<'\n';
        type("然后一个灵魂就消失在这森林里...",20);
        cout<<'\n';
        monster.ATK=45+monster.LVB*5;
        monster.DEF=45+monster.LVB*5;
        monster.HP=100+monster.LVB*5;
        monster.HPM=100+monster.LVB*5;
        monster.CTP=10;
        monster.CTH=10;
        monster.SPD=50;
        monster.HEL=20+monster.LVB*5;
    }
    else if(boss=='3'){
        type("这里只有熔岩...",20);
        cout<<'\n';
        type("这里只有熔岩?",20);
        cout<<'\n';
        monster.ATK=60+monster.LVB*5;
        monster.DEF=50+monster.LVB*5;
        monster.HP=150+monster.LVB*5;
        monster.HPM=150+monster.LVB*5;
        monster.CTP=30;
        monster.CTH=30;
        monster.SPD=25;
        monster.HEL=15+monster.LVB*5;
    }
    else
        goto boss;
    war();
    if(boss=='1'&&player.MSN==1){
        type("任务三已完成!",10);
        cout<<'\n';
        type("是否领取神兵?(按1)",10);
        cout<<'\n';
        answer=_getch();
        if(answer=='1'){
            type("你获得了一把神兵",10);
            cout<<'\n';
            player.SWEO=1;
        }
        player.MSN++;
    }
    if(boss=='2'&&player.MSN==2){
        type("任务四已完成!",10);
        cout<<'\n';
        type("升一级!",10);
        cout<<'\n';
        status.EXP=0;
        status.LEV++;
        status.ATK++;
        status.HPM++;
        status.DEF++;
        player.MSN++;
        status.HP=status.HPM;
    }
    if(boss=='2'&&player.AMR!=2){
        type("怪物掉落了一套防具,你是否拾取?(按1)",10);
        cout<<'\n';
        cin>>answer;
        if(answer=='1'){
            type("你获得了一套防具",10);
            cout<<'\n';
            player.AMR==2;
        }
    }
    if(boss=='3'&&player.MSN==3){
        type("任务五已完成!",10);
        cout<<'\n';
        type("升二级!",10);
        cout<<'\n';
        type("金币+200$",10);
        cout<<'\n';
        status.EXP=0;
        status.LEV+=2;
        status.ATK+=2;
        status.HPM+=2;
        status.DEF+=2;
        player.GOLD+=200;
        player.MSN++;
        status.HP=status.HPM;
    }
    boss=0;
    status.EXP=0;
    status.LEV++;
    status.ATK++;
    status.HPM++;
    status.DEF++;
    player.GOLD+=100;
    status.HP=status.HPM;
    type("升级!",10);
    cout<<'\n';
    type("金币+100$",10);
    cout<<'\n';
    if(player.DURW!=0)
        player.DURW-=5;
    if(player.DURA!=0){
        player.DURA-=5;
        if(player.DURW<=0&&player.WEO==0){
            status.ATK-=player.WEO*10;
            if(player.WEO==2){
                status.CTH-=20;
                status.CTP-=20;
            }
            status.ATK-=player.LVW;
            player.LVW=0;
            player.WEO=0;
            type("武器磨损!",10);
            cout<<'\n';
        }
        if(player.DURA<=0&&player.AMR==0){
            status.DEF-=player.AMR*10;
            status.HPM-=player.AMR*10;
            status.HEL-=player.AMR*10;
            if(status.HP>status.HPM)
                status.HP=status.HPM;
            if(player.AMR==2)
                status.SPD-=20;
            if(player.AMR==3)
                status.HEL-=10;
            status.DEF-=player.LVA;
            status.HPM-=player.LVA;
            status.HEL-=player.LVA;
            player.LVA=0;
            player.AMR=0;
            type("防具磨损!",10);
            cout<<'\n';
        }
        monster.LVB+=20;
        monster.LEV+=10;
        answer=0;
        clean();
    }
}
void dictionary(){
    while(1){
        type("1,怪物图鉴",10);
        cout<<'\n';
        type("2,神兵图鉴",10);
        cout<<'\n';
        type("按0退出",10);
        answer=_getch();
        clean();
        if(answer=='1')
            while(1){
                type("1,普通怪物:掉落双刃斧碎片,无技能;",10);
                cout<<'\n';
                type("2,法盾怪物:受到的伤害减半;",10);
                cout<<'\n';
                type("3,巨锤怪物:掉落狂暴之刃/巨力神弓,第三次攻击伤害乘三;",10);
                cout<<'\n';
                type("按0退出(上面是编号)",10);
                clean(); 
                answer=_getch();
                if(answer=='0')
                    break;
            }
        if(answer=='2')
            while(1){
                type("1,巨人之锤:造成等级乘四的伤害;",10);
                cout<<'\n';
                type("2,创伤之剑:削去怪物一半的体力;",10);
                cout<<'\n';
                type("3,双刃斧:牺牲自己一定的体力,抵免怪物的伤害,并造成牺牲体力乘二的伤害;",10);
                cout<<'\n';
                type("按0退出(上面是编号)",10);
                clean(); 
                answer=_getch();
                if(answer=='0')
                    break;
            }
        if(answer=='0')
            break;
    }
}
void jq(){
    while(1){
        clean();
    type("你打开了你的背包......",10);
    cout<<"\n";
    type("1,打开日记",10);
    cout<<"\n";
    if(status.LEV>=5){
        type("2,打开从废墟里找到的一本破旧的笔记本",10);
        cout<<"\n";
    }
    if(status.LEV>=10){
        type("3,打开失落之城神话",10);
        cout<<"\n";
    }
    type("0,退出",10);
    cout<<"\n";
    char ttt=_getch();
    if(ttt=='0'){
        clean();return;
    }
    if(ttt=='1'){
        clean();
        for(int i=0;i<status.LEV;i++){
            cout<<daybook[i]<<endl;
            Sleep(100);
        }
        system("pause");
    }else if(ttt=='2'&&status.LEV>=5){
        clean();
        cout<<"我没有金钱,也没有权利......"<<endl;
        Sleep(100);
        cout<<"直到我遇到了他......"<<endl;
        Sleep(100);
        cout<<"死神......"<<endl;
        Sleep(100);
        cout<<"他给了我一切,却拿走了我亲人的性命......"<<endl;
        Sleep(100);
        cout<<"我恨他一辈子......"<<endl;
        Sleep(100);
        cout<<"直到那一天,他拿走了我的命......"<<endl;
        Sleep(100);
        cout<<"眼前一片黑暗......"<<endl;
        Sleep(100);
        system("pause");
    }else if(ttt=='3'&&status.LEV>=10){
        cout<<"上古时期,失落之城产生了3个大陆和3位神灵......"<<endl;
        Sleep(100);
        cout<<"风之大陆的狂风神......"<<endl;
        Sleep(100);
        cout<<"火之大陆的岩浆神......"<<endl;
        Sleep(100);
        cout<<"暗之大陆的幽灵神......"<<endl;
        Sleep(100);
        cout<<"直到那一天......"<<endl;
        Sleep(100);
        cout<<"3国战争不断,一位勇士挺身而出......"<<endl;
        Sleep(100);
        cout<<"他封印了3位神灵,葬身于大陆之下......"<<endl;
        Sleep(100);
        system("pause");
    }
}
}
void prep(){
    int t=0;
    while(t<100){
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"■■■■□□□□□□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□■■■■□□□□□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□□■■■■□□□□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□□□■■■■□□□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□□□□■■■■□□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□□□□□■■■■□"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"□□□□□□■■■■"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"■□□□□□□■■■"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"■■□□□□□□■■"<<endl;
        Sleep(1);
        cls();
        t++;
        cout<<"加载中 "<<t<<"%"<<endl;
        cout<<"■■■□□□□□□■"<<endl;
        Sleep(2);
    }
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■□□□□□□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■□□□□□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■■□□□□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■■■□□□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■■■■□□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■■■■■□"<<endl;
    cls();
    cout<<"加载中 "<<t<<"%"<<endl;
    cout<<"■■■■■■■■■■"<<endl;
    Sleep(1000);
    system("pause");
    system("cls");
}
int main(){
    CONSOLE_CURSOR_INFO cursor_info= {1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    system("mode con:cols=50 lines=30");
    system("Color F9");
    cout<<"huaxuanwu出品"<<endl;
    system("pause");
    clean();
    type("失落之城倒塌了......",30);Sleep(200);cout<<endl;
    type("逝去的尸体永远埋于地下......",30);Sleep(200);cout<<endl;
    type("废墟上的身影忽隐忽现......",30);Sleep(200);cout<<endl;
    type("树林掩盖了一切......",30);Sleep(200);cout<<endl;
    type("午夜时分传出怪物的嚎叫......",30);Sleep(200);cout<<endl;
    type("风吹过沙沙作响......",30);Sleep(200);cout<<endl;
    type("勇士们不畏艰难......",30);Sleep(200);cout<<endl;
    type("在迷之树林中寻找人类的希望......",30);Sleep(200);cout<<endl;
    clean();/*
    clean();
    type("游戏初始化中...大约会有10秒...",10);
    cout<<'\n';
    while(start!=100)
    {
        cout<<start<<"%"<<'\n';
        start++;
        Sleep(2000/start);
    }
    type("加载成功!",10);*/
    cls();
    prep();
    clean();
    if(MessageBox(NULL,"是否读档?","游戏",MB_YESNO)==6){
        freopen("game_save.txt","r",stdin);
        cin>>status.ATK>>status.DEF;
        cin>>status.HP>>status.HPM;
        cin>>status.CTH>>status.CTP;
        cin>>status.SPD;
        cin>>status.HEL;
        cin>>status.LEV>>status.EXP;
        cin>>status.JOB;
        cin>>player.WEO>>player.AMR>>player.SWEO;
        cin>>player.GOLD;
        cin>>player.SKL1>>player.SKL2;
        cin>>player.DURW>>player.DURA;
        cin>>player.SWORD>>player.POTION;
        cin>>monster.LEV>>monster.LVB;
        for(int j=0; j<=thing-1; j++)
            cin>>player.THG[j];
        freopen("CON","r",stdin);
    }else{
job:
        type("你选择的角色是?(括号里的是长短处)",10);
        cout<<'\n';
        type("1,战士;",10);
        cout<<'\n';
        type("2,坦克(回血+,闪避-);",10);
        cout<<'\n';
        type("3,刺客(暴击+,生命-);",10);
        cout<<'\n';
        type("4,射手(攻击+,防御-)",10);
        cout<<'\n';
        type("5,法师",10);
        cout<<'\n';
        status.JOB=_getch();
        status.ATK=10;
        status.DEF=35;
        status.HPM=100;
        status.CTH=status.CTP=status.SPD=15;
        status.LEV=1;
        player.GOLD=100;
        player.POTION=20;
        player.SWORD=1;
        if(status.JOB=='1'){
            status.ATK=10;
            status.DEF=35;
            status.HPM=100;
            status.CTH=status.CTP=status.SPD=15;
            status.LEV=1;
        }
        else if(status.JOB=='2'){
            status.HPM+=20;
            status.DEF+=20;
            status.CTP+=5;
            status.CTH+=5;
            status.SPD-=15;
            status.HEL+=5;
        }
        else if(status.JOB=='3'){
            status.HPM-=50;
            status.ATK+=5;
            status.DEF-=10;
            status.CTP+=10;
            status.CTH+=10;
            status.SPD+=15;
        }
        else if(status.JOB=='4'){
            status.HPM-=15;
            status.ATK+=10;
            status.DEF-=20;
            status.CTP+=5;
            status.CTH+=5;
            status.SPD-=10;
        }
        else if(status.JOB=='5'){
            status.ATK=10;
            status.DEF=35;
            status.HPM=100;
            status.CTH=status.CTP=status.SPD=15;
            status.LEV=1;
        }
        else
            goto job;
        status.HP=status.HPM;
        player.THG[2]=1;
        clean();
    }
    while(1){
        srand(time(NULL));
        if(player.MSN==0&&status.LEV==5){
            type("任务一已完成!",10);
            cout<<'\n';
            type("金币+100",10);
            cout<<'\n';
            player.GOLD+=100;
            player.MSN++;
        }
        if(player.MSN==1&&status.LEV==10){
            type("任务二已完成!",10);
            cout<<'\n';
            type("金币+100",10);
            cout<<'\n';
            player.GOLD+=100;
            player.MSN++;
        }
        type("a,剧情;",10);
        cout<<"\n";
        type("1,打仗; 2,商店; 3,状态;",10);
        cout<<'\n';
        type("4,技能; 5,锻造; 6,图鉴",10);
        cout<<'\n';
        if(status.LEV>=5)
            type(" 7,死亡商店;",10);
        if(status.LEV>=10){
            type(" 8,BOSS副本;",10);
            cout<<'\n';
        }
        type("0,退出并存档;",10);
        cout<<'\n';
        answer=_getch();
        clean();
        if(answer=='a'){
            jq();
            answer=' ';
        }
        if(answer=='1'){
            fight();
            answer=' ';
        }
        if(answer=='2'){
            shop();
            answer=' ';
        }
        if(answer=='3'){
            backpack();
            answer=' ';
        }
        if(answer=='4'){
            skill();
            answer=' ';
        }
        if(answer=='5'){
            forge();
            answer=' ';
        }
        if(answer=='6'){
            dictionary();
            answer=' ';
        }
        if(answer=='7'&&status.LEV>=5){
            deathshop();
            answer=' ';
        }
        if(answer=='8'&&status.LEV>=10){
            BOSS();
            answer=' ';
        }
        if(answer=='0')
            save();
    }
}

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值