1.1.5
游戏入口(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;
}

更新日志