#include<bits/stdc++.h>
using namespace std;
int jg(){
int p1=rand()%6+1,p2=rand()%6+1;
if(p1<=3)p1=1;
else if(p1<=5)p1=2;
else p1=3;
if(p2<=3)p2=1;
else if(p2<=5)p2=2;
else p2=3;
cout<<"你抽到了:"<<endl;
cout<<"1、一个 "<<p1<<" 技能"<<endl;
cout<<"2、一个 "<<p2<<" 技能"<<endl;
cout<<"选哪个?"<<endl;
int p;
while(cin>>p){
if(1<=p&&p<=2){
break;
}
cout<<"精神病!"<<endl;
}
if(p==1)return p1;
return p2;
}
int djn(){
int p1=rand()%6+1,p2=rand()%6+1;
if(p1<=3)p1=1;
else if(p1<=5)p1=2;
else p1=3;
if(p2<=3)p2=1;
else if(p2<=5)p2=2;
else p2=3;
return max(p1,p2);
}
int js(int lz,int yb){
int ans=0;
for(int i=1;i<=yb;++i){
int gl=rand()%100+1;
if(gl<=50+lz)ans++;
}
return ans;
}
int jb[4][4][4];
int main(){
srand(time(0));
cout<<"选择你需要第几组技能:"<<endl;
cout<<"1、一技能基础3 2币 变动值4,二技能基础4 3币 变动值4,三技能基础4 4币 变动值3 "<<endl;
cout<<"2、你的理智回复/2,一技能基础8 2币 变动值-2 使用时-7理智,二技能基础16 4币 变动值-4 使用时-10理智,三技能基础30 3币 变动值-12 使用时-15理智 "<<endl;
cout<<"3、一技能基础3 1币 变动值8 使用时+5理智 ,二技能基础6 4币 变动值3,三技能基础4 4币 变动值7"<<endl;
cout<<"4、一技能基础6 2币 变动值3,二技能基础12 4币 变动值1,三技能基础8 4币 变动值6"<<endl;
jb[1][1][1]=3,jb[1][1][2]=2,jb[1][1][3]=4;
jb[1][2][1]=4,jb[1][2][2]=3,jb[1][2][3]=4;
jb[1][3][1]=4,jb[1][3][2]=4,jb[1][3][3]=3;
jb[2][1][1]=8,jb[2][1][2]=2,jb[2][1][3]=-2;
jb[2][2][1]=16,jb[2][2][2]=4,jb[2][2][3]=-4;
jb[2][3][1]=30,jb[2][3][2]=3,jb[2][3][3]=-12;
jb[3][1][1]=3,jb[3][1][2]=1,jb[3][1][3]=8;
jb[3][2][1]=6,jb[3][2][2]=4,jb[3][2][3]=3;
jb[3][3][1]=4,jb[3][3][2]=4,jb[3][3][3]=7;
jb[4][1][1]=6,jb[4][1][2]=2,jb[4][1][3]=3;
jb[4][2][1]=12,jb[4][2][2]=4,jb[4][2][3]=1;
jb[4][3][1]=8,jb[4][3][2]=4,jb[4][3][3]=6;
int p;
while(cin>>p){
if(p<1||p>4)cout<<"精神病!"<<endl;
else break;
}
int rj=0;
while(rj=rand()%4+1){
if(rj!=p)break;
}
cout<<"对方用"<<rj<<"!"<<endl;
double jb1=1,jb2=1;
if(p==2)jb1=0.5;
if(rj==2)jb2=0.5;
int hp=4444,dhp=4444,lz=0,dlz=0;
while(hp>0&&dhp>0){
lz=min(45,lz),lz=max(-45,lz);
dlz=min(45,dlz),dlz=max(-45,dlz);
cout<<"你的血量:"<<hp<<endl;
cout<<"敌人血量:"<<dhp<<endl;
cout<<"你的理智:"<<lz<<endl;
cout<<"敌人理智:"<<dlz<<endl;
int p1=jg(),p2=djn();
cout<<"敌人使用 "<<p2<<" 技能!"<<endl;
if(p==2){
if(p1==1)cout<<"你失去7点理智!"<<endl,lz-=7;
else if(p1==2)cout<<"你失去10点理智!"<<endl,lz-=10;
else if(p1==3)cout<<"你失去15点理智!"<<endl,lz-=15;
}
if(p==3){
if(p1==1)cout<<"你回复5点理智"<<endl,lz+=5;
}
if(rj==2){
if(p2==1)cout<<"人机失去7点理智!"<<endl,dlz-=7;
else if(p2==2)cout<<"人机失去10点理智!"<<endl,dlz-=10;
else if(p2==3)cout<<"人机失去15点理智!"<<endl,dlz-=15;
}
if(rj==3){
if(p2==1)cout<<"人机回复5点理智"<<endl,dlz+=5;
}
int yb=jb[p][p1][2],dyb=jb[rj][p2][2];
while(yb>0&&dyb>0){
int wl=jb[p][p1][1]+jb[p][p1][3]*js(lz,yb);
int dwl=jb[rj][p2][1]+jb[rj][p2][3]*js(dlz,dyb);
cout<<"你:"<<wl<<endl;
cout<<"他:"<<dwl<<endl;
if(wl==dwl)cout<<"拼平!"<<endl;
else if(wl>dwl)cout<<"拼点胜利!"<<endl,dyb--;
else cout<<"拼点失败!"<<endl,yb--;
}
if(dyb!=jb[rj][p2][2])cout<<"你回复"<<8+(jb[rj][p2][2]-dyb)*2<<"点理智!"<<endl,lz+=jb1*(8+(jb[rj][p2][2]-dyb)*2);
if(yb!=jb[p][p1][2])cout<<"敌人回复"<<8+(jb[p][p1][2]-yb)*2<<"点理智!"<<endl,dlz+=jb2*(8+(jb[p][p1][2]-yb)*2);
lz=min(45,lz),lz=max(-45,lz);
dlz=min(45,dlz),dlz=max(-45,dlz);
if(yb>0){
int wl=jb[p][p1][1];
for(int i=1;i<=yb;++i){
int gl=rand()%100+1;
if(gl<=50+lz)wl+=jb[p][p1][3];
cout<<"你对他造成"<<wl<<"点伤害!"<<endl;
dhp-=wl;
}
}else{
int wl=jb[rj][p2][1];
for(int i=1;i<=dyb;++i){
int gl=rand()%100+1;
if(gl<=50+dlz)wl+=jb[rj][p2][3];
cout<<"他对你造成"<<wl<<"点伤害!"<<endl;
hp-=wl;
}
}
system("pause");
system("cls");
}
if(hp>0)cout<<"你赢!"<<endl;
else cout<<"你败!"<<endl;
return 0;
}