游戏入口(windows)
#include <bits/stdc++.h> /*加压 1.1.5 */
#include <time.h>
#include <windows.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,ec,dz=1,te=0,sc=0,ne=0,hlv=0;//r均为随机数,c次数,d无菌蛋次数,f烤土豆次数,s无菌蛋次数,w等待次数,ec无尽模式次数,dz大蜘蛛次数,te(指令)变量,sc无尽模式分数,ne击杀敌人数量,hlv受伤等级
bool ms=0,zl=0,zz=0,fu=0,tt=0;//ms风扇增加伤害,zl指令,zz使用蜘蛛,fu使用烤土豆,tt有效回合
string xj[5],mode; //xj使用道具
void sec(int x) { //0=黑 1=蓝 2=绿 3=青 4=红 5=紫 6=黄 7=白 8=灰 9=亮蓝 10=亮绿 11=亮青 12=亮红 13=亮紫 14=亮黄 15=亮白
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
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(r1==2) {
j=20*r2;
}
if(r1==3) {
j=30*r2;
}
if(r1==4) {
j=35*r2;
}
if(r1==5) {
r2++;
j=45*r2;
}
if(r1==6) {
r2++;
j=60*r2;
}
if(mode!="2") cout<<"对方"<<r1<<"甲耐久:"<<j<<"/"<<j;
hp=100;
}
if(mode!="2") {
if(r3==50||r3==49) {
hp=250*r2;
j=100*r2;
r1=7;
sec(4);
cout<<"对面是桂! (7级)护甲:"<<j<<"/"<<j;
sec(7);
}
}
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()%900+150)/10.0; //15-105
if(j>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;
sec(6);
cout<<"\nBOOM!!!";
sec(7);
if(lj>0&&j<=0) {
sec(4);//红色
r4=rand()%3+1; //随机语言
if(r4==1) cout<<"\n我的甲呀!";
if(r4==2) cout<<"\n我的假牙!";
if(r4==3) cout<<"\n我的加压!";
sec(7);
}
} else if(z=="2") {
h=(rand()%350+50)/10.0; //5.0 ~ 40.0
sec(4);
r4=rand()%2+1;//随机语言
if(r4==1) cout<<"\n敌人中陷阱了!";
if(r4==2) cout<<"\n陷阱被触发了!";
sec(7);
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
sec(11);
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<<"你获得了 无菌蛋, 烤土豆 与 风扇!";
sec(7);
if(mode=="1") {
cout<<"\n\n-------达成挑战:运气 ! (难度:B 大蜘蛛获得3个道具) 奖励 3 次数!-------\n";
c+=3;
}
d++;
s++;
f++;
}
sec(7);
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 {
sec(2);
cout<<"\n输出正确的数字!";
sec(7);
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) {
sec(4);
if(hp-pow(hlv,1.3)<1&&hp>=1) {
cout<<"\n血量流失"<<fixed<<setprecision(1)<<hp-1<<"点!";
hp=1;
} else if(hp<1) {
cout<<"\n血量流失"<<fixed<<setprecision(1)<<0.0<<"点!";
} else {
hp-=pow(hlv,1.3);
cout<<"\n血量流失"<<fixed<<setprecision(1)<<pow(hlv,1.3)<<"点!";
}
sec(7);
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--;
cout<<endl;
return ;
}
void pvp(int x,int y,string z) { //x = j,y = r1,z = xj
cout<<endl;
eme();
float p1j=j,p1jm=jm,p1hp=100,p1hm=100,p1d=1,p1s=1,p1f=1,p1dz=1,p1w,p1lj=j,p1lh=100; //j甲,jm甲上限,hp血量,hm血量上限,d无菌蛋数量,s风扇数量,f烤土豆数量,dz大蜘蛛,w大蜘蛛等待次数,lj上次的甲,lh上次的血量
float p2j=j,p2jm=jm,p2hp=100,p2hm=100,p2d=1,p2s=1,p2f=1,p2dz=1,p2w,p2lj=j,p2lh=100;
int fs;//先手随机
string fst;//先手
cout<<"先手: 1:玩家1; 2:玩家2; 3:随机\n输入先手:";
cin>>fst;
bool suc=false;//胜利
while(suc==false) {
if(fst!="3")cout<<endl<<"-------------next-------------"<<endl;
if(fst=="1") {
fst="2";
cout<<"\n----------玩家1回合! 护甲:("<<r1<<")"<<p1j<<"/"<<p1jm<<" 血量:"<<p1hp<<"/"<<p1hm<<"\n";
printf("你准备使用\n1.山楂 2.面包 3.风扇(%d)\n输入道具:",(int)p1s);
cin>>xj[1];
if(xj[1]=="1") {
float h=(rand()%850+250)/10.0; //25-110
if(p2j>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;
}
p1lh=p1hp;
p1lj=p1j;
//h*=as;
p2j-=h;
cout<<"\nBOOM!!!";
} else if(xj[1]=="2") {
h=40;
p1lh=p1hp;
p1lj=p1j;
//h*=as;
p2hp-=h;
} else if(xj[1]=="3") {
sec(2);
cout<<"暂未开放!";
sec(7);
fst="1";
continue;
}
if(p2j<=0) {
p2hp+=p2j;
p2j=0;
}
cout<<fixed<<setprecision(1)<<"\n护甲减少:"<<p2lj-p2j<<" ("<<p2j<<"/"<<p2jm<<")";;
cout<<fixed<<setprecision(1)<<" 护甲共减少"<<p2jm-p2j;
if(p2hp<100) {
cout<<fixed<<setprecision(1)<<"\n血量减少:"<<p2lh-p2hp<<" ("<<p2hp<<"/"<<100<<")";;
cout<<fixed<<setprecision(1)<<" 血量共减少:"<<100-p2hp;
}
} else if(fst=="2") {
fst="1";
cout<<"\n玩家2回合! 护甲:("<<r1<<")"<<p2j<<"/"<<p2jm<<" 血量:"<<p2hp<<"/"<<p2hm<<"----------\n";
printf("你准备使用\n1.山楂 2.面包 3.风扇(%d)\n输入道具:",(int)p2s);
cin>>xj[1];
if(xj[1]=="1") {
float h=(rand()%850+250)/10.0; //25-110
if(p1j>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;
}
p2lh=p2hp;
p2lj=p2j;
//h*=as;
p1j-=h;
cout<<"\nBOOM!!!";
} else if(xj[1]=="2") {
h=40;
p2lh=p2hp;
p2lj=p2j;
//h*=as;
p1hp-=h;
} else if(xj[1]=="3") {
cout<<"暂未开放!";
fst="2";
continue;
}
if(p1j<=0) {
p1hp+=p1j;
p1j=0;
}
cout<<fixed<<setprecision(1)<<"\n护甲减少:"<<p1lj-p1j<<" ("<<p1j<<"/"<<p1jm<<")";
cout<<fixed<<setprecision(1)<<" 护甲共减少"<<p1jm-p1j;
if(p1hp<100) {
cout<<fixed<<setprecision(1)<<"\n血量减少:"<<p1lh-p1hp<<" ("<<p1hp<<"/"<<100<<")";;
cout<<fixed<<setprecision(1)<<" 血量共减少:"<<100-p1hp;
}
} 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
sc=0;
for(int i=1;; i++) {
ec++;
if(hp<=0) {
if(ne!=0) {
cout<<"\n\n分数+";
sec(8);
cout<<(0-hp)*50/(ec+1)*r1;
sec(7);
}
sc+=(0-hp)*50/(ec+1)*r1;
cout<<"\n\n第"<<ne+1<<"个敌人\n分数:";
sec(8);
cout<<sc<<endl;
sec(7);
eme();
ne++;
ec=0;
}
printf("\n你准备使用\n(1.山楂 2.面包 3.鸟 4.无菌蛋(维修中) 5.风扇(%d) 6.小蜘蛛 7.烤土豆(%d) 8.大蜘蛛(%d [%d回合后+1]) 9.烧饼):",s,f,dz,w+1);
tt=false;
cin>>xj[1];
if(xj[1]=="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=="3") { // 增加分数概率:40%
sec(4);
cout<<"\n鸟-电磁脉冲:你炸到自己了! 你的分数-500!";
sc-=500;
sec(7);
} else if(ad==1&&mode=="3") {
sec(9);
cout<<"\n鸟-电磁脉冲:无事发生......"; //无事发生概率:20%
sec(7);
}
else if(mode=="3") {
sec(1);
cout<<"\n鸟-电磁脉冲:你眩晕了敌人! 你的游戏次数+500次!"; //减分概率:40%
sc+=500;
sec(7);
}
}
if(xj[1]=="4") {
sec(2);
cout<<endl<<endl<<"维修中!"<<endl;
sec(7);
continue;
}
dr(j,r1,xj[1]);
}
return ;
}
long long lv=1,ex=0,hl=20,gold; //lv等级,ex经验值,hl血量上限,gold金币
long long exm[31]= {0,100,250,800,2000,5000};
string ip;//输入
void play() {
for(int i=6; i<=30; i++)exm[i]=exm[i-1]*3;
system("cls");
while(true) {
while(ex>=exm[lv])if(ex>=exm[lv]&&lv<30)lv++;
cout<<"Lv."<<lv<<" "<<ex<<"/"<<exm[lv]<<" ";
cout<<fixed<<setprecision(2)<<(double)ex/exm[lv]*100<<"%";
cout<<" 金币 "<<gold<<"\n";
cout<<"目前效果:无\n";
cout<<"1.商店 2.关卡 3.统计\n请选择:";
cin>>ip;
if(ip=="1") {
system("cls");
while(true) {
cout<<"1. (售价 金币)\n2. (售价 金币)\n3. (售价 金币)\n4.退出 (售价0金币)\n";
cin>>ip;
if(ip=="1") {
system("cls");
break;
}
if(ip=="2") {
system("cls");
break;
}
if(ip=="3") {
system("cls");
break;
}
if(ip=="4") {
system("cls");
break;
} else {
cout<<"请再次进行选择!";
Sleep(1900);
system("cls");
}
}
} else if(ip=="2") {
system("cls");
} else if(ip=="3") {
system("cls");
} else {
cout<<"请再次进行选择!";
Sleep(1900);
system("cls");
}
}
}/*--------以下为 main--------*/
int main() {
srand(time(0));
sec(7);
cout<<"请输入游戏模式\n1.单人模式 只有1个敌人!\n2.双人对战 互相对打,看谁运气好!\n3.无尽模式 无尽的敌人! 无尽的次数! 一个又一个!\n输入模式:";
cin>>mode;
if(mode=="jiaya") {
cout<<"直架要吃一颗,不架要吃一颗,冲要吃一颗,不冲也要吃一颗\n红了要吃一颗,不红也要吃一颗,全装要吃一颗,跑刀也要吃一颗,红狼要吃一颗,威龙要吃一颗,疾风要吃一颗,盾勾也要吃一颗,无名要吃一颗,银翼要吃一颗\n玩家要吃一颗,AI也要吃一颗,打赛伊德要吃一颗,打雷斯要吃一颗,打渡鸦要吃一颗,打老太也要吃一颗,打博士要吃一颗,打蓝鹰直升机也要吃一颗\n打架要吃一颗,不打架也要吃一颗,劝架要吃一颗\n老黑要吃一颗,不是老黑也要吃一颗,跑路要吃一颗,不跑路也要吃一颗,策划要吃一颗,官方也要吃一颗,宣传要吃一颗,玩三角洲要吃一颗,不玩三角洲也要吃一颗\n自己要吃一颗,别人也要吃一颗,人要吃一颗,出生要吃一颗\n鸟兽兽要吃一颗,不是鸟兽兽也要吃一颗,堵桥要吃一颗,不堵桥也要吃一颗,开保险要吃一颗,小保险也要吃一颗,航空箱要吃一颗,储物箱也要吃一颗,物资箱吃一颗\n吃一颗要吃一颗,不吃一颗也要吃一颗,总之就是要吃一颗,不总之也要吃一颗!";
return 0;
}
if(mode=="7426"||mode=="74"||mode=="26"||mode=="52"||mode=="742652"||mode=="2652"||mode=="7452") {
system("cls");
for(int i=1; i<=15; i++) {
cout<<endl;
cout<<"be";
for(int j=1; j<=i; j++) {
cout<<"e";
}
cout<<"~";
Sleep(650);
system("cls");
sec(i);
}
return 0;
}
if(mode=="test") {
cout<<"测试内容,可能遇到各种问题!\n";
Sleep(2000);
play();//测试中
return 0;
}
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;
}