先手: 1:玩家1; 2:玩家2; 3:随机
输入先手: [fst]
----------玩家1回合! 护甲:([r1])[p1j]/[p1jm] 血量:[p1hp]/[p1hm]
你准备使用
1.山楂 2.面包 3.鸟 4.无菌蛋([p1d]) 5.风扇([p1s]) 6.小蜘蛛
7.烤土豆([p1f]) 8.大蜘蛛([p1dz] <[p1w+1]回合后+1>) 9.烧饼
输入使用物品: [xj[1]]
玩家2回合! 护甲:([r1])[p2j]/[p2jm] 血量:[p2hp]/[p2hm]----------
你准备使用
1.山楂 2.面包 3.鸟 4.无菌蛋([p2d]) 5.风扇([p2s]) 6.小蜘蛛
7.烤土豆([p2f]) 8.大蜘蛛([p2dz] <[p2w+1]回合后+1>) 9.烧饼
输入使用物品: [xj[1]]
注: [] 里面的代表变量
#include <bits/stdc++.h> /*加压 1.0.0 beta2 */
#include <time.h>
using namespace std;
double hp,h,j,js,hm,jm,lh,wh,lj,as=1,xh,ad;//hp血量,h伤害,j护甲,js甲伤,hm最大血量,jm护甲上限,lh上次的血量,wh使用风扇前的伤害,lj上次的护甲,as风扇增加的伤害,xh小蜘蛛伤害,ad增加
int r1,r2,r3,r4,r5,c,d=2,f=1,s=1,w=6,dz=1,te=0,ne=0,hlv=0;//r均为随机数,c次数,d无菌蛋次数,f烤土豆次数,s无菌蛋次数,w等待次数,z大蜘蛛次数,te(指令)变量,ne击杀敌人数量,hlv受伤等级
bool ms=0,zl=0,zz=0,fu=0,tt=0;//ms风扇增加伤害,zl指令,zz使用蜘蛛,fu使用烤土豆,tt有效回合
string xj[5],mode; //xj使用道具
void eme() {
cout<<"\n";
r3=0;
xh=(rand()%50+60)/10.0;//6~11
r1=rand()%6+1;//护甲等级
r2=rand()%3+1;//护甲值
if(mode!="2") r3=rand()%50+10;//彩蛋概率:5%
if(r3!=50&&r3!=49) {
if(r1==1) {
j=10*r2;
if(mode!="2") cout<<"对方1甲耐久:"<<j<<"/"<<j;
}
if(r1==2) {
j=20*r2;
if(mode!="2") cout<<"对方2甲耐久:"<<j<<"/"<<j;
}
if(r1==3) {
j=30*r2;
if(mode!="2") cout<<"对方3甲耐久:"<<j<<"/"<< j;
}
if(r1==4) {
j=35*r2;
if(mode!="2") cout<<"对方4甲耐久:"<<j<<"/"<<j;
}
if(r1==5) {
r2++;
j=45*r2;
if(mode!="2") cout<<"对方5甲耐久:"<<j<<"/"<<j;
}
if(r1==6) {
r2++;
j=60*r2;
if(mode!="2") cout<<"对方6甲耐久:"<<j<<"/"<<j;
}
hp=100;
}
if(mode!="2") {
if(r3==50||r3==49) {
hp=250*r2;
j=100*r2;
r1=7;
cout<<"对面是桂! (7级)护甲:"<<j<<"/"<<j;
}
}
jm=j;
lh=hp;
hm=hp;
lj=j;
hlv=0;
}
void dr(int x,int y,string z) {//x = j,y = r1,z = xj
if(z=="1") {
h=(rand()%1100+200)/10.0;
if(r1>3) h=(double)h/(double)(r1/2.1);
else if(r1!=1) h=(double)h/(double)(r1/1.7); //1 -> 1.1; 2 -> 1.18; 3 -> 1.76; 4 -> 1.9; 5 -> 2.38; 6 -> 2.86
else h=(double)h/1.1;
wh=h;
h*=as;
j-=h;
cout << "\nBOOM!!!";
if(lj > 0 && j <= 0) {
r4 = rand() % 3 + 1; //随机语言
if(r4 == 1) cout << "\n我的甲呀!";
if(r4 == 2) cout << "\n我的假牙!";
if(r4 == 3) cout << "\n我的加压!";
}
} else if(z=="2") {
h=(rand()%350+50)/10.0; //5.0 ~ 40.0
r4=rand()%2+1;//随机语言
if(r4== 1) cout<<"\n敌人中陷阱了!";
if(r4== 2) cout<<"\n陷阱被触发了!";
if(r1>3) j-=h/(r1/2);
else j-=(h+5);
wh=h;
h*=as;
hp-=h;
} else if(z=="3") {
h=(rand()%450)/10.0;
if(h==0)h+=0.1;
wh=h;
js=(rand()%(int)(h*10))/10.0;
h*=as;
js*=as;
j-=js;
hp-=h-js;
ad=(rand()%5)-1;// -1 0 1 2 3
if(ad<1&&mode=="1") { // 减少次数概率:40%
cout << "\n鸟-电磁脉冲:你没能有效地控制敌人! 你的游戏次数-1次!";
c--;
} else if(ad==1&&mode=="1") cout<<"\n鸟-电磁脉冲:无事发生......"; //无事发生概率:20%
else if(mode=="1") {
cout<<"\n鸟-电磁脉冲:你眩晕了敌人! 你的游戏次数+1次!"; //增加次数概率:40%
c++;
}
} else if(z=="4") {
if(d>0) {
d--;
h=1.0;
wh=h;
if(j>0)j-=0.3;
hp-=h*as;
ad=(rand()%4)-1; // -1 0 1 2
if(ad<0&&mode=="1") { // 减少次数概率:25%
cout << "\n无菌蛋-电磁脉冲:你没能有效地控制敌人! 你的游戏次数-1次!";
c--;
} else if(ad==0&&mode=="1") cout<<"\n无菌蛋-电磁脉冲:无事发生......"; //无事发生概率:25%
else if(mode=="1") {
cout<<"\n无菌蛋-电磁脉冲:你眩晕了敌人! 你的游戏次数+2次!"; //增加次数概率:50%
c+=ad;
}
if(lh>0&&hp<=0&&mode=="1") {
cout<<"\n\n-------达成挑战:无菌蛋杀手 ! (难度:A- 使用无菌蛋击杀1名敌人) 奖励 3 次数!-------\n";
c+=3;
}
if(lj>0&&j<=0&&mode=="1") {
cout << "\n\n-------达成挑战:我的甲 ! (难度:S- 使用无菌蛋碎甲) 奖励 9 次数!-------\n";
c += 9;
}
} else {
cout<<"\n无菌蛋次数耗尽!";
c++;
return ;
}
} else if(z=="5") {
if(s<=0) {
cout<<"\n风扇次数耗尽!";
c++;
return ;
}
ms=true;
as=(rand()%50+175)/100.00;
cout<<"\n(不消耗次数)有人的耳膜炸了! 下次伤害"<<as<<"倍";
s--;
c++;
} else if(z=="6") {
cout<<"\nT仔出动!";
wh=xh;
if(r1 > 3) j-=(double)xh/(double)(r1 / 1.4)*as;
else j-=(double)xh/(double)r1*as;
zz=true;
} else if(z=="7") {
if(f<=0) {
cout<<"\n烤土豆次数耗尽!";
c++;
return ;
}
fu=true;
h=(rand()%50+70)/10.0;
wh=h;
for (int i=1; i<=rand()%10+4; i++) {
cout<<"-"<<h<<" ";
hp-=h*as;
h=(rand()%55+75)/10.0;
}
f--;
} else if(z=="8") {
if(dz<=0) {
cout<<"\n大蜘蛛次数耗尽!";
c++;
return ;
}
cout<<"\n";
r5=rand()%100+1; //增加的道具 26:25:24:7:7:7:4
if(r5<=26) {
cout<<"你获得了 无菌蛋!";
d++;
} else if(r5<=51) {
cout<<"你获得了 风扇!";
s++;
} else if(r5<=75) {
cout<<"你获得了 烤土豆!";
f++;
} else if(r5<=82) {
cout<<"你获得了 无菌蛋 与 风扇!";
d++;
s++;
} else if(r5<=89) {
cout<<"你获得了 无菌蛋 与 烤土豆!";
d++;
f++;
} else if(r5<=96) {
cout<<"你获得了 风扇 与 烤土豆!";
s++;
f++;
} else {
cout<<"你获得了 无菌蛋, 烤土豆 与 风扇!";
if(mode=="1") {
cout<<"\n\n-------达成挑战:运气 ! (难度:B 大蜘蛛获得3个道具) 奖励 3 次数!-------\n";
c+=3;
}
d++;
s++;
f++;
}
h=(rand()%50+30)/10.0; //3.0~8.0
wh=h;
h*=as;
if(j>=h) {
j-=h;
hp-=h;
} else j-=h*2;
dz--;
} else if(z=="9") {
h=(rand()%40+60)/10.0; //6.0~10.0
hlv+=1;
wh=h;
h*=as;
hp-=h;
} else {
cout<<"\n输出正确的数字!";
c++;
}
if(z!="1"&&z!="2"&&z!="3"&&z!="4"&&z!="6"&&z!="7"&&z!="8"&&z!="9") return ;
if(j<=0) {
hp+=j;
j=0;
}
if(hlv>=1) {
hp-=pow(hlv,1.2);
cout<<"\n血量流失"<<fixed<<setprecision(1)<<pow(hlv,1.2)<<"点!";
if(rand()%5==0) hlv--;
}
if(ms) {
if(!zz&&!fu) {
cout<<"伤害增加"<<fixed<<setprecision(1)<<h-wh;
} else if(fu) {
cout<<"\n使用风扇后不可使用烤土豆!";
s++;
} else if(zz) {
cout<<"伤害增加"<<fixed<<setprecision(1)<<xh-wh;
}
}
cout<<"\n血量:"<<fixed<<setprecision(1)<<hp<<"/"<<hm<<" 护甲";
cout<<fixed<<setprecision(1)<<j<<"/"<<jm;
cout<<fixed<<setprecision(1)<<"\n护甲减少:"<<lj - j;
cout<<fixed<<setprecision(1)<<" 护甲共减少"<<jm - j;
if(hp<hm) {
cout<<fixed<<setprecision(1)<<"\n血量减少:"<<lh-hp;
cout<<fixed<<setprecision(1)<<" 血量共减少:"<<hm-hp;
}
if(hp<=0&&jm*0.8<j&&lh>0&&mode=="1") {
cout<<"\n\n-------达成挑战:夺舍 ! (难度:C- 击杀时 护甲耐久 > 80%) 奖励 1 次数!-------\n";
c++;
}
lh=hp;
lj=j;
if(ms) ms=false;
as=1;
xh+=(rand()%40+50)/10.0;//5~9
zz=false;
fu=false;
tt=true;
if(w==0) {
w=6;
dz++;
} else if(tt) w--;
return ;
}
void pvp(int x,int y,string z) { //x = j,y = r1,z = xj
cout<<endl;
if(mode!="2")
//cout<<"暂未开放!";
//return ;
eme();
int p1j=j,p1jm=jm,p1hp=100,p1hm=100,p1d=1,p1s=1,p1f=1,p1dz=1,p1w; //j甲,jm甲上限,hp血量,hm血量上限,d无菌蛋数量,s风扇数量,f烤土豆数量,dz大蜘蛛,w大蜘蛛等待次数
int p2j=j,p2jm=jm,p2hp=100,p2hm=100,p2d=1,p2s=1,p2f=1,p2dz=1,p2w;
int fs;//先手随机
string fst;//先手
cout<<"先手: 1:玩家1; 2:玩家2; 3:随机\n输入先手:";
cin>>fst;
bool suc=false;//胜利
while(suc==false) {
if(fst=="1") {
fst="2";
printf("\n----------玩家1回合! 护甲:(%d)%d/%d 血量:%d/%d\n",r1,p1j,p1jm,p1hp,p1hm);
cin>>xj[1];
} else if(fst == "2") {
fst="1";
printf("\n玩家2回合! 护甲:(%d)%d/%d 血量:%d/%d----------\n",r1,p2j,p2jm,p2hp,p2hm);
cin>>xj[1];
} else if(fst == "3") {
fs=rand()%2+1;
if(fs==1) fst="1";
if(fs==2) fst="2";
} else {
cout<<"";
suc=false;
}
}
}
void eve(int x,int y,string z) { //x=j,y=r1,z=xj
while(true) {
if(hp<=0) {
cout<<"\n\n第"<<ne+1<<"个敌人\n";
eme();
ne++;
}
printf("\n你准备使用\n(1.山楂 2.面包 3.鸟 4.无菌蛋(%d) 5.风扇(%d) 6.小蜘蛛 7.烤土豆(%d) 8.大蜘蛛(%d [%d回合后+1]) 9.烧饼):",d,s,f,dz,w+1);
tt=false;
cin>>xj[1];
dr(j,r1,xj[1]);
}
return ;
} /*--------以下为 main--------*/
int main() {
srand(time(0));
cout<<"请输入游戏模式\n1.单人模式 只有1个敌人!\n2.双人对战 互相对打,看谁运气好!\n3.无尽模式 无尽的敌人! 无尽的次数! 一个又一个!\n输入模式:";
cin>>mode;
if(zl==false&&te==0&&mode=="2"||mode=="3") {
if(mode=="2") pvp(j,r1,xj[1]);
else eve(j,r1,xj[1]);
return 0;
}
eme();
if(mode=="1") {
cout<<"\n请输入你的游玩次数(1~20):";
cin>>c;
if(!(c>=1&&c<=20)) {
cout<<"游戏次数有误!";
return 0;
}
}
for(int i=1; i<=c; i++) {
if(te==2) te=0;
if(te==1) te++;
if(zl==false) {
if(c-i+1!=1) cout<<"\n\n你还剩"<<c-i+1<<"次游戏机会! ";
else cout<<"\n\n最后1次游戏机会! ";
printf("你准备使用\n(1.山楂 2.面包 3.鸟 4.无菌蛋(%d) 5.风扇(%d) 6.小蜘蛛 7.烤土豆(%d) 8.大蜘蛛(%d [%d回合后+1]) 9.烧饼):",d,s,f,dz,w+1);
}
zl=false;
tt=false;
cin>>xj[1];
if(xj[1]=="/time"||xj[1]=="/health"||xj[1]=="/jia") {
cin>>xj[2];
if(xj[2]=="add"||xj[2]=="set") {
cin>>ad;
if(ad>=0&&ad<2147483647) {
if(xj[1]=="/time") {
if(xj[2]=="add") {
c+=ad+1;
cout<<"\n已将游戏次数增加"<<(int)ad;
} else {
c=ad+1;
cout<<"\n已将游戏次数设为"<<(int)ad;
}
} else if(xj[1]=="/health") {
if(xj[2]=="add") {
hp+=ad;
cout<<"\n已将血量增加"<<(int)ad;
} else {
hp=ad;
cout<<"\n已将血量设为"<<(int)ad;
}
hm=hp;
lh=hp;
cout<<"\n血量:"<<fixed<<setprecision(1)<<hp<<"/"<<hm;
c++;
} else if(xj[1]=="/jia") {
if(xj[2]=="add") {
j+=ad;
cout<<"\n已将护甲增加"<<ad;
} else {
j=ad;
cout<<"\n已将护甲设为"<<ad;
}
jm=j;
lj=j;
cout<< "\n护甲:"<<fixed<<setprecision(1)<<j<<"/"<<jm;
c++;
}
} else {
cout<<"> 错误的函数 ,在 "<<ad<<"\n输入任意字符继续游玩...";
zl=true;
c+=2;
te++;
}
}
} else {
if(zl==false&&te==0&&mode=="1") dr(j,r1,xj[1]);
}
}
return 0;
}