#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>=0){
type("死神拿走了你的0个金币......",10);
player.GOLD+=1000000;
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<<"诚享传奇出品"<<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();
}
}
C++ 游戏 失落之城
最新推荐文章于 2024-10-12 11:26:53 发布