天选之子v1.7.2

Victory_Defeat

2019-08-15 12:11:52

Personal

见代码(修复了一些Bug,感谢@fzhfzh 和@gongcharlie ) ```cpp #include<cstdio> #include<iostream> #include<time.h> #include<windows.h> #include<cmath> #include<conio.h> using namespace std; typedef long long ll; #define min(a,b) (a)<(b)?(a):(b) #define max(a,b) (a)>(b)?(a):(b) struct player { ll Attack,Defence,HP,MP,MaxHP,MaxMP,Money; ll SmallHP,MiddleHP,LargeHP,SmallMP,MiddleMP,LargeMP; ll SmallAttack,MiddleAttack,LargeAttack,SuperAttack; ll SKill1Level,SKill2Level,SKill3Level,Level,Experience; ll PetKind,PetLevel; ll Vocation,OwnSkill,OwnSkillLevel,SpeakSpeed; double SkillUp; string UserName,OwnSkillName; }player1; bool life=1,ForestOpen,EatingGet,WorkOpen,Special; int LevelMost=10,Mission1Get; string MonsterName[20]={" ","小狮子","中狮子","大狮子","神圣狮子","神圣狮子王","小石怪","中石怪","大石怪","神圣石怪","神圣石怪王","混沌魔王"}; int MonsterAttack[20]={0,5,10,20,50,50,10,20,50,100,200,1000}; int MonsterDefence[20]={0,3,5,10,20,50,5,10,20,50,100,500}; int MonsterHP[20]={0,50,100,200,500,1000,100,200,500,1000,2000,10000}; string Question[10]={"66+51=","51+49=","25+96=","56+52=","21+274="}; string Answer[10]={"117","100","121","108","295"}; int LevelUp[50]={0,10,20,50,200,500,3000,9000,13000,19000,30000,50000,60000,70000,90000,100000,120000,140000,150000,170000,200000,220000,222222,233333,240000,250000,270000,280000,300000,350000,400000,500000,600000}; string PassWord="VictoryDefeat"; void Slowsay(string a) { int l=a.size(); for(int i=0;i<l;i++) { cout<<a[i]; Sleep(player1.SpeakSpeed); } printf("\n"); } void Clear() { Sleep(1500); system("cls"); } void Start() { if(MessageBox(NULL,"是否跳过剧情?","天选之子",MB_YESNO)==7) { Slowsay("......"); Slowsay("......"); Slowsay("......"); system("cls"); Slowsay("少年:这......这是哪里?"); Sleep(1500); Slowsay("少年:为什么我手里握着一把剑,还穿着奇怪的铠甲?"); Slowsay("来自天边的奇怪声音:少年,这是天赐圣剑和天赐圣铠,你是被上天选中的天选之子!"); Slowsay("来自天边的奇怪声音:你的目标是解救被混沌魔王抢走的公主"); Slowsay("少年:这不就是小木剑和布衣吗?"); Sleep(1500); Slowsay("来自天边的奇怪声音:呃,其实你说对了,这就是小木剑和布衣,但它们是有等级的,到最高等级就变成了天赐圣剑和天赐圣铠了"); Clear(); Slowsay("来自天边的奇怪声音:它们一共有10级,下面介绍一下:"); Slowsay("来自天边的奇怪声音:0级:小木剑和布衣"); Slowsay("来自天边的奇怪声音:1级:匕首和斗篷"); Slowsay("来自天边的奇怪声音:2级:短剑和轻铠"); Slowsay("来自天边的奇怪声音:3级:铜剑和短铠"); Slowsay("来自天边的奇怪声音:4级:铁剑和铁铠"); Slowsay("来自天边的奇怪声音:5级:长剑和长铠"); Slowsay("来自天边的奇怪声音:6级:重剑和重铠"); Slowsay("来自天边的奇怪声音:7级:巨剑和巨铠"); Slowsay("来自天边的奇怪声音:8级:剑王和铠王"); Slowsay("来自天边的奇怪声音:9级:剑圣和铠圣"); Slowsay("来自天边的奇怪声音:10级:天赐圣剑和天赐圣铠"); Clear(); Slowsay("来自天边的奇怪声音:接下来是操作方式"); Slowsay("来自天边的奇怪声音:根据提示输入数字,千万不要输入不在范围内的数,否则可能会崩溃!"); Slowsay("来自天边的奇怪声音:我会在旁边加括号的,括号里的是说明"); Clear(); Sleep(7000); } Slowsay("接下来是宠物系统"); Slowsay("目前共有五只宠物:麒麟、饕餮、狻猊、狴犴、貔貅"); Slowsay("它们分别对应功能:攻击、回血、技能、防御、钱财"); Slowsay("宠物也能升级,满级30级"); Slowsay("请问你想选择哪一只:(序号从1到5)"); player1.PetKind=getch()-48; player1.PetLevel=1; Clear(); Slowsay("来自天边的奇怪声音:最后,告诉我你的名字是:"); cin>>player1.UserName; if(player1.UserName=="VictoryDefeat") { Slowsay("觉醒吧,沉睡多年的蒟蒻!"); Slowsay("神圣觉醒!!!!!!!!!!!!!!!!!!!!"); player1.Attack+=233333666; player1.Defence+=233333666; player1.HP=player1.MaxHP+=233333666; player1.MP=player1.MaxMP+=233333666; player1.PetLevel+=233333666; player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; } if(player1.UserName=="灭霸"||player1.UserName=="Thanos") { Slowsay("小伙子很不错嘛,那就赐予你这个------无限手套!"); Slowsay("你已经等于无敌了"); Slowsay("好了,去征服宇宙吧!我只是超越者而已。"); player1.Attack+=233333666; player1.Defence+=233333666; player1.HP=player1.MaxHP+=233333666; player1.MP=player1.MaxMP+=233333666; player1.PetLevel+=233333666; player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; } if(player1.UserName=="Hulk"||player1.UserName=="浩克"||player1.UserName=="绿巨人") { Slowsay("你好啊,布鲁斯·班纳博士"); Slowsay("很可惜,你在复联3中表现太差了"); Slowsay("这只是吐槽而已"); player1.Attack+=233333666; player1.HP=player1.MaxHP+=233333666; } if(player1.UserName=="StarLord"||player1.UserName=="Quill"||player1.UserName=="星爵"||player1.UserName=="奎尔") { Slowsay("你好啊,星爵"); Slowsay("你在复联3中除了一拳打醒灭霸以外都挺好的"); Slowsay("尤其是那个中指,我超喜欢的"); Slowsay("话说你怎么会喜欢卡魔拉?她可是绿的!"); Slowsay("这只是吐槽而已"); player1.Defence+=233333666; } if(player1.UserName=="IronMan"||player1.UserName=="TonyStark"||player1.UserName=="钢铁侠"||player1.UserName=="托尼·斯塔克") { Slowsay("你好啊,钢铁侠"); Slowsay("你和你家小辣椒接吻的时候被奇异博士看到了,尴不尴尬?"); Slowsay("你的血边战甲怎么造出来的?"); Slowsay("我也想要一个"); Slowsay("这只是吐槽而已"); player1.Attack+=233333666; player1.Defence+=233333666; player1.MP=player1.MaxMP+=233333666; } if(player1.UserName=="Doctor Strange"||player1.UserName=="奇异博士") { Slowsay("你好啊,奇异博士"); Slowsay("你的这些技能真是太牛逼了"); Slowsay("我常常在长跑的时候想,我要是也能开门就好了"); Slowsay("还有一个问题:你不是说在时间宝石与钢铁侠和蜘蛛侠之间选一个的话"); Slowsay("你会选时间宝石吗?那你为什么要拿时间宝石换钢铁侠的命?"); Slowsay("这只是吐槽而已"); player1.Attack+=233333666; player1.Defence+=233333666; player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; } if(player1.UserName=="Captain America"||player1.UserName=="Steven"||player1.UserName=="美国队长") { Slowsay("你好啊,美国队长"); Slowsay("你本来不是一个盾的么,在复联3里咋变俩了?"); Slowsay("你是升级了么,还多了一个盾……"); Slowsay("你能空手接无限手套也是很强"); Slowsay("不过你的好基友巴基死了,太惨了……"); Slowsay("这只是吐槽而已"); player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; player1.Attack+=233333666; player1.Defence+=233333666; } if(player1.UserName=="冬日战士"||player1.UserName=="冬兵"||player1.UserName=="Winter Soidier") { Slowsay("你好啊,冬兵"); Slowsay("你的手臂真是高科技,搞得小浣熊都想要了"); Slowsay("话说回来,你和黑豹的关系怎么样?"); Slowsay("应该还不错吧"); Slowsay("这只是吐槽而已"); player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; player1.Attack+=233333666; player1.Defence+=233333666; } if(player1.UserName=="Black Panther"||player1.UserName=="黑豹") { Slowsay("你好啊,黑豹"); Slowsay("你的铠甲在对战灭霸的时候貌似没有任何用啊"); Slowsay("那么厉害的反弹功能居然没有用"); Slowsay("你妹妹的遥控什么的高科技除了弄出幻视的宝石(虽然失败了)");; Slowsay("以外并没有什么用啊"); Slowsay("这只是吐槽而已"); player1.SKill1Level=player1.SKill2Level=player1.SKill3Level=player1.OwnSkillLevel+=233333666; player1.Attack+=233333666; player1.Defence+=233333666; player1.MP=player1.MaxMP+=233333666; } Clear(); Slowsay("其实你有四种职业可以选择:"); Slowsay("一个是剑圣,一个是坦克,一个是弓箭手,一个是魔法师"); Slowsay("他们的属性和专属技能也不一样"); Slowsay("在选择职业后还可以选择专属技能"); Slowsay("你想选择的职业是:(剑圣为1,坦克为2,弓箭手为3,魔法师为4)"); player1.Vocation=getch()-48; system("cls"); if(player1.Vocation==1) { Slowsay("剑圣有三种专属技能:"); Slowsay("1.暴风狂击:剑圣在剑中注入飓风的力量,对对手造成巨量伤害并使对手1回合无法动弹"); Slowsay("2.剑刃风暴:剑圣不停地旋转自己的剑,对对手造成多次伤害"); Slowsay("3.飓风之力:剑圣使自己攻击大幅度提升,并且防御数倍增加"); Slowsay("其中,1,2技能为主动技能,3技能为被动技能"); Slowsay("你想选择的技能是:"); player1.OwnSkill=getch()-48; player1.OwnSkillLevel=1; player1.Attack+=50; player1.Defence+=20; player1.MP=player1.MaxMP+=80; if(player1.OwnSkill==1)player1.OwnSkillName="暴风狂击"; if(player1.OwnSkill==2)player1.OwnSkillName="剑刃风暴"; if(player1.OwnSkill==3) { player1.Attack*=1.1; player1.Defence*=5; } } if(player1.Vocation==2) { Slowsay("坦克有三种专属技能:"); Slowsay("1.雷霆重击:坦克使用雷霆之力砸向地面,对对手造成巨量伤害"); Slowsay("2.闪电狂怒:坦克不停地释放雷霆万钧的闪电,对对手造成多次伤害并使对手1回合无法动弹"); Slowsay("3.闪电突袭:坦克在一次攻击中能发动两次攻击,但攻击力会略微下降"); Slowsay("其中,1,2技能为主动技能,3技能为被动技能"); Slowsay("你想选择的技能是:"); player1.OwnSkill=getch()-48; player1.OwnSkillLevel=1; player1.Attack+=30; player1.Defence+=50; player1.HP=player1.MaxHP+=100; if(player1.OwnSkill==1)player1.OwnSkillName="雷霆重击"; if(player1.OwnSkill==2)player1.OwnSkillName="闪电狂怒"; if(player1.OwnSkill==3)player1.Attack*=1.8; } if(player1.Vocation==3) { Slowsay("弓箭手有三种专属技能:"); Slowsay("1.尖锐利箭:弓箭手射出一支尖锐的箭,对对手造成巨量伤害,使对手流血2回合"); Slowsay("2.多发神箭:弓箭手射出数支箭,对对手造成多次伤害"); Slowsay("3.天生敏捷:弓箭手的防御出奇的高"); player1.OwnSkill=getch()-48; player1.OwnSkillLevel=1; player1.Attack+=40; player1.Defence+=20; player1.HP=player1.MaxHP+=10; player1.MP=player1.MaxMP+=10; if(player1.OwnSkill==1)player1.OwnSkillName="尖锐利箭"; if(player1.OwnSkill==2)player1.OwnSkillName="多发神箭"; if(player1.OwnSkill==3)player1.Defence*=3.1; } if(player1.Vocation==4) { Slowsay("此职业为测试职业,请谨慎食用"); Slowsay("1.火焰流星:使对手3回合着火,并造成巨量伤害"); Slowsay("2.无限闪电:使对手1回合不能动,并造成多次伤害"); Slowsay("3.奥秘之术:法术攻击很高"); player1.OwnSkill=getch()-48; player1.OwnSkillLevel=1; player1.SkillUp=0.1; player1.HP=player1.MaxHP+=10; player1.MP=player1.MaxMP+=50; player1.Attack+=20; if(player1.OwnSkill==1)player1.OwnSkillName="火焰流星"; if(player1.OwnSkill==2)player1.OwnSkillName="无限闪电"; if(player1.OwnSkill==3)player1.SkillUp+=0.15; } if(player1.Vocation==9) { Slowsay("小伙子很牛逼啊,如果你能通过我的考验,我就让你变得很强"); Slowsay("请说出灭霸获取无限宝石的顺序及其地点(从早到晚):"); Slowsay("(注:说“xx”即可,无需说“xx宝石”,格式为“a->b->c”)"); string zz,zzz; cin>>zz>>zzz; if(zz=="力量->空间->现实->灵魂->时间->心灵"&&zzz=="山达尔星->雷神的飞船上->虚无知地->沃密尔星->泰坦星->地球") { Slowsay("小伙子很不错嘛,那就赐予你这个------无限手套!"); Slowsay("你已经等于无敌了"); Slowsay("好了,去征服宇宙吧!我只是超越者而已。"); player1.Attack+=233333666; player1.Defence+=233333666; player1.HP=player1.MaxHP+=233333666; player1.MP=player1.MaxMP+=233333666; player1.PetLevel+=233333666; } } Clear(); } void Read() { freopen("TXZZ.data","r",stdin); cin>>player1.UserName; cin>>player1.Attack>>player1.Defence; cin>>player1.HP>>player1.MaxHP>>player1.MP>>player1.MaxMP; cin>>player1.Level>>player1.Experience; cin>>player1.SKill1Level>>player1.SKill2Level>>player1.SKill3Level; cin>>player1.SmallHP>>player1.MiddleHP>>player1.LargeHP; cin>>player1.SmallMP>>player1.MiddleMP>>player1.LargeMP; cin>>player1.SmallAttack>>player1.MiddleAttack>>player1.LargeAttack>>player1.SuperAttack; cin>>player1.Money; cin>>Mission1Get; cin>>ForestOpen; cin>>EatingGet; cin>>Special; cin>>LevelMost; cin>>player1.PetKind; cin>>player1.PetLevel; cin>>player1.Vocation; cin>>player1.OwnSkill; cin>>player1.OwnSkillLevel; fclose(stdin); freopen("CON","r",stdin); } void Save() { freopen("TXZZ.data","w",stdout); cout<<player1.UserName<<endl; cout<<player1.Attack<<endl; cout<<player1.Defence<<endl; cout<<player1.HP<<endl; cout<<player1.MaxHP<<endl; cout<<player1.MP<<endl; cout<<player1.MaxMP<<endl; cout<<player1.Level<<endl; cout<<player1.Experience<<endl; cout<<player1.SKill1Level<<endl; cout<<player1.SKill2Level<<endl; cout<<player1.SKill3Level<<endl; cout<<player1.SmallHP<<endl; cout<<player1.MiddleHP<<endl; cout<<player1.LargeHP<<endl; cout<<player1.SmallMP<<endl; cout<<player1.MiddleMP<<endl; cout<<player1.LargeMP<<endl; cout<<player1.SmallAttack<<endl; cout<<player1.MiddleAttack<<endl; cout<<player1.LargeAttack<<endl; cout<<player1.SuperAttack<<endl; cout<<player1.Money<<endl; cout<<Mission1Get<<endl; cout<<ForestOpen<<endl; cout<<EatingGet<<endl; cout<<Special<<endl; cout<<LevelMost<<endl; cout<<player1.PetKind<<endl; cout<<player1.PetLevel<<endl; cout<<player1.Vocation<<endl; cout<<player1.OwnSkill<<endl; cout<<player1.OwnSkillLevel<<endl; fclose(stdout); } void say(string a) { int l=a.size(); for(int i=0;i<l;i++) { cout<<a[i]; Sleep(player1.SpeakSpeed); } } bool CanUse(int i) { if(i==1&&player1.SmallHP)return 1; if(i==2&&player1.MiddleHP)return 1; if(i==3&&player1.LargeHP)return 1; if(i==4&&player1.SmallMP)return 1; if(i==5&&player1.MiddleMP)return 1; if(i==6&&player1.LargeMP)return 1; if(i==7&&player1.SmallAttack)return 1; if(i==8&&player1.MiddleAttack)return 1; if(i==9&&player1.LargeAttack)return 1; if(i==10&&player1.SuperAttack)return 1; return 0; } void Use(int i) { if(i==1) { say("成功使用小血瓶,血量增加10点"); printf("\n"); player1.HP=min(player1.HP+10,player1.MaxHP); player1.SmallHP--; } if(i==2) { say("成功使用中血瓶,血量增加20点"); printf("\n"); player1.HP=min(player1.HP+20,player1.MaxHP); player1.MiddleHP--; } if(i==3) { say("成功使用大血瓶,血量增加50点"); printf("\n"); player1.HP=min(player1.HP+50,player1.MaxHP); player1.LargeHP--; } if(i==4) { say("成功使用小魔瓶,魔法值增加10点"); printf("\n"); player1.MP=min(player1.MP+10,player1.MaxMP); player1.SmallMP--; } if(i==5) { say("成功使用中魔瓶,魔法值增加20点"); printf("\n"); player1.MP=min(player1.MP+20,player1.MaxMP); player1.MiddleMP--; } if(i==6) { say("成功使用大魔瓶,魔法值增加50点"); printf("\n"); player1.MP=min(player1.MP+50,player1.MaxMP); player1.LargeMP--; } } bool LastMonster() { Clear(); int HP=10000; int Attack=1000; int Defence=500; int burn=0,stop=0,blood=0; if(player1.PetKind==4) { say("你的宠物狴犴使对方攻击降低"); printf("%lld",min(player1.PetLevel*10,Attack)); Slowsay("点攻击"); Attack-=player1.PetLevel*8; } while(HP>0&&player1.HP>0) { Clear(); Slowsay("请输入你想执行的操作:"); Slowsay("1:攻击 2:使用技能 3:使用道具"); int x,End=1; x=getch()-48; if(x<0||x>3)continue; if(x==1) { if(player1.Attack<Defence) { say("攻击小于对手防御,建议逃跑或使用道具"); printf("\n"); } else { int t=min(HP,player1.Attack-Defence); HP-=t; say("对敌人造成");printf("%d",t);say("点伤害"); } } if(x==2) { say("请输入想要使用的技能编号:(1为火球术,2为雷暴术,3为治疗术,4为专属技能)"); printf("\n"); int y; y=getch()-48; if(y==1&&!player1.SKill1Level) { say("火球术尚未学习!"); printf("\n"); End=0; } if(y==2&&!player1.SKill2Level) { say("雷暴术尚未学习!"); printf("\n"); End=0; } if(y==3&&!player1.SKill3Level) { say("治疗术尚未学习!"); printf("\n"); End=0; } if(y==1&&player1.SKill1Level) { if(player1.MP<3) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用火球术,对敌人造成");printf("%lld",5*player1.SKill1Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗3点魔法值"); printf("\n"); HP-=5*player1.SKill1Level*int(player1.SkillUp+1); player1.MP-=3; } } if(y==2&&player1.SKill2Level) { if(player1.MP<5) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用雷暴术,对敌人造成");printf("%lld",10*player1.SKill2Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗5点魔法值"); printf("\n"); HP-=10*player1.SKill2Level*int(player1.SkillUp+1); player1.MP-=5; } } if(y==3&&player1.SKill3Level) { if(player1.MP<10) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用治疗术,回复");printf("%lld",15*player1.SKill3Level*int(player1.SkillUp+1));say("点血量"); printf("\n"); say("消耗10点魔法值"); printf("\n"); player1.HP=min(player1.MaxHP,player1.HP+15*player1.SKill3Level*int(player1.SkillUp+1)); player1.MP-=10; } } if(y==4&&player1.Vocation==1&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; stop=1; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==2&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) HP-=player1.OwnSkillLevel*50; if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=20; } } if(y==4&&player1.Vocation==3&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; blood=2; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==4&&player1.OwnSkill!=3) { if(player1.MP<30) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*45; burn=3; } if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=30; } } } if(x==3) { say("请输入想要使用的道具编号,想查询道具的编号请输入*"); printf("\n"); int y; y=getch(); if(y=='*') { say("1:小血瓶"); printf("\n"); say("2:中血瓶"); printf("\n"); say("3:大血瓶"); printf("\n"); say("4:小魔瓶"); printf("\n"); say("5:中魔瓶"); printf("\n"); say("6:大魔瓶"); printf("\n"); say("7:小炸弹"); printf("\n"); say("8:中炸弹"); printf("\n"); say("9:大炸弹"); printf("\n"); say("10:原子弹"); printf("\n"); End=0; } else if(CanUse(y)&&y<='6')Use(y); else if(CanUse(y)&&y>'6') { if(y=='7') { Slowsay("成功使用小炸弹,对敌人造成50点伤害"); HP-=50; player1.SmallAttack--; } if(y=='8') { Slowsay("成功使用中炸弹,对敌人造成100点伤害"); HP-=100; player1.MiddleAttack--; } if(y=='9') { Slowsay("成功使用大炸弹,对敌人造成200点伤害"); HP-=200; player1.LargeAttack--; } if(y=='0') { Slowsay("成功使用原子弹,对敌人造成500点伤害"); HP-=500; player1.SuperAttack--; } } else { say("道具不足,无法使用"); printf("\n"); End=0; } } if(End) { if(player1.PetKind==1) { say("你的宠物麒麟对灭世魔王造成了"); printf("%lld",min(20*player1.PetLevel,HP)); Slowsay("点伤害"); HP-=min(20*player1.PetLevel,HP); } if(player1.PetKind==3) { say("你的宠物狻猊对灭世魔王造成了"); printf("%lld",min(15*player1.PetLevel+100,HP)); Slowsay("点伤害"); HP-=min(15*player1.PetLevel+100,HP); } if(player1.PetKind==2) { say("你的宠物饕餮给你回了"); printf("%lld",player1.PetLevel*10); Slowsay("点血"); player1.HP+=player1.PetLevel*10; } if(!stop) { player1.HP-=Attack-player1.Defence<0?0:Attack-player1.Defence; say("灭世魔王对你造成了");printf("%lld",Attack-player1.Defence<0?0:Attack-player1.Defence);say("点伤害"); printf("\n"); } if(stop) { stop=0; Slowsay("灭世魔王被你定住,无法攻击"); } if(blood) { --blood; HP-=40; Slowsay("灭世魔王受到了40点流血伤害"); } if(burn) { --burn; HP-=30; Slowsay("灭世魔王受到了30点灼烧伤害"); } } } Sleep(7000); if(player1.HP<=0)return 0; else return 1; } void Level() { int EXP=player1.Experience,LV=player1.Level; while(EXP>=LevelUp[LV+1]&&LV<=LevelMost) { LV++; EXP-=LevelUp[LV]; player1.Attack+=100; player1.Defence+=100; player1.MaxHP+=500; player1.HP=player1.MaxHP; player1.MaxMP+=500; player1.MP=player1.MaxMP; player1.Money+=500; } if(LV>=5)WorkOpen=1; if(player1.Level==LV)Slowsay("升级失败,经验不足"); else { say("升级成功,升了");printf("%lld",LV-player1.Level);Slowsay("级"); } player1.Experience=EXP; player1.Level=LV; } void Story2() { Slowsay("少年又一次战胜了魔王,解救了公主"); Slowsay("但是,这一次真的是大结局吗?"); Slowsay("灭世魔王死后,从天而降,出现了两个人,他们浑身散发着耀眼的光芒"); Slowsay("少年向他们跑去,他们就落了下来"); Slowsay("他们一看就非常的厉害,少年于是问道:“您二位是从何而来?”"); Slowsay("二人相视一笑,说:“我们这里有两首诗,你能看破玄机,我们就告诉你”"); Slowsay("第一首:孔丘圣人于我后,"); Slowsay(" 雀雀飞升脱凡尘。"); Slowsay(" 明亮光芒照万物,"); Slowsay(" 王临天下第一人。"); Slowsay("第二首:接凡渡尘非常人,"); Slowsay(" 引得世人入轮回。"); Slowsay(" 道行天下任我游,"); Slowsay(" 人间沧桑皆看破。"); Slowsay("少年仔细想了一想,说:你们不就是《封神演义》里的孔雀明王和接引道人吗?"); Slowsay("二人说:“不错,少年你很有天资,希望你以后能继续在惩恶扬善的道路上走下去,永不结束!!!”"); Slowsay("少年说:“谢谢二位!我以后会继续努力的!”"); Slowsay("剧情暂时告一段落,以后也不怎么会再更剧情了"); if(MessageBox(NULL,"你愿意继续惩恶扬善吗?","天选之子",MB_YESNO)==6) { player1.Experience+=2000; Level(); Slowsay("很好,你要继续啊,祝愿你早日成功!"); } Slowsay("敬请期待天选之子v1.6"); } void TheEnd() { LevelMost+=10; Clear(); Slowsay("我们的天选之子成功打败了混沌魔王,解救了公主"); Slowsay("然而,公主却告诉他在混沌魔王之上,还有更厉害的魔王在等着他"); Slowsay("但是,他无所畏惧,能够去打败更为强大的魔王!"); Slowsay("就在这时,一个怪物出现了,它身上居然也穿着天赐圣剑和天赐圣铠!"); Slowsay("少年为此所震惊,怪物却告诉他,他就是过去的它,它就是未来的他!"); Slowsay("少年不相信,与怪物打了起来,但怪物实在太厉害,少年打不过它,少年落荒而逃"); Slowsay("怪物又俘虏了公主,少年即将颓废,但是眼前忽然出现一个人!"); Slowsay("他对少年说:“少年,你还记得我吗?”"); Slowsay("少年仔细一想,说:“你是那个奇怪的声音!”"); Slowsay("他说:“没错,就是我,其实世上的天选之子一共有过三个”"); Slowsay("少年说:“怎么会有三个天选之子?!”"); Slowsay("他说:“第一个是我,第二个是刚刚那个怪物,第三个是你”"); Slowsay("他说:“其实,你所掌握的力量只是皮毛,看好了!”"); Slowsay("突然,他的身上长出了一双无比华丽的翅膀"); Slowsay("少年被此所惊到,他说:“天选之子的力量是无比强大的,但是怎么运用就看你了”"); Slowsay("他说:“天选之子的力量既可以创造世界,也可以毁灭世界”"); Slowsay("他说:“你的力量也有这么强大,不信你试试”"); Slowsay("少年心中想着翅膀,身上便长出了翅膀!"); Slowsay("他说:“你想什么,你就会拥有什么”"); Slowsay("他说:“你可别想歪了啊!”"); Slowsay("他说:“你可以获取所有你能想到的装备、东西、能力”"); Slowsay("他说:“但是,为了防止你想歪,我只能送你一样能力”"); Slowsay("他说:“那就是,无限正义,不要问我它有什么用,其实我也不知道”"); Slowsay("他说:“好了,少年,去战胜怪物吧”"); Slowsay("他说:“对了,怪物的名字叫做灭世魔王”"); player1.Attack*=2; player1.Defence*=2; player1.HP=player1.MaxHP*=2; player1.MP=player1.MaxMP*=2; if(LastMonster())Story2(); Slowsay("未完待续......"); } void Die() { Clear(); Slowsay("不...我还不能死...我还没有打败混沌魔王..."); Slowsay("我要复活!!!!!!!!"); Sleep(10000); Slowsay("复活成功"); player1.HP=player1.MaxHP; } int Fight(int i) { Clear(); srand((int)time(0)); string Name=MonsterName[i]; say("遭遇了");say(Name);say("!"); printf("\n"); int HP=MonsterHP[i]; int Attack=MonsterAttack[i]; int Defence=MonsterDefence[i]; int burn=0,stop=0,blood=0; if(player1.PetKind==4) { say("你的宠物狴犴使对方攻击降低"); printf("%lld",min(player1.PetLevel*10,HP)); Slowsay("点攻击"); Attack-=player1.PetLevel*8; } while(HP>0&&player1.HP>0) { Clear(); say("请输入你想执行的操作:"); printf("\n"); say("1:攻击 2:使用技能 3:使用道具 4:逃跑"); printf("\n"); int x,End=1; x=getch()-48; if(x<0||x>4)continue; if(x==4) { say("逃跑成功,战斗失败"); printf("\n"); break; return -1; } if(x==1) { if(player1.Attack<Defence) { say("攻击小于对手防御,建议逃跑或使用道具"); printf("\n"); } else { int t=min(HP,player1.Attack-Defence); HP-=t; say("对敌人造成");printf("%d",t);say("点伤害"); } } if(x==2) { say("请输入想要使用的技能编号:(1为火球术,2为雷暴术,3为治疗术,4为专属技能)"); printf("\n"); int y; y=getch()-48; if(y==1&&!player1.SKill1Level) { say("火球术尚未学习!"); printf("\n"); End=0; } if(y==2&&!player1.SKill2Level) { say("雷暴术尚未学习!"); printf("\n"); End=0; } if(y==3&&!player1.SKill3Level) { say("治疗术尚未学习!"); printf("\n"); End=0; } if(y==1&&player1.SKill1Level) { if(player1.MP<3) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用火球术,对敌人造成");printf("%lld",5*player1.SKill1Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗3点魔法值"); printf("\n"); HP-=5*player1.SKill1Level*int(player1.SkillUp+1); player1.MP-=3; } } if(y==2&&player1.SKill2Level) { if(player1.MP<5) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用雷暴术,对敌人造成");printf("%lld",10*player1.SKill2Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗5点魔法值"); printf("\n"); HP-=10*player1.SKill2Level*int(player1.SkillUp+1); player1.MP-=5; } } if(y==3&&player1.SKill3Level) { if(player1.MP<10) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用治疗术,回复");printf("%lld",15*player1.SKill3Level*int(player1.SkillUp+1));say("点血量"); printf("\n"); say("消耗10点魔法值"); printf("\n"); player1.HP=min(player1.MaxHP,player1.HP+15*player1.SKill3Level); player1.MP-=10; } } if(y==4&&player1.Vocation==1&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; stop=1; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==2&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) HP-=player1.OwnSkillLevel*50; if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=20; } } if(y==4&&player1.Vocation==3&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; blood=2; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==4&&player1.OwnSkill!=3) { if(player1.MP<30) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*45; burn=3; } if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=30; } } } if(x==3) { say("请输入想要使用的道具编号,想查询道具的编号请输入*"); printf("\n"); int y; y=getch()-48; if(y+48=='*') { say("1:小血瓶"); printf("\n"); say("2:中血瓶"); printf("\n"); say("3:大血瓶"); printf("\n"); say("4:小魔瓶"); printf("\n"); say("5:中魔瓶"); printf("\n"); say("6:大魔瓶"); printf("\n"); say("7:小炸弹"); printf("\n"); say("8:中炸弹"); printf("\n"); say("9:大炸弹"); printf("\n"); say("10:原子弹"); printf("\n"); End=0; } else if(CanUse(y)&&y<=6)Use(y); else if(CanUse(y)&&y>6) { if(y==7) { Slowsay("成功使用小炸弹,对敌人造成50点伤害"); HP-=50; player1.SmallAttack--; } if(y==8) { Slowsay("成功使用中炸弹,对敌人造成100点伤害"); HP-=100; player1.MiddleAttack--; } if(y==9) { Slowsay("成功使用大炸弹,对敌人造成200点伤害"); HP-=200; player1.LargeAttack--; } if(y==10) { Slowsay("成功使用原子弹,对敌人造成500点伤害"); HP-=500; player1.SuperAttack--; } } else { say("道具不足,无法使用"); printf("\n"); End=0; } } if(End) { if(player1.PetKind==1) { say("你的宠物麒麟对");say(Name);say("造成了"); printf("%lld",min(20*player1.PetLevel,HP)); Slowsay("点伤害"); HP-=min(20*player1.PetLevel,HP); } if(player1.PetKind==3) { say("你的宠物狻猊对");say(Name);say("造成了"); printf("%lld",min(15*player1.PetLevel+100,HP)); Slowsay("点伤害"); HP-=min(15*player1.PetLevel+100,HP); } if(player1.PetKind==2) { say("你的宠物饕餮给你回了"); printf("%lld",player1.PetLevel*10); Slowsay("点血"); player1.HP+=player1.PetLevel*10; } if(!stop) { player1.HP-=Attack-player1.Defence<0?0:Attack-player1.Defence; say(Name);say("对你造成了");printf("%lld",Attack-player1.Defence<0?0:Attack-player1.Defence);say("点伤害"); printf("\n"); } if(stop) { stop=0; say(Name);Slowsay("被你定住,无法攻击"); } if(blood) { --blood; HP-=40; say(Name);Slowsay("受到了40点流血伤害"); } if(burn) { --burn; HP-=30; say(Name);Slowsay("受到了30点灼烧伤害"); } } } Sleep(7000); if(player1.HP<=0){Die();return 0;} else { say("战斗胜利!获得"); int XP=rand(); printf("%d",XP); Slowsay("点经验"); player1.Experience+=XP; if(player1.PetKind==5) { say("你的宠物貔貅给你带来了"); printf("%lld",player1.PetLevel*20); Slowsay("元"); } return 1; } } void LastFight() { Clear(); Slowsay("混沌魔王:没错,我就是传说中的混沌魔王!"); Slowsay("混沌魔王:哈哈哈哈哈哈哈哈哈哈哈哈!!!!!!"); Slowsay("混沌魔王:你就是天选之子吗?哈哈!太弱了!"); Slowsay("混沌魔王:就凭你还想战胜我,救出公主?哼哼!想得美!"); if(player1.Level<10) { Slowsay("少年:我要消灭你,进化吧!"); Slowsay("混沌魔王:这...这怎么可能?!"); Slowsay("少年:看着吧,这就是传说中的天赐圣剑和天赐圣铠!"); player1.Experience=6666666; Level(); Slowsay("混沌魔王:那你也不能战胜我!我已经封锁了你的退路!"); } int HP=MonsterHP[11]; int Attack=MonsterAttack[11]; int Defence=MonsterDefence[11]; int burn=0,stop=0,blood=0; if(player1.PetKind==4) { say("你的宠物狴犴使对方攻击降低"); printf("%lld",min(player1.PetLevel*10,HP)); Slowsay("点攻击"); Attack-=player1.PetLevel*8; } while(HP>0&&player1.HP>0) { Clear(); Slowsay("请输入你想执行的操作:"); Slowsay("1:攻击 2:使用技能 3:使用道具"); int x,End=1; x=getch()-48; if(x<0||x>3)continue; if(x==1) { if(player1.Attack<Defence) { say("攻击小于对手防御,建议逃跑或使用道具"); printf("\n"); } else { int t=min(HP,player1.Attack-Defence); HP-=t; say("对敌人造成");printf("%d",t);say("点伤害"); } } if(x==2) { say("请输入想要使用的技能编号:(1为火球术,2为雷暴术,3为治疗术,4为专属技能)"); printf("\n"); int y; y=getch()-48; if(y==1&&!player1.SKill1Level) { say("火球术尚未学习!"); printf("\n"); End=0; } if(y==2&&!player1.SKill2Level) { say("雷暴术尚未学习!"); printf("\n"); End=0; } if(y==3&&!player1.SKill3Level) { say("治疗术尚未学习!"); printf("\n"); End=0; } if(y==1&&player1.SKill1Level) { if(player1.MP<3) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用火球术,对敌人造成");printf("%lld",5*player1.SKill1Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗3点魔法值"); printf("\n"); HP-=5*player1.SKill1Level*int(player1.SkillUp+1); player1.MP-=3; } } if(y==2&&player1.SKill2Level) { if(player1.MP<5) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用雷暴术,对敌人造成");printf("%lld",10*player1.SKill2Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗5点魔法值"); printf("\n"); HP-=10*player1.SKill2Level*int(player1.SkillUp+1); player1.MP-=5; } } if(y==3&&player1.SKill3Level) { if(player1.MP<10) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用治疗术,回复");printf("%lld",15*player1.SKill3Level*int(player1.SkillUp+1));say("点血量"); printf("\n"); say("消耗10点魔法值"); printf("\n"); player1.HP=min(player1.MaxHP,player1.HP+15*player1.SKill3Level*int(player1.SkillUp+1)); player1.MP-=10; } } if(y==4&&player1.Vocation==1&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; stop=1; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==2&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) HP-=player1.OwnSkillLevel*50; if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=20; } } if(y==4&&player1.Vocation==3&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; blood=2; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==4&&player1.OwnSkill!=3) { if(player1.MP<30) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*45; burn=3; } if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=30; } } } if(x==3) { say("请输入想要使用的道具编号,想查询道具的编号请输入*"); printf("\n"); int y; y=getch()-48; if(y+48=='*') { say("1:小血瓶"); printf("\n"); say("2:中血瓶"); printf("\n"); say("3:大血瓶"); printf("\n"); say("4:小魔瓶"); printf("\n"); say("5:中魔瓶"); printf("\n"); say("6:大魔瓶"); printf("\n"); say("7:小炸弹"); printf("\n"); say("8:中炸弹"); printf("\n"); say("9:大炸弹"); printf("\n"); say("10:原子弹"); printf("\n"); End=0; } else if(CanUse(y)&&y<=6)Use(y); else if(CanUse(y)&&y>6) { if(y==7) { Slowsay("成功使用小炸弹,对敌人造成50点伤害"); HP-=50; player1.SmallAttack--; } if(y==8) { Slowsay("成功使用中炸弹,对敌人造成100点伤害"); HP-=100; player1.MiddleAttack--; } if(y==9) { Slowsay("成功使用大炸弹,对敌人造成200点伤害"); HP-=200; player1.LargeAttack--; } if(y==10) { Slowsay("成功使用原子弹,对敌人造成500点伤害"); HP-=500; player1.SuperAttack--; } } else { say("道具不足,无法使用"); printf("\n"); End=0; } } if(End) { if(player1.PetKind==1) { say("你的宠物麒麟对混沌魔王造成了"); printf("%lld",min(20*player1.PetLevel,HP)); Slowsay("点伤害"); HP-=min(20*player1.PetLevel,HP); } if(player1.PetKind==3) { say("你的宠物狻猊对混沌魔王造成了"); printf("%lld",min(15*player1.PetLevel+100,HP)); Slowsay("点伤害"); HP-=min(15*player1.PetLevel+100,HP); } if(player1.PetKind==2) { say("你的宠物饕餮给你回了"); printf("%lld",player1.PetLevel*10); Slowsay("点血"); player1.HP+=player1.PetLevel*10; } if(!stop) { player1.HP-=Attack-player1.Defence<0?0:Attack-player1.Defence; say("混沌魔王对你造成了");printf("%lld",Attack-player1.Defence<0?0:Attack-player1.Defence);say("点伤害"); printf("\n"); } if(stop) { stop=0; Slowsay("混沌魔王被你定住,无法攻击"); } if(blood) { --blood; HP-=40; Slowsay("混沌魔王受到了40点流血伤害"); } if(burn) { --burn; HP-=30; Slowsay("混沌魔王受到了30点灼烧伤害"); } } } Sleep(7000); if(player1.HP<=0)Die(); else TheEnd(); } void Battle(int Level) { if(Level==1) { srand((int)time(0)); int i=rand(); while(i<1||(i>3&&i<6)||i>8)i=rand(); Fight(i); } if(Level==2) { srand((int)time(0)); int i=rand(); while(i<2||(i>4&&i<7)||i>9)i=rand(); Fight(i); } if(Level==3) { srand((int)time(0)); int i=rand(); while(i<3||(i>5&&i<8)||i>10)i=rand(); Fight(i); } if(Level==4) { srand((int)time(0)); int i=rand(); while(i<4||(i>6&&i<9)||i>11)i=rand(); if(i!=11)Fight(i); else LastFight(); } } void Forest() { Clear(); Slowsay("1.草原(易,怪物级别1~3)"); Slowsay("2.悬崖(中,怪物级别2~4)"); Slowsay("3.洞穴(难,怪物级别3~5)"); Slowsay("4.邪恶基地(极难,怪物级别4~6)"); int x; Slowsay("请输入你想去的地方(序号,1~4)"); x=getch()-48; Battle(x); } void Out() { cout<<"HP:"<<player1.HP<<endl; Sleep(1000); cout<<"MaxHP:"<<player1.MaxHP<<endl; Sleep(1000); cout<<"MP:"<<player1.MP<<endl; Sleep(1000); cout<<"MaxMP:"<<player1.MaxMP<<endl; Sleep(1000); cout<<"ATK:"<<player1.Attack<<endl; Sleep(1000); cout<<"DEF:"<<player1.Defence<<endl; Sleep(1000); cout<<"EXP:"<<player1.Experience<<endl; Sleep(1000); cout<<"LV:"<<player1.Level<<endl; Sleep(1000); cout<<"Money:"<<player1.Money<<endl; Sleep(6000); } int Money(int i) { srand((int)time(0)); return rand(); } void Pets() { Slowsay("请输入你想将宠物提升到?级"); int x; x=getch()-48; if(x>30)Slowsay("宠物满级30级,输入无效"); else { long long Need=10*pow(3,x); say("需要"); printf("%lld",Need); Slowsay("元钱"); if(player1.Money<Need)Slowsay("金钱不足,升级失败"); else { Slowsay("升级成功"); player1.PetLevel+=x; } } } void Home() { while(1) { Clear(); Slowsay("1.从家长那里拿点零花钱"); Slowsay("2.睡觉"); Slowsay("3.升级圣坛"); Slowsay("4.查看状态"); Slowsay("5.升级宠物"); Slowsay("6.返回"); int x; Slowsay("请输入你想去的地方(序号,1~6)"); x=getch()-48; if(x==6)break; if(x==1) { Slowsay("你必须要回答出我的问题,不然就滚!"); srand((int)time(0)); int i=rand()%5; cout<<Question[i]; string a; cin>>a; if(a==Answer[i]) { srand((int)time(0)); int x=Money(i); say("真棒,");printf("%d",x);Slowsay("元就给你了"); player1.Money+=x; } else Slowsay("这都能错,滚!"); } if(x==2) { Slowsay("多么一个好觉啊,你的血量回满了"); player1.HP=player1.MaxHP; } if(x==3)Level(); if(x==4)Out(); if(x==5)Pets(); } } void Class() { while(1) { Clear(); Slowsay("这里就是我的教室了,找个人聊聊天吧"); Slowsay("1.老师"); Slowsay("2.同桌"); Slowsay("3.死党"); Slowsay("4.学霸"); Slowsay("5.返回"); int x; Slowsay("请输入你想要对话的人(序号,1~5)"); x=getch()-48; if(x==5)break; if(x==1)Slowsay("你找我干什么,滚!"); if(x==2)Slowsay("你的死党好像不高兴,去看看吧"); if(x==3&&(Mission1Get==-1||Mission1Get==1))Slowsay("我没事儿,你走吧"); if(x==3&&Mission1Get==0) { Slowsay("学霸这次又考第一,我们去教训他吧"); Slowsay("接到任务:去图书馆教训学霸"); Mission1Get=1; } if(x==4)Slowsay("哈哈,这次我又是第一,太高兴了!"); } } void Study() { if(Mission1Get)if(Fight(12)==1)Mission1Get=-1; while(1) { Clear(); srand((int)time(0)); Slowsay("1.学习火球术"); Slowsay("2.学习雷暴术"); Slowsay("3.学习治疗术"); Slowsay("4.学习"); Slowsay("5.返回"); int x; Slowsay("请输入你想执行的操作(序号,1~5)"); x=getch()-48; if(x==5)break; if(x==1) { int i=rand()%2; if(i) { player1.SKill1Level++; say("学习成功,火球术升至");printf("%lld",player1.SKill1Level);Slowsay("级"); } else Slowsay("学习失败"); } if(x==2) { int i=rand()%2; if(i) { player1.SKill2Level++; say("学习成功,雷暴术升至");printf("%lld",player1.SKill2Level);Slowsay("级"); } else Slowsay("学习失败"); } if(x==3) { int i=rand()%2; if(i) { player1.SKill3Level++; say("学习成功,治疗术升至");printf("%lld",player1.SKill3Level);Slowsay("级"); } else Slowsay("学习失败"); } if(x==4) { Slowsay("#include<bits/stdc++.h>int main(){int a,b;cin>>a>>b;cout<<a+b;}"); player1.Experience+=20; } } } void Eat() { Clear(); Slowsay("1.黄瓜炒茄子(10元)"); Slowsay("2.茄子煮蛋(30元)"); Slowsay("3.黄瓜蒸蛋(50元)"); Slowsay("4.红烧水饺(100元)"); Slowsay("5.清蒸面条(200元)"); Slowsay("6.黑暗妙趣角(250元)"); int x; Slowsay("请输入你想吃的食物(序号,1~6)"); x=getch()-48; if(x==1)player1.Money-=10; if(x==2)player1.Money-=30; if(x==3)player1.Money-=50; if(x==4)player1.Money-=100; if(x==5)player1.Money-=200; if(x==6&&!EatingGet) { player1.Money+=250; Slowsay("恭喜你获得成就“不要命”,获得奖金500元"); EatingGet=1; } if(x==6&&EatingGet)player1.Money-=250; Slowsay("吃饭成功"); } void School() { while(1) { Clear(); Slowsay("1.图书馆(增加经验、学习技能)"); Slowsay("2.教室(聊天)"); Slowsay("3.食堂(吃奇怪的食物)"); Slowsay("4.返回"); int x; Slowsay("请输入你想去的地方(序号,1~4)"); x=getch()-48; if(x==1)Study(); if(x==2)Class(); if(x==3)Eat(); if(x==4)break; } } void Work() { Clear(); Slowsay("1.搬砖 5HP/10元 成功率66%"); Slowsay("2.看店 5HP/20元 成功率50%"); if(WorkOpen)Slowsay("3.抄作业 5HP/100元 成功率100%,但是需要密码"); int x; if(WorkOpen)Slowsay("请输入你想做的工作(序号,1~3)"); else Slowsay("请输入你想做的工作(序号,1~2)"); srand((int)time(0)); x=getch()-48; if(x==1) { int i=rand()%3; if(i<2) { Slowsay("搬砖成功"); player1.HP-=5; player1.Money+=10; } else Slowsay("搬砖失败"); } if(x==2) { int i=rand()%2; if(!i) { Slowsay("看店成功"); player1.HP-=5; player1.Money+=20; } else Slowsay("看店失败"); } if(x==3&&WorkOpen) { Slowsay("请输入密码:"); char x[200]; int len; while(x[len]!='\n') { x[++len]=getch(); putchar('*'); } bool ok=0; for(int i=1;i<=len-1;++i)if(x[i]!=PassWord[i-1])ok=0; if(x[len]!='\n')ok=0; if(!ok)Slowsay("密码错误"); else { Slowsay("密码正确,抄作业成功"); player1.HP-=5; player1.Money+=100; } } if(player1.HP<=0)Die(); } void Shop() { while(1) { Clear(); Slowsay("1.小血瓶 +10点血 10元"); Slowsay("2.中血瓶 +20点血 20元"); Slowsay("3.大血瓶 +50点血 50元"); Slowsay("4.小魔瓶 +10点蓝 10元"); Slowsay("5.中魔瓶 +20点蓝 20元"); Slowsay("6.大魔瓶 +50点蓝 50元"); Slowsay("7.小炸弹 50点伤害 10元"); Slowsay("8.中炸弹 100点伤害 20元"); Slowsay("9.大炸弹 200点伤害 50元"); Slowsay("+.原子弹 500点伤害 200元"); Slowsay("*.返回"); if(!ForestOpen)Slowsay("-.神秘钥匙"); int x,y; if(!ForestOpen)Slowsay("请输入你想买的东西(序号,1~9、+、*、-)"); else Slowsay("请输入你想买的东西(序号,1~9、+、*)"); x=getch(); if(x=='*')break; if(x!='-')Slowsay("请输入你想购买的数量"); y=getch()-48; if(y==0)continue; if(x=='+') { if(player1.Money>=200*y) { Slowsay("购买成功"); player1.Money-=200*y; player1.SuperAttack+=y; } else Slowsay("金钱不足,购买失败"); } if(x=='-'&&!ForestOpen) { if(player1.Money>=100000) { Slowsay("购买成功,森林已解锁"); player1.Money-=100000; ForestOpen=1; } else Slowsay("金钱不足,购买失败"); } x-=48; if(x==1) { if(player1.Money>=10*y) { Slowsay("购买成功"); player1.Money-=10*y; player1.SmallHP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==2) { if(player1.Money>=20*y) { Slowsay("购买成功"); player1.Money-=20*y; player1.MiddleHP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==3) { if(player1.Money>=50*y) { Slowsay("购买成功"); player1.Money-=50*y; player1.LargeHP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==4) { if(player1.Money>=10*y) { Slowsay("购买成功"); player1.Money-=10*y; player1.SmallMP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==5) { if(player1.Money>=20*y) { Slowsay("购买成功"); player1.Money-=20*y; player1.MiddleMP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==6) { if(player1.Money>=50*y) { Slowsay("购买成功"); player1.Money-=50*y; player1.LargeMP+=y; } else Slowsay("金钱不足,购买失败"); } if(x==7) { if(player1.Money>=10*y) { Slowsay("购买成功"); player1.Money-=10*y; player1.SmallAttack+=y; } else Slowsay("金钱不足,购买失败"); } if(x==8) { if(player1.Money>=20*y) { Slowsay("购买成功"); player1.Money-=20*y; player1.MiddleAttack+=y; } else Slowsay("金钱不足,购买失败"); } if(x==9) { if(player1.Money>=50*y) { Slowsay("购买成功"); player1.Money-=50*y; player1.LargeAttack+=y; } else Slowsay("金钱不足,购买失败"); } } } void Bets() { Clear(); srand((int)time(0)); Slowsay("1.猜大小"); Slowsay("2.猜点数"); int x,y,z; Slowsay("请输入你想赌的方式(序号,1~2)"); x=getch()-48; Slowsay("请输入你想下注的金额"); y=getch()-48; if(x==1) { Slowsay("猜大还是小?1大,2小"); z=getch()-48; srand((int)time(0)); int a1=rand()%6,a2=rand()%6; if(a1==0)a1=6; if(a2==0)a2=6; if((a1+a2>6&&z==1)||(a1+a2<=6&&z==2)) { Slowsay("你赢了,这些钱给你"); player1.Money+=y; } else { Slowsay("你输了,这些钱我拿走了"); player1.Money-=y; } } if(x==2) { srand((int)time(0)); int a1=rand()%6; if(a1==0)a1=6; Slowsay("你想猜多少点?"); z=getch()-48; if(z==a1) { Slowsay("你赢了,这些钱给你"); player1.Money+=y; } else { Slowsay("你输了,这些钱我拿走了"); player1.Money-=y; } } } void City() { while(1) { Clear(); Slowsay("1.打工"); Slowsay("2.商店"); Slowsay("3.赌博"); Slowsay("4.返回"); int x; Slowsay("请输入你想去的地方(序号,1~4)"); x=getch()-48; if(x==4)break; if(x==1)Work(); if(x==2)Shop(); if(x==3)Bets(); } } void SpecialFight() { Clear(); int HP=1000; int Attack=100; int Defence=100; int stop=0,burn=0,blood=0; if(player1.PetKind==4) { say("你的宠物狴犴使对方攻击降低"); printf("%lld",player1.PetLevel*10); Slowsay("点攻击"); Attack-=player1.PetLevel*8; } while(HP>0&&player1.HP>0) { Clear(); Slowsay("请输入你想执行的操作:"); Slowsay("1:攻击 2:使用技能"); int x,End=1; x=getch()-48; if(x<0||x>2)continue; if(x==1) { if(player1.Attack<Defence) { say("攻击小于对手防御,建议逃跑或使用道具"); printf("\n"); } else { int t=min(HP,player1.Attack-Defence); HP-=t; say("对敌人造成");printf("%d",t);say("点伤害"); printf("\n"); } } if(x==2) { say("请输入想要使用的技能编号:(1为火球术,2为雷暴术,3为治疗术,4为专属技能)"); printf("\n"); int y; y=getch()-48; if(y==1&&!player1.SKill1Level) { say("火球术尚未学习!"); printf("\n"); End=0; } if(y==2&&!player1.SKill2Level) { say("雷暴术尚未学习!"); printf("\n"); End=0; } if(y==3&&!player1.SKill3Level) { say("治疗术尚未学习!"); printf("\n"); End=0; } if(y==1&&player1.SKill1Level) { if(player1.MP<3) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用火球术,对敌人造成");printf("%lld",5*player1.SKill1Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗3点魔法值"); printf("\n"); HP-=5*player1.SKill1Level*int(player1.SkillUp+1); player1.MP-=3; } } if(y==2&&player1.SKill2Level) { if(player1.MP<5) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用雷暴术,对敌人造成");printf("%lld",10*player1.SKill2Level*int(player1.SkillUp+1));say("点伤害"); printf("\n"); say("消耗5点魔法值"); printf("\n"); HP-=10*player1.SKill2Level*int(player1.SkillUp+1); player1.MP-=5; } } if(y==3&&player1.SKill3Level) { if(player1.MP<10) { say("魔法值不足,使用失败"); printf("\n"); End=0; } else { say("使用治疗术,回复");printf("%lld",15*player1.SKill3Level*int(player1.SkillUp+1));say("点血量"); printf("\n"); say("消耗10点魔法值"); printf("\n"); player1.HP=min(player1.MaxHP,player1.HP+15*player1.SKill3Level*int(player1.SkillUp+1)); player1.MP-=10; } } if(y==4&&player1.Vocation==1&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; stop=1; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==2&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) HP-=player1.OwnSkillLevel*50; if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=20; } } if(y==4&&player1.Vocation==3&&player1.OwnSkill!=3) { if(player1.MP<20) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*50; blood=2; } if(player1.OwnSkill==2) HP-=player1.OwnSkillLevel*(player1.Attack-Defence); player1.MP-=20; } } if(y==4&&player1.Vocation==4&&player1.OwnSkill!=3) { if(player1.MP<30) { Slowsay("魔法值不足,使用失败"); End=0; } else { say("使用");say(player1.OwnSkillName); say(",对敌人造成"); if(player1.OwnSkill==1) { HP-=player1.OwnSkillLevel*45; burn=3; } if(player1.OwnSkill==2) { HP-=player1.OwnSkillLevel*(player1.Attack-Defence); stop=1; } player1.MP-=30; } } } if(End) { if(player1.PetKind==1) { say("你的宠物麒麟对黑衣男子造成了"); printf("%lld",min(20*player1.PetLevel,HP)); Slowsay("点伤害"); HP-=min(20*player1.PetLevel,HP); } if(player1.PetKind==3) { say("你的宠物狻猊对黑衣男子造成了"); printf("%lld",min(15*player1.PetLevel+100,HP)); Slowsay("点伤害"); HP-=min(15*player1.PetLevel+100,HP); } if(player1.PetKind==2) { say("你的宠物饕餮给你回了"); printf("%lld",player1.PetLevel*10); Slowsay("点血"); player1.HP+=player1.PetLevel*10; } if(!stop) { player1.HP-=Attack-player1.Defence<0?0:Attack-player1.Defence; say("黑衣男子对你造成了");printf("%lld",Attack-player1.Defence<0?0:Attack-player1.Defence);say("点伤害"); printf("\n"); } if(stop) { stop=0; Slowsay("黑衣男子被你定住,无法攻击"); } if(blood) { --blood; HP-=40; Slowsay("黑衣男子受到了40点流血伤害"); } if(burn) { --burn; HP-=30; Slowsay("黑衣男子受到了30点灼烧伤害"); } } } if(player1.HP<=0)Die(); else { Clear(); Slowsay("黑衣男子:不错嘛,小伙子!居然能战胜我!这里是100000元,就送你了!"); Slowsay("少年:真的吗!谢谢大叔!"); Slowsay("黑衣男子(默想):不愧是天选之子啊!看来,他能救出公主!"); player1.Money+=100000; Special=1; } } void Story1() { if(Special) { Clear(); Slowsay("这里什么也没有"); Slowsay("少年陷入了沉思:那个穿黑衣服的大叔呢?"); Slowsay("他可是个好人......"); return; } Clear(); Slowsay("少年:那个穿黑衣服的,你是谁?"); Slowsay("黑衣男子:你无需知道我是谁,因为你马上就会变成一具尸体!"); Slowsay("少年:你好大的口气,早晨没刷牙吧!"); Slowsay("黑衣男子:废话少说,看招!"); SpecialFight(); } void SuperFight() { Slowsay("精英关共有3关,中途死亡也没关系,回到原界面"); Slowsay("通关后获得丰厚奖励"); Slowsay("第一关:神圣狮子王;第二关:神圣石怪王;第三关:混沌魔王"); Fight(5); Fight(10); LastFight(); player1.Attack+=2333; player1.Defence+=2333; player1.HP=player1.MaxHP+=2333; player1.MP=player1.MaxMP+=2333; } void ChangeLog() { while(1) { Slowsay("您想查看那个版本的更新?(输入0退出)"); double x; scanf("%lf",&x); if(x==0.0)break; if(x<1.6) { Slowsay("抱歉,v1.6起才支持查看更新"); continue; } if(x>1.7) { Slowsay("对不起,我还没更新到此版本"); continue; } if(x==1.6) { Slowsay("对不起,咕咕了这么久,对于追玩的朋友表示抱歉"); Slowsay("加入新职业:魔法师"); Slowsay("大更战斗系统(向RPG靠拢)"); Slowsay("对其他职业进行修改"); Slowsay("修复抄作业没有输入的问题"); Slowsay("总体来说耗时不长,码量巨大"); } if(x==1.7) { Slowsay("增加了更人性化的设置系统"); Slowsay("修复部分已知Bug并进行优化"); Slowsay("感谢@空界_无尽和@louis_zhq"); } } } void Settings() { Slowsay("设置内容如下:1.语速 2.颜色"); int x; x=getch()-48; if(x==1) { Slowsay("请输入语速:"); int y; scanf("%d",&y); player1.SpeakSpeed=y; Slowsay("语速设置成功!"); } if(x==2) { Slowsay("请输入颜色:"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); Slowsay("1.白色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); Slowsay("2.红色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); Slowsay("3.绿色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE); Slowsay("4.蓝色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); Slowsay("5.黄色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE); Slowsay("6.粉色"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE); Slowsay("7.青色"); int y; y=getch()-48; if(y==1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); if(y==2)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); if(y==3)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); if(y==4)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE); if(y==5)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); if(y==6)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE); if(y==7)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE); if(y>0&&y<8)Slowsay("颜色设置成功!"); if(y<=0||y>=8)Slowsay("输入颜色错误!"); } } void MainMenu() { Clear(); Slowsay("1.森林(打怪)"); Slowsay("2.家(存档、睡觉等)"); Slowsay("3.学校(学习、吃奇怪的食物等)"); Slowsay("4.市中心(打工、买东西等)"); Slowsay("5.小巷子(未知)"); Slowsay("6.精英关(通关后有丰厚奖励)"); Slowsay("7.更新日志(v1.6起)"); Slowsay("8.设置"); Slowsay("9.结束游戏(自动保存)"); int x; Slowsay("请输入你想去的地方(序号,1~9)"); x=getch()-48; if(x==1&&ForestOpen)Forest(); if(x==1&&!ForestOpen)Slowsay("暂时无法进入,似乎需要什么神秘的钥匙"); if(x==2)Home(); if(x==3)School(); if(x==4)City(); if(x==5)Story1(); if(x==6)SuperFight(); if(x==7)ChangeLog(); if(x==8)Settings(); if(x==9) { Save(); life=0; } } int main() { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); Slowsay(" $$$天选之子v1.7$$$ "); Slowsay("作者:JXH 洛谷ID:地表最弱蒟蒻 QQ号:最好别加"); Sleep(5000); system("cls"); if(MessageBox(NULL,"是否读取存档?","天选之子",MB_YESNO)==6)Read(); else { player1.Attack=5; player1.HP=player1.MaxHP=player1.MaxMP=player1.MP=50; player1.Defence=player1.LargeAttack=player1.LargeHP=0; player1.LargeMP=player1.MiddleAttack=player1.MiddleHP=0; player1.MiddleMP=player1.SKill1Level=player1.SKill2Level=0; player1.SKill3Level=player1.SmallAttack=player1.SmallMP=0; player1.SuperAttack=0; Start(); } while(life)MainMenu(); } /* TODO:更新剧情 TODO:加入新职业 FIXME:剧情什么的闪的太快了,还有打完怪后的文字也看不清 (基本修复) */ ```