14 条题解
-
0
#include<random> #include<fstream> using namespace std;//2ecba4 #define pb push_back string inp,plnol[3]={"赚得金钱x1.5","赚得经验x1.5","敌人初始生命降低2点"}; struct cardef{ int atk,def,hel,lev,price; string name,type,nolio; bool buyl; }; cardef shop[15]; cardef allcards[30]={ {15,5,30,2,100,"1+1","水系替身","无",false}, {3,0,5,2,150,"小吃家","土系替身","被破坏时,对破坏自己的敌人造成25点伤害",false}, {1,0,1,1,50,"迷你吃家","普通替身","攻击时有20%概率直接破坏指向单位",false}, {0,0,50,2,75,"小78","土系替身","无",false}, {0,0,20,1,100,"迷你78","水系替身","无",false}, {7,8,15,1,150,"1*1","木系替身","被攻击时,可以通过使自身-1攻击力来减少一半",false}, {15,9,30,4,200,"肾蕨·孢子囊","毒系替身","在场上存活满3回合后,变为“肾蕨·幼苗”",false} }; cardef alldiren[30]={ {3,0,15,1,25,"迷你石蛙","普通替身","无",false}, {5,1,25,1,30,"小石蛙","金系替身","无",false}, {10,2,35,3,50,"中石蛙","火系替身","无",false} }; cardef thistime[3]; pair<int,int> timeguard[100]={{0,3},{1,5},{2,6}}; struct playertab{ string name,password,nol; int exp,lvl,money,ms,gk; vector<cardef>diki; }; playertab players[15]; void introduce(){ cout<<"-------------------------------------------"<<endl; cout<<"-------------------------------------------"<<endl; cout<<"普通替身:无特殊效果。"<<endl; cout<<"金系替身:每次攻击成功,减少1点护盾(最低0点),增加自己1点攻击。"<<endl; cout<<"木系替身:自首次上阵时开始计算,每三回合,若自己在场上,恢复自己5点生命。"<<endl; cout<<"水系替身:在敌方攻击自己的伤害结算阶段,有20%几率减免50%最终伤害。"<<endl; cout<<"火系替身:在自己攻击敌方的伤害结算阶段,有20%几率对敌人造成3回合的持续灼烧伤害(25%攻击力/回合)。"<<endl; cout<<"土系替身:在自己攻击敌方的伤害结算阶段,若伤害大于等于敌方护盾,可造成穿透伤害。"<<endl; cout<<"毒系替身:在自己攻击敌方的伤害结算阶段,有35%几率对敌人造成5回合的持续中毒伤害(2%敌人最大生命值/回合),并使敌人减少1点护盾。"<<endl; cout<<"雷系替身:每回合可行动2次,但行动第2次的同时减少2点护盾。"<<endl; cout<<"风系替身:在被破坏时,有10%几率不被破坏。"<<endl; cout<<"光系替身:在首次上阵时,使所有友方单位增加5点生命,2点攻击,2点护盾。"<<endl; cout<<"暗系替身:在破坏敌方单位时,将生命降低2,对敌人本体造成5点伤害。"<<endl; cout<<"霰系替身:不可作为效果所指定的对象。"<<endl; cout<<"澜系替身:当自己被破坏时,若破坏自己的敌方单位非水系替身,将其护盾归零。"<<endl; cout<<"墨系替身:在己方的结束阶段,增加自己2点生命,但降低1点攻击(最低1点)。"<<endl; cout<<"阴阳替身:在敌方攻击自己的伤害结算阶段,若此次攻击致命,有50%几率回到手牌。在自己攻击敌方的伤害结算阶段,若此次攻击致命,有50%几率将敌方除外。"<<endl; cout<<"坑人替身:在被攻击破坏时,对敌方本体造成本次受到攻击的溢出伤害。"<<endl; cout<<"-------------------------------------------"<<endl; cout<<"-------------------------------------------"<<endl; } void setmarket(int typer){ random_device rd; mt19937 gen(rd()); if(typer==0){ shop[0]={10,5,25,1,100,"活者","普通替身","无",false}; shop[1]={20,0,15,1,100,"交通堵塞","普通替身","无",false}; shop[2]={5,20,35,1,100,"亡灵","普通替身","无",false}; } if(typer==1){ bool vis[7]={0,0,0,0,0,0,0}; int p=0; uniform_int_distribution<> distrib(0, 6); while(p!=5){ int uses=distrib(gen); if(vis[uses]!=1){ p++; vis[uses]=1; shop[p-1]=allcards[uses]; } } } } void intomarket(int vty){ cout<<"-------------------------------------------"<<endl; cout<<"你的金钱:"<<players[0].money<<endl; if(vty==0){ cout<<"白蛇:“光碟大甩卖!!!全场十折!!!”"<<endl; for(int i=0;i<3;i++){ cout<<i+1<<". "<<shop[i].name<<' '<<"价格:"<<shop[i].price<<endl; cout<<"属性:"<<"生命: "<<shop[i].hel<<' '<<"攻击: "<<shop[i].atk<<' '<<"防御: "<<shop[i].def<<endl; cout<<"特性:"<<"种类:"<<shop[i].type<<' '<<"等级:"<<shop[i].lev<<endl; cout<<"能力: "<<shop[i].nolio<<endl; cout<<endl; } cout<<"白蛇:“你要买什么呢?(输入-1退出!)”"<<endl; cout<<"-------------------------------------------"<<endl; while(1){ cin>>inp; if(inp=="-1"){ cout<<"-------------------------------------------"<<endl; return; } if(inp!="1"&&inp !="2"&&inp != "3"){ cout<<"X:你到底想不想买?给我看有东西的柜子!!!(恼)"<<endl; continue; } else{ if(shop[inp[0]-'0'-1].buyl==true){ cout<<"买过辣!"<<endl; continue; } if(shop[inp[0]-'0'-1].price>players[0].money){ cout<<"马内不足!!!"<<endl; continue; } players[0].money-=shop[inp[0]-'0'-1].price; players[0].diki.pb(shop[inp[0]-'0'-1]); shop[inp[0]-'0'-1].buyl=true; cout<<"购买成功!"<<endl; cout<<"你现在的金钱:"<<players[0].money<<endl; } } } if(vty==1){ cout<<"白蛇:“欢迎光临!!!您要点什么呢?”"<<endl; for(int i=0;i<5;i++){ cout<<i+1<<". "<<shop[i].name<<' '<<"价格:"<<shop[i].price<<endl; cout<<"属性:"<<"生命: "<<shop[i].hel<<' '<<"攻击: "<<shop[i].atk<<' '<<"防御: "<<shop[i].def<<endl; cout<<"特性:"<<"种类:"<<shop[i].type<<' '<<"等级:"<<shop[i].lev<<endl; cout<<"能力: "<<shop[i].nolio<<endl; cout<<endl; } cout<<"白蛇:“你要买什么呢?(输入-1退出!)”"<<endl; cout<<"-------------------------------------------"<<endl; while(1){ cin>>inp; if(inp=="-1"){ cout<<"-------------------------------------------"<<endl; return; } if(inp!="1"&&inp !="2"&&inp != "3"&&inp != "4"&&inp != "5"){ cout<<"X:你到底想不想买?给我看有东西的柜子!!!(恼)"<<endl; continue; } else{ if(shop[inp[0]-'0'-1].buyl==true){ cout<<"买过辣!"<<endl; continue; } if(shop[inp[0]-'0'-1].price>players[0].money){ cout<<"马内不足!!!"<<endl; continue; } players[0].money-=shop[inp[0]-'0'-1].price; players[0].diki.pb(shop[inp[0]-'0'-1]); shop[inp[0]-'0'-1].buyl=true; cout<<"购买成功!"<<endl; cout<<"你现在的金钱:"<<players[0].money<<endl; } } } } void shuxing(){ cout<<"-------------------------------------------"<<endl; cout<<players[0].name<<"的属性:"<<endl; cout<<"名字:"<<players[0].name<<endl; cout<<"金钱:"<<players[0].money<<endl; cout<<"魔法石:"<<players[0].ms<<endl; cout<<"等级:"<<players[0].lvl<<endl; cout<<"经验:"<<players[0].exp<<endl; cout<<"能力:"<<players[0].nol<<endl; cout<<"卡组:"<<endl; for(int i=0;i<players[0].diki.size();i++){ cout<<i+1<<". "<<players[0].diki[i].name<<endl; cout<<"属性:"<<"生命: "<<players[0].diki[i].hel<<' '<<"攻击: "<<players[0].diki[i].atk<<' '<<"防御: "<<players[0].diki[i].def<<endl; cout<<"特性:"<<"种类:"<<players[0].diki[i].type<<' '<<"等级:"<<players[0].diki[i].lev<<endl; cout<<"能力: "<<players[0].diki[i].nolio<<endl; cout<<endl; } cout<<"-------------------------------------------"<<endl; } void adventure(){ cout<<"X:前面的区域以后再来探索吧~~~"<<endl; cout<<"当前关卡:"<<players[0].gk<<endl; cout<<"是否挑战?"<<endl; cin>>inp; if(inp=="是"){ random_device rd; mt19937 gen(rd()); for(int i=0;i<3;i++){ thistime[i]={0,0,0,0,0,"","","",false}; } bool vis[30]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uniform_int_distribution<> distrib1(timeguard[players[0].gk].first,timeguard[players[0].gk].second); uniform_int_distribution<> distrib2(1,3); int these=distrib2(gen); int p=0; while(p!=these){ int used=distrib1(gen); if(vis[used]==0){ vis[used]=1; thistime[p]=allcards[used]; p+=1; } else{ continue; } } } else{ cout<<"???:给我GG!"<<endl; return; } } void solve(){ cout<<"-------------------------------------------"<<endl; cout<<"欢迎!请登录账号!"<<endl; cout<<"你的名字是:"; cin>>inp; players[0].name=inp; cout<<"你的能力:"<<endl<<"1.赚得金钱x1.5 2.赚得经验x1.5 3.敌人初始生命降低2点"<<endl; cout<<"你的选择:"; while(1){ cin>>inp; if((inp!="1" )&&(inp !="2")&&(inp != "3")){ cout<<"错误输入!请输入数字!"<<endl; } else{ players[0].nol=plnol[inp[0]-'0'-1]; break; } } cout<<"登录完成!欢迎您,"<<players[0].name<<"!"<<endl; players[0].money=100; players[0].ms=0; players[0].gk=1; cout<<"-------------------------------------------"<<endl; cout<<"introduce.名词介绍 0.查看状态 1.白蛇的商店 2.牢板的陷阱店 3.齐贝林的魔法店 4.出发吧!!! exit.退出"<<endl; cout<<"请输入“1”前往买卡!!!"<<endl; inp="10"; while(inp!="1"){ cin>>inp; if(inp=="exit"){ exit(0); } if(inp!="1"){ cout<<"你TMD给我按“1”!!!!!"<<endl; } } setmarket(0); intomarket(0); cout<<"???:“那么,祝你好运!”"<<endl; cout<<"你:“布什戈门,你谁?”"<<endl; while(true){ cout<<"introduce.名词介绍 0.查看状态 1.白蛇的商店 2.牢板的陷阱店 3.齐贝林的魔法店 4.出发吧!!! exit.退出"<<endl; cin>>inp; if(inp[0]-'0'!=0&&inp[0]-'0'!=1&&inp[0]-'0'!=2&&inp[0]-'0'!=3&&inp[0]-'0'!=4&&inp!="exit"&&inp!="introduce"){ cout<<"X:“你这家伙,想什么呢?”"<<endl; } if(inp=="introduce"){ introduce(); } if(inp=="0"){ shuxing(); } if(inp=="1"){ setmarket(1); intomarket(1); } if(inp=="4"){ adventure(); } if(inp=="exit"){ exit(0); } } } int main(){ int T=1; for(int i=0;i<15;i++){ players[i]={"","","",0,0,0,0,0,{}}; shop[i]={0,0,0,0,0,"","","",false}; } while(T--){ solve(); } return 0; }
信息
- ID
- 13833
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 14
- 已通过
- 0
- 上传者