加压 ,全系统适配!

0.9.4
#include <bits/stdc++.h>  /* 加压 0.9.4 */
#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";
	xh = (rand() % 50 + 60) / 10.0; //6~11
	r1 = rand() % 6 + 1; //护甲等级
	r2 = rand() % 3 + 1; //护甲值
	r3 = rand() % 50 + 10; // 彩蛋概率:5%
	if (r3 != 50 && r3 != 49) {
		if (r1 == 1) {
			j = 10 * r2;
			cout << "对方1甲耐久:" << j << "/" << j;
		}
		if (r1 == 2) {
			j = 20 * r2;
			cout << "对方2甲耐久:" << j << "/" << j;
		}
		if (r1 == 3) {
			j = 30 * r2;
			cout << "对方3甲耐久:" << j << "/" << j;
		}
		if (r1 == 4) {
			j = 35 * r2;
			cout << "对方4甲耐久:" << j << "/" << j;
		}
		if (r1 == 5) {
			r2++;
			j = 45 * r2;
			cout << "对方5甲耐久:" << j << "/" << j;
		}
		if (r1 == 6) {
			r2++;
			j = 60 * r2;
			cout << "对方6甲耐久:" << j << "/" << j;
		}
		hp = 100;
	}
	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 << "暂未开放!";
	return ;
/*  string fst;
	bool suc=false;
	int p1j,p1jm,p1hp,p1hm,p1d,p1s,p1f,p1dz,p1w;
	int p2j,p2jm,p2hp,p2hm,p2d,p2s,p2f,p2dz,p2w;
	while(suc==false){
		if (fst == "1") 1先手;suc=true;
		else if (fst == "2") 2先手;suc=true;
		else if (fst == "3") rand() % 2 + 1; 1或2;suc=true;
		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;
}

更新日志:https://www.bcoi.cn/blog/476/69b405829c207eea05238bd3#1773405570489