【Yuexingfei_qwq的原创游戏】2

上接【Yuexingfei_qwq的原创游戏】1


色块对决(目前最长游戏……1707行)

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#define el "\n"
#define sp " "
#define fi first
#define se second
#define inf 1e18
#define r0 return 0
#define int long long
#define F(i, a, b, c) for (int i = a; i <= b; i += c)
#define debug printf ("bug is in here\n")
#define TheEnd continue
#define base(s) s = sp + s
#define lcm(a, b) a / __gcd(a, b) * b
#define setp(x) fixed << setprecision(x)
#define getmid(l, r) l + (r - l) / 2

using namespace std;

typedef long long ll;
typedef string str;
using ull = unsigned long long;

#ifndef GAME1
#define _cl { \
		HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); \
		COORD coord = {0, 0}; \
		DWORD count; \
		CONSOLE_SCREEN_BUFFER_INFO csbi; \
		GetConsoleScreenBufferInfo(hStdOut, &csbi); \
		DWORD cellCount = csbi.dwSize.X * csbi.dwSize.Y; \
		FillConsoleOutputCharacter(hStdOut, ' ', cellCount, coord, &count); \
		FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, coord, &count); \
		SetConsoleCursorPosition(hStdOut, coord); \
	}
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _PI 3.1415926535897932384626
#define _ge getch()
#define _Get(x) GetAsyncKeyState('x')
#define _KE(x) ((GetAsyncKeyState(x) & 0x8000) ? 1:0)
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a
inline ll x_y(ll x, ll y, ll p = (1LL << 60)) {
	int ans_1 = 1;
	while (y) {
		if (y & 1) {
			(ans_1 *= x) %= p;
		}
		(x *= x) %= p;
		y >>= 1;
	}
	return ans_1;
}
inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
	for (auto i : s) {
		if (t == "cout") {
			cout << i;
		} else {
			putchar(i);
		}
		_sl(y);
	}
}
inline void setcolor(int color) {
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hConsole, color);
}
inline void wait(int d = 50) {
	_sl(d);
	_ge;
}
inline char get(str s, bool f = 0) {
	char ch[114514];
	int l = 0;
	for (auto i : s) {
		ch[++l] = i;
	}
	while (true) {
		char x = getchar();
		if (x == ' ' || x == '\n') {
			TheEnd;
		}
		if (f) {
			return x;
		}
		for (int i = 1; i <= l; i++) {
			if (x == ch[i]) {
				return x;
			}
		}
		Sleep_write("Error:输入无效\n");
		_sl(500);
		//_pa;
	}
}
#endif

inline bool color(char c, str s = "Yuexingfei_qwq.", bool isSleep = 0) {
	if (s == "Yuexingfei_qwq.") {
		s = "";
		s += c;
	}
	switch (c) {
		case 'R':
			setcolor(4);
			break;
		case 'O':
			setcolor(6);
			break;
		case 'Y':
			setcolor(14);
			break;
		case 'G':
			setcolor(10);
			break;
		case 'C':
			setcolor(11);
			break;
		case 'B':
			setcolor(1);
			break;
		case 'P':
			setcolor(5);
			break;
		case 'p':
			setcolor(13);
			break;
		case 'W':
			setcolor(12);
			break;
		case 'S':
			setcolor(3);
			break;
	}
	if (isSleep) {
		Sleep_write(s);
	} else {
		cout << s;
	}
	setcolor(7);
	r0;
}

str s[100];

std::bitset<20> die;

std::vector<std::pair<int, char>> final;

str co = "RBCOYGPpWS";

int id[20];

char mapcolor[20][100];

int lava[20];

inline int getid(char s) {
	switch (s) {
		case 'R':
			return 1;
			break;
		case 'W':
			return 2;
			break;
		case 'O':
			return 3;
			break;
		case 'Y':
			return 4;
			break;
		case 'G':
			return 5;
			break;
		case 'C':
			return 6;
			break;
		case 'S':
			return 7;
			break;
		case 'B':
			return 8;
			break;
		case 'P':
			return 9;
			break;
		case 'p':
			return 10;
			break;
	}
	return EOF;
}

inline char getcol(int x) {
	switch (x) {
		case 1:
			return 'R';
			break;
		case 2:
			return 'W';
			break;
		case 3:
			return 'O';
			break;
		case 4:
			return 'Y';
			break;
		case 5:
			return 'G';
			break;
		case 6:
			return 'C';
			break;
		case 7:
			return 'S';
			break;
		case 8:
			return 'B';
			break;
		case 9:
			return 'P';
			break;
		case 10:
			return 'p';
			break;
	}
	return EOF;
}

inline bool reset(void) {
	s[0] = s[11] = "#################################################################################";
	s[1] = s[2] = s[3] = s[4] = s[5] = s[6] = s[7] = s[8] = s[9] = s[10] = "#                                                                          *#";
	F(i, 1, 10, 1) {
		id[i] = 1;
	}
	r0;
}

inline bool reset2(void) {
	s[0] = s[11] = "#################################################################################";
	s[1] = s[2] = s[3] = s[4] = s[5] = s[6] = s[7] = s[8] = s[9] = s[10] = "#XXX........................................................................#";
	F(i, 1, 10, 1) {
		id[i] = 25;
		lava[i] = 7;
	}
	F(i, 1, 10, 1) {
		F(j, 4, 75, 1) {
			mapcolor[i][j] = getcol(rand() % 10 + 1);
		}
	}
	r0;
}

inline void ran(int x) {
	F(j, 4, 74, 1) {
		F(i, 1, 10, 1) {
			mapcolor[i][j] = mapcolor[i][j + 1];
		}
	}
	F(i, 1, 10, 1) {
		mapcolor[i][75] = getcol(rand() % 10 + 1);
		if (rand() % 8 <= 2) {
			lava[i]--;
		} else {
			if (rand() % 10 == 0) {
				lava[i]++;
			}
			lava[i]++;
		}
		if (x <= 6) {
			lava[i] += rand() % 2;
		}
		if (x <= 3) {
			lava[i] += rand() % 3;
		}
		lava[i] = std::max(lava[i], 3LL);
		lava[i] = std::min(lava[i], 72LL);
	}
}

char skin[20] = {0, 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i'};

inline bool show(bool x) {
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO c;
	GetConsoleCursorInfo(hOut, &c);
	c.bVisible = x;
	SetConsoleCursorInfo(hOut, &c);
	r0;
}

inline bool out(void) {
	_cl;
	F(i, 0, 11, 1) {
		F(j, 0, 76, 1) {
			bool f = 0;
			F(k, 0, 9, 1) {
				if (die[getid(co[k])] && i == getid(co[k]) && j == 1) {
					color(co[k], "D");
					f = 1;
					break;
				}
				if (die[getid(co[k])] && j == 75 && i == getid(co[k])) {
					color(co[k], "*");
					f = 1;
					break;
				}
				if (getid(co[k]) == i && id[getid(co[k])] == j) {
					str sk = "";
					sk += skin[getid(co[k])];
					color(co[k], sk);
					f = 1;
				}
			}
			if (f == 0) {
				if (s[i][j] == '*') {
					color('R', "*");
				} else {
					cout << s[i][j];
				}
			}
		}
		cout << el;
	}
	r0;
}

inline bool out2(void) {
	_cl;
	F(i, 0, 11, 1) {
		F(j, 0, 76, 1) {
			bool f = 0;
			F(k, 0, 9, 1) {
				if (j <= lava[i] && j && i && i != 11) {
					color('R', "X");
					f = 1;
					break;
				}
				if (getid(co[k]) == i && id[getid(co[k])] == j) {
					str sk = "";
					sk += skin[getid(co[k])];
					color(co[k], sk);
					f = 1;
				}
			}
			if (f == 0) {
				if (s[i][j] == '*') {
					color('R', "*");
				} else {
					if (s[i][j] == '.') {
						color(mapcolor[i][j], ".");
					} else {
						cout << s[i][j];
					}
				}
			}
		}
		cout << el;
	}
	r0;
}

inline bool iswin(void) {
	F(i, 1, 10, 1) {
		if (die[i]) {
			TheEnd;
		}
		if (id[i] != 75) {
			r0;
		}
	}
	return 1;
}

std::vector<std::pair<int, char>> v;
std::vector<int> rk;
int dif, last;

signed main(void) {
	srand(time(NULL));
	char c;
	int cnt = 0;
	int round = 3;
	int tot[20] = {0};
	int remain;
	std::vector<std::pair<char, str>> bro;
	goto menu;
menu:
	show(1);
	_cl;
	cout << "------色块对决 The Color Race------" << el;
	cout << "1.赌注模式\n2.比赛模式\n3.生存模式\n4.设置皮肤\n5.退出\n作者:";
	color('C', "Yuexingfei_qwq\n");
	c = get("12345");
	_cl;
	if (c == '1') {
		goto wager;
	} else {
		if (c == '2') {
			cout << "1.普通模式\n2.锦标赛模式\n3.淘汰赛模式" << el;
			c = get("123");
			_cl;
			if (c == '1') {
				goto race;
			} else {
				if (c == '2') {
					goto title;
				} else {
					goto knockout;
				}
			}
		} else {
			if (c == '3') {
				goto survival;
			} else {
				if (c == '4') {
					goto setskin;
				} else {
					goto to_the_end;
				}
			}
		}
	}
wager:
	Sleep_write("请输入你想赌的色块:\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp");
	Sleep_write("是否设置成“有几率回退”?(Y/N)\n");
	dif = (tolower(get("YNyn")) == 'y' ? 1 : 0);
	reset();
	show(0);
	out();
	Sleep_write("3……\n");
	_sl(1000);
	out();
	Sleep_write("2……\n");
	_sl(1000);
	out();
	Sleep_write("1……\n");
	_sl(1000);
	out();
	Sleep_write("GO!\n");
	_sl(500);
	v.clear();
	cnt = 0;
	while (!iswin()) {
		F(i, 1, 10, 1) {
			if (id[i] == 75) {
				TheEnd;
			}
			if (dif == 1) {
				if (rand() % 4 == 1) {
					id[i]--;
				}
			}
			id[i] += rand() % 3;
			/*
			if (getid(c) == i) {
				id[i] += 3;
			}
			*/
			//作弊代码
			id[i] = std::min(id[i], 75LL);
			id[i] = std::max(id[i], 1LL);
		}
		out();
		cout << "你赌的色块是:";
		switch (c) {
			case 'R':
				color('R', "R(红色)\n");
				break;
			case 'W':
				color('W', "W(西瓜红)\n");
				break;
			case 'O':
				color('O', "O(橙色)\n");
				break;
			case 'Y':
				color('Y', "Y(黄色)\n");
				break;
			case 'G':
				color('G', "G(绿色)\n");
				break;
			case 'C':
				color('C', "C(青色)\n");
				break;
			case 'S':
				color('S', "S(天蓝)\n");
				break;
			case 'B':
				color('B', "B(蓝色)\n");
				break;
			case 'P':
				color('P', "P(紫色)\n");
				break;
			case 'p':
				color('p', "p(粉色)\n");
				break;
		}
		rk.clear();
		F(i, 1, 10, 1) {
			if (id[i] == 75) {
				bool find = 0;
				for (auto j : v) {
					if (j.se == getcol(i)) {
						find = 1;
						break;
					}
				}
				if (!find) {
					rk.push_back(i);
				}
			}
		}
		if (!rk.empty()) {
			cnt++;
			for (auto i : rk) {
				v.push_back({cnt, getcol(i)});
			}
		}
		cnt = v.size();
		F(i, 1, 10, 1) {
			bool is = 0;
			if (id[i] == 75) {
				bool find = 0;
				for (auto j : v) {
					if (j.se == getcol(i)) {
						find = 1;
						break;
					}
				}
				if (!find) {
					if (!is) {
						cnt++;
						is = 1;
					}
					v.push_back({cnt, getcol(i)});
				}
			}
		}
		for (auto i : v) {
			cout << "rk" << i.fi << ": ";
			switch (i.se) {
				case 'R':
					color('R', "R(红色)");
					break;
				case 'W':
					color('W', "W(西瓜红)");
					break;
				case 'O':
					color('O', "O(橙色)");
					break;
				case 'Y':
					color('Y', "Y(黄色)");
					break;
				case 'G':
					color('G', "G(绿色)");
					break;
				case 'C':
					color('C', "C(青色)");
					break;
				case 'S':
					color('S', "S(天蓝)");
					break;
				case 'B':
					color('B', "B(蓝色)");
					break;
				case 'P':
					color('P', "P(紫色)");
					break;
				case 'p':
					color('p', "p(粉色)");
					break;
			}
			if (i.se == c) {
				cout << "<-你的色块";
			}
			cout << el;
		}
		_sl((rand() % 3) * 100);
	}
	cnt = 0;
	for (auto i : v) {
		if (i.se == c) {
			cnt = i.fi;
			break;
		}
	}
	if (cnt == 1) {
		Sleep_write("太棒了!你的色块喜获金牌!!!\n");
	} else {
		if (cnt <= 3) {
			Sleep_write("恭喜你!你的色块进入了前三名!\n");
		} else {
			if (cnt <= 6) {
				Sleep_write("你的色块表现不错,但还需要努力!\n");
			} else {
				Sleep_write("很遗憾,你的色块排名较后。再试一次吧!\n");
			}
		}
	}
	_sl(1000);
	_pa;
	goto menu;
race:
	Sleep_write("请选择难度:\n");
	color('B', "1.有手就行\n");
	color('Y', "2.简单\n");
	color('O', "3.普通\n");
	color('R', "4.困难(有几率往回退)\n");
	dif = get("1234") - '1' + 1;
	Sleep_write("请选择你想要操控的色块:\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp");
	show(0);
	reset();
	out();
	Sleep_write("3……\n");
	_sl(1000);
	out();
	Sleep_write("2……\n");
	_sl(1000);
	out();
	Sleep_write("1……\n");
	_sl(1000);
	out();
	Sleep_write("GO!\n");
	_sl(500);
	v.clear();
	cnt = 0;
	while (!iswin()) {
		F(i, 1, 10, 1) {
			if (id[i] == 75) {
				TheEnd;
			}
			if (dif == 1) {
				if (getid(c) == i) {
					if (_KE('D')) {
						id[getid(c)]++;
					}
				} else {
					id[i] += rand() % 2;
				}
			} else {
				if (dif == 2) {
					if (getid(c) == i) {
						if (_KE('D')) {
							id[getid(c)] += rand() % 3;
						}
					} else {
						id[i] += rand() % 2;
					}
				} else {
					if (dif == 3) {
						if (getid(c) == i) {
							if (_KE('D')) {
								id[getid(c)] += rand() % 3;
							}
						} else {
							id[i] += rand() % 3;
						}
					} else {
						if (getid(c) == i) {
							if (_KE('D')) {
								id[getid(c)] += rand() % 4 - 1;
							}
						} else {
							id[i] += rand() % 4 - 1;
						}
					}
				}
			}
			id[i] = std::min(id[i], 75LL);
			id[i] = std::max(id[i], 1LL);
		}
		out();
		cout << "你操控的色块是:";
		switch (c) {
			case 'R':
				color('R', "R(红色)\n");
				break;
			case 'W':
				color('W', "W(西瓜红)\n");
				break;
			case 'O':
				color('O', "O(橙色)\n");
				break;
			case 'Y':
				color('Y', "Y(黄色)\n");
				break;
			case 'G':
				color('G', "G(绿色)\n");
				break;
			case 'C':
				color('C', "C(青色)\n");
				break;
			case 'S':
				color('S', "S(天蓝)\n");
				break;
			case 'B':
				color('B', "B(蓝色)\n");
				break;
			case 'P':
				color('P', "P(紫色)\n");
				break;
			case 'p':
				color('p', "p(粉色)\n");
				break;
		}
		cout << "你选择的难度是:";
		switch (dif) {
			case 1:
				color('B', "1.有手就行");
				break;
			case 2:
				color('Y', "2.简单");
				break;
			case 3:
				color('O', "3.普通");
				break;
			default:
				color('R', "4.困难(有几率往回退)");
				break;
		}
		cout << "\n按下D键让你的色块冲向终点!" << el;
		rk.clear();
		F(i, 1, 10, 1) {
			if (id[i] == 75) {
				bool find = 0;
				for (auto j : v) {
					if (j.se == getcol(i)) {
						find = 1;
						break;
					}
				}
				if (!find) {
					rk.push_back(i);
				}
			}
		}
		if (!rk.empty()) {
			cnt++;
			for (auto i : rk) {
				v.push_back({cnt, getcol(i)});
			}
		}
		cnt = v.size();
		F(i, 1, 10, 1) {
			bool is = 0;
			if (id[i] == 75) {
				bool find = 0;
				for (auto j : v) {
					if (j.se == getcol(i)) {
						find = 1;
						break;
					}
				}
				if (!find) {
					if (!is) {
						cnt++;
						is = 1;
					}
					v.push_back({cnt, getcol(i)});
				}
			}
		}
		for (auto i : v) {
			cout << "rk" << i.fi << ": ";
			switch (i.se) {
				case 'R':
					color('R', "R(红色)");
					break;
				case 'W':
					color('W', "W(西瓜红)");
					break;
				case 'O':
					color('O', "O(橙色)");
					break;
				case 'Y':
					color('Y', "Y(黄色)");
					break;
				case 'G':
					color('G', "G(绿色)");
					break;
				case 'C':
					color('C', "C(青色)");
					break;
				case 'S':
					color('S', "S(天蓝)");
					break;
				case 'B':
					color('B', "B(蓝色)");
					break;
				case 'P':
					color('P', "P(紫色)");
					break;
				case 'p':
					color('p', "p(粉色)");
					break;
			}
			if (i.se == c) {
				cout << "<-你";
			}
			cout << el;
		}
		_sl(200 / (dif + rand() % 2));
	}
	cnt = 0;
	for (auto i : v) {
		if (i.se == c) {
			cnt = i.fi;
			break;
		}
	}
	if (cnt == 1) {
		Sleep_write("太棒了!你的色块喜获金牌!!!\n");
	} else {
		if (cnt <= 3) {
			Sleep_write("恭喜你!你的色块进入了前三名!\n");
		} else {
			if (cnt <= 6) {
				Sleep_write("你的色块表现不错,但还需要努力!\n");
			} else {
				Sleep_write("很遗憾,你的色块排名较后。再试一次吧!\n");
			}
		}
	}
	_sl(1000);
	_pa;
	goto menu;
title:
	round = 3;
	memset(tot, 0, sizeof tot);
	Sleep_write("锦标赛模式\n请选择比赛轮数(1~5轮):\n");
	round = get("12345") - '0';
	Sleep_write("请选择你的色块:\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp");
	Sleep_write("请选择难度:\n");
	color('B', "1.有手就行\n");
	color('Y', "2.简单\n");
	color('O', "3.普通\n");
	color('R', "4.困难(有几率往回退)\n");
	dif = get("1234") - '1' + 1;
	show(0);
	F(i, 1, round, 1) {
		_cl;
		cout << "----- 第 " << i << " 轮比赛 -----" << el;
		Sleep_write("准备开始...\n");
		_sl(1000);
		reset();
		v.clear();
		cnt = 0;
		out();
		Sleep_write("3……\n");
		_sl(1000);
		out();
		Sleep_write("2……\n");
		_sl(1000);
		out();
		Sleep_write("1……\n");
		_sl(1000);
		out();
		Sleep_write("GO!\n");
		_sl(500);
		while (!iswin()) {
			F(j, 1, 10, 1) {
				if (id[j] == 75) {
					TheEnd;
				}
				if (dif == 1) {
					if (getid(c) == j) {
						if (_KE('D')) {
							id[getid(c)]++;
						}
					} else {
						id[j] += rand() % 2;
					}
				} else {
					if (dif == 2) {
						if (getid(c) == j) {
							if (_KE('D')) {
								id[getid(c)] += rand() % 3;
							}
						} else {
							id[j] += rand() % 2;
						}
					} else {
						if (dif == 3) {
							if (getid(c) == j) {
								if (_KE('D')) {
									id[getid(c)] += rand() % 3;
								}
							} else {
								id[j] += rand() % 3;
							}
						} else {
							if (getid(c) == j) {
								if (_KE('D')) {
									id[getid(c)] += rand() % 4 - 1;
								}
							} else {
								id[j] += rand() % 4 - 1;
							}
						}
					}
				}
				id[j] = std::min(id[j], 75LL);
				id[j] = std::max(id[j], 1LL);
			}
			out();
			cout << "----- 第 " << i << " / " << round << " 轮 -----\n";
			cout << "你(";
			color(c, string(1, c));
			cout << ")的当前积分: " << tot[getid(c)] << "分\n";
			cout << "你选择的难度是:";
			switch (dif) {
				case 1:
					color('B', "1.有手就行");
					break;
				case 2:
					color('Y', "2.简单");
					break;
				case 3:
					color('O', "3.普通");
					break;
				default:
					color('R', "4.困难(有几率往回退)");
					break;
			}
			cout << "\n按下D键让你的色块冲向终点!" << el;
			rk.clear();
			F(j, 1, 10, 1) {
				if (id[j] == 75) {
					bool find = 0;
					for (auto k : v) {
						if (k.se == getcol(j)) {
							find = 1;
							break;
						}
					}
					if (!find) {
						rk.push_back(j);
					}
				}
			}
			cnt = v.size();
			if (!rk.empty()) {
				cnt++;
				for (auto j : rk) {
					v.push_back({cnt, getcol(j)});
				}
			}
			for (auto j : v) {
				cout << "rk" << j.fi << ": ";
				switch (j.se) {
					case 'R':
						color('R', "R(红色)");
						break;
					case 'W':
						color('W', "W(西瓜红)");
						break;
					case 'O':
						color('O', "O(橙色)");
						break;
					case 'Y':
						color('Y', "Y(黄色)");
						break;
					case 'G':
						color('G', "G(绿色)");
						break;
					case 'C':
						color('C', "C(青色)");
						break;
					case 'S':
						color('S', "S(天蓝)");
						break;
					case 'B':
						color('B', "B(蓝色)");
						break;
					case 'P':
						color('P', "P(紫色)");
						break;
					case 'p':
						color('p', "p(粉色)");
						break;
				}
				if (j.se == c) {
					cout << " <-你";
				}
				cout << el;
			}
			_sl(200 / (dif + rand() % 2));
		}
		for (auto i : v) {
			int p = 0;
			switch (i.fi) {
				case 1:
					p = 10;
					break;
				case 2:
					p = 7;
					break;
				case 3:
					p = 5;
					break;
				case 4:
					p = 3;
					break;
				case 5:
					p = 2;
					break;
				default:
					p = 1;
					break;
			}
			tot[getid(i.se)] += p;
		}
		_cl;
		cout << "第 " << i << " 轮比赛结果:\n";
		for (auto j : v) {
			cout << "rk" << j.fi << ": ";
			switch (j.se) {
				case 'R':
					color('R', "R(红色)");
					break;
				case 'W':
					color('W', "W(西瓜红)");
					break;
				case 'O':
					color('O', "O(橙色)");
					break;
				case 'Y':
					color('Y', "Y(黄色)");
					break;
				case 'G':
					color('G', "G(绿色)");
					break;
				case 'C':
					color('C', "C(青色)");
					break;
				case 'S':
					color('S', "S(天蓝)");
					break;
				case 'B':
					color('B', "B(蓝色)");
					break;
				case 'P':
					color('P', "P(紫色)");
					break;
				case 'p':
					color('p', "p(粉色)");
					break;
			}
			cout << " (" << tot[getid(j.se)] << "分)";
			if (c == j.se) {
				cout << " <-你";
			}
			cout << el;
		}
		_pa;
		_cl;
		cout << "目前积分排名:\n";
		v.clear();
		F(i, 1, 10, 1) {
			if (tot[i] > 0) {
				v.push_back({tot[i], getcol(i)});
			}
		}
		std::sort(v.begin(), v.end(), std::greater<std::pair<int, char>>());
		cnt = 0, last = -1;
		rk.clear();
		rk.push_back(0);
		for (auto i : v) {
			if (i.fi != last) {
				last = i.fi;
				rk[0] = cnt;
				rk[0]++;
			}
			cnt++;
			cout << "rk" << rk[0] << ". ";
			switch (i.se) {
				case 'R':
					color('R', "R(红色)");
					break;
				case 'W':
					color('W', "W(西瓜红)");
					break;
				case 'O':
					color('O', "O(橙色)");
					break;
				case 'Y':
					color('Y', "Y(黄色)");
					break;
				case 'G':
					color('G', "G(绿色)");
					break;
				case 'C':
					color('C', "C(青色)");
					break;
				case 'S':
					color('S', "S(天蓝)");
					break;
				case 'B':
					color('B', "B(蓝色)");
					break;
				case 'P':
					color('P', "P(紫色)");
					break;
				case 'p':
					color('p', "p(粉色)");
					break;
			}
			cout << ": " << i.fi << "分";
			if (i.se == c) {
				cout << " <-你";
			}
			cout << el;
		}
		_pa;
		if (i < round) {
			Sleep_write("\n准备下一轮比赛...\n");
			_sl(3500);
		}
	}
	_cl;
	cout << "----- 锦标赛最终结果 -----\n";
	final.clear();
	F(i, 1, 10, 1) {
		if (tot[i] > 0) {
			final.push_back({tot[i], getcol(i)});
		}
	}
	std::sort(final.begin(), final.end(), std::greater<std::pair<int, char>>());
	cnt = 0, last = -1;
	rk.clear();
	rk.push_back(0);
	for (auto i : final) {
		if (i.fi != last) {
			last = i.fi;
			rk[0] = cnt;
			rk[0]++;
		}
		cnt++;
		cout << "rk" << rk[0] << ". ";
		switch (i.se) {
			case 'R':
				color('R', "R(红色)");
				break;
			case 'W':
				color('W', "W(西瓜红)");
				break;
			case 'O':
				color('O', "O(橙色)");
				break;
			case 'Y':
				color('Y', "Y(黄色)");
				break;
			case 'G':
				color('G', "G(绿色)");
				break;
			case 'C':
				color('C', "C(青色)");
				break;
			case 'S':
				color('S', "S(天蓝)");
				break;
			case 'B':
				color('B', "B(蓝色)");
				break;
			case 'P':
				color('P', "P(紫色)");
				break;
			case 'p':
				color('p', "p(粉色)");
				break;
		}
		cout << ": " << i.fi << "分";
		if (i.se == c) {
			cout << " <-你";
		}
		if (cnt == 1) {
			cout << " ……冠军!";
		} else {
			if (cnt == 2) {
				cout << " ……亚军!";
			} else {
				if (cnt == 3) {
					cout << " ……季军!";
				}
			}
		}
		cout << el;
	}
	cnt = 0;
	for (auto i : final) {
		if (i.se == c) {
			cnt = i.fi;
			break;
		}
	}
	if (cnt <= 4) {
		cout << "很遗憾,你的色块没有获得名次。继续努力吧!";
		cout << el;
		_sl(1000);
	}
	Sleep_write("\n锦标赛结束!\n");
	_sl(1000);
	_pa;
	goto menu;
knockout:
	die.reset();
	Sleep_write("淘汰赛模式\n请选择难度:\n");
	color('B', "1.有手就行\n");
	color('Y', "2.简单\n");
	color('O', "3.普通\n");
	color('R', "4.困难(有几率往回退)\n");
	dif = get("1234") - '1' + 1;
	Sleep_write("请选择你想要操控的色块:\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp");
	remain = 10;
	round = 1;
	show(0);
	while (remain >= 1) {
		_cl;
		cout << "----- 淘汰赛第 " << round << " 轮 -----\n";
		cout << "剩余选手: " << remain << "人\n";
		Sleep_write("准备开始...\n");
		_sl(2000);
		reset();
		v.clear();
		cnt = 0;
		out();
		Sleep_write("3……\n");
		_sl(1000);
		out();
		Sleep_write("2……\n");
		_sl(1000);
		out();
		Sleep_write("1……\n");
		_sl(1000);
		out();
		Sleep_write("GO!\n");
		_sl(500);
		while (!iswin()) {
			F(i, 1, 10, 1) {
				if (die[i] || id[i] == 75) {
					TheEnd;
				}
				if (dif == 1) {
					if (getid(c) == i) {
						if (_KE('D')) {
							id[getid(c)]++;
						}
					} else {
						id[i] += rand() % 2;
					}
				} else {
					if (dif == 2) {
						if (getid(c) == i) {
							if (_KE('D')) {
								id[getid(c)] += rand() % 3;
							}
						} else {
							id[i] += rand() % 2;
						}
					} else {
						if (dif == 3) {
							if (getid(c) == i) {
								if (_KE('D')) {
									id[getid(c)] += rand() % 3;
								}
							} else {
								id[i] += rand() % 3;
							}
						} else {
							if (getid(c) == i) {
								if (_KE('D')) {
									id[getid(c)] += rand() % 4 - 1;
								}
							} else {
								id[i] += rand() % 4 - 1;
							}
						}
					}
				}
				id[i] = std::min(id[i], 75LL);
				id[i] = std::max(id[i], 1LL);
			}
			out();
			cout << "----- 淘汰赛第 " << round << " 轮 -----\n";
			cout << "剩余选手: " << remain << "人\n";
			cout << "你操控的色块是:";
			color(c, string(1, c));
			cout << " (按下D键让你的色块冲向终点!)\n";
			cout << "难度: ";
			switch (dif) {
				case 1:
					color('B', "有手就行");
					break;
				case 2:
					color('Y', "简单");
					break;
				case 3:
					color('O', "普通");
					break;
				case 4:
					color('R', "困难(有几率往回退)");
					break;
			}
			cout << "\n地图上的D代表已淘汰的色块\n";
			rk.clear();
			F(i, 1, 10, 1) {
				if (!die[i] && id[i] == 75) {
					bool find = 0;
					for (auto j : v) {
						if (j.se == getcol(i)) {
							find = 1;
							break;
						}
					}
					if (!find) {
						rk.push_back(i);
					}
				}
			}
			cnt = v.size();
			if (!rk.empty()) {
				cnt++;
				for (auto i : rk) {
					v.push_back({cnt, getcol(i)});
				}
			}
			for (auto i : v) {
				cout << "rk" << i.fi << ": ";
				switch (i.se) {
					case 'R':
						color('R', "R(红色)");
						break;
					case 'W':
						color('W', "W(西瓜红)");
						break;
					case 'O':
						color('O', "O(橙色)");
						break;
					case 'Y':
						color('Y', "Y(黄色)");
						break;
					case 'G':
						color('G', "G(绿色)");
						break;
					case 'C':
						color('C', "C(青色)");
						break;
					case 'S':
						color('S', "S(天蓝)");
						break;
					case 'B':
						color('B', "B(蓝色)");
						break;
					case 'P':
						color('P', "P(紫色)");
						break;
					case 'p':
						color('p', "p(粉色)");
						break;
				}
				if (i.se == c) {
					cout << " <-你";
				}
				cout << el;
			}
			_sl(200 / (dif + rand() % 2));
		}
		_sl(2000);
		int q = 0;
		for (int i = v.size() - 1; i; i--) {
			q++;
			if (v[i].fi != v[i - 1].fi) {
				break;
			}
		}
		if (q == remain - 1) {
			q = 0;
		}
		std::vector<char> vec;
		for (int i = v.size() - 1; i >= 0 && q; i--) {
			vec.push_back(v[i].se);
			q--;
		}
		for (auto j : vec) {
			die[getid(j)] = 1;
			remain--;
		}
		_cl;
		cout << "----- 第 " << round << " 轮结果 -----\n";
		cout << "本轮晋级选手:\n";
		cnt = 0;
		for (auto i : v) {
			if (!die[getid(i.se)]) {
				cout << ++cnt << ". ";
				switch (i.se) {
					case 'R':
						color('R', "R(红色)");
						break;
					case 'W':
						color('W', "W(西瓜红)");
						break;
					case 'O':
						color('O', "O(橙色)");
						break;
					case 'Y':
						color('Y', "Y(黄色)");
						break;
					case 'G':
						color('G', "G(绿色)");
						break;
					case 'C':
						color('C', "C(青色)");
						break;
					case 'S':
						color('S', "S(天蓝)");
						break;
					case 'B':
						color('B', "B(蓝色)");
						break;
					case 'P':
						color('P', "P(紫色)");
						break;
					case 'p':
						color('p', "p(粉色)");
						break;
				}
				if (i.se == c) {
					cout << " <-你";
				}
				cout << el;
			}
		}
		cout << "\n本轮淘汰选手:";
		if (vec.size() == 0) {
			cout << "无" << el;
			TheEnd;
		}
		for (auto j : vec) {
			color(j, string(1, j));
			cout << sp;
		}
		cout << el;
		if (die[getid(c)]) {
			Sleep_write("\n很遗憾,你被淘汰了!\n");
			_sl(2000);
			_pa;
			goto menu;
		}
		if (remain == 1) {
			_cl;
			cout << "----- 淘汰赛冠军 -----\n";
			for (int i = 1; i <= 10; i++) {
				if (!die[i]) {
					color(getcol(i), string(1, getcol(i)));
					if (getcol(i) == c) {
						cout << " <- 恭喜你获得冠军!";
					} else {
						cout << " 获得冠军!";
					}
					cout << el;
					break;
				}
			}
			_sl(2000);
			_pa;
			goto menu;
		}
		round++;
		Sleep_write("\n准备下一轮比赛...\n");
		_sl(3000);
	}
	goto menu;
survival:
	_cl;
	bro.clear();
	Sleep_write("请选择你想要操控的色块:\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp");
	_cl;
	show(0);
	reset2();
	v.clear();
	die.reset();
	out2();
	Sleep_write("3……\n");
	_sl(1000);
	out2();
	Sleep_write("2……\n");
	_sl(1000);
	out2();
	Sleep_write("1……\n");
	_sl(1000);
	out2();
	Sleep_write("GO!\n");
	_sl(500);
	cnt = 0;
	while (10 - v.size() > 1) {
		out2();
		cout << "剩余选手: " << 10 - v.size() << "人\n";
		cout << "你操控的色块是:";
		color(c, string(1, c));
		cout << "\n按下D键让你的色块向前(后)冲!\n碰到岩浆(X)就淘汰了!\n";
		cout << "已淘汰选手:";
		if (v.empty()) {
			cout << "无" << el;
		} else {
			cout << el;
			for (auto i : v) {
				cout << i.fi << "." << sp;
				switch (i.se) {
					case 'R':
						color('R', "R(红色)");
						break;
					case 'W':
						color('W', "W(西瓜红)");
						break;
					case 'O':
						color('O', "O(橙色)");
						break;
					case 'Y':
						color('Y', "Y(黄色)");
						break;
					case 'G':
						color('G', "G(绿色)");
						break;
					case 'C':
						color('C', "C(青色)");
						break;
					case 'S':
						color('S', "S(天蓝)");
						break;
					case 'B':
						color('B', "B(蓝色)");
						break;
					case 'P':
						color('P', "P(紫色)");
						break;
					case 'p':
						color('p', "p(粉色)");
						break;
				}
				str c;
				for (auto j : bro) {
					if (j.fi == i.se) {
						c = j.se;
						break;
					}
				}
				cout << c;
				cout << el;
			}
		}
		if (die[getid(c)]) {
			Sleep_write("很遗憾,你被淘汰了。下次继续努力!\n");
			_sl(2000);
			_pa;
			goto menu;
		}
		F(i, 1, 10, 1) {
			if (die[i] || id[i] == 75) {
				TheEnd;
			}
			if (getid(c) == i) {
				if (_KE('D')) {
					id[getid(c)] += rand() % 4 - 1;
				}
			} else {
				id[i] += rand() % 4 - 1;
			}
			id[i] = std::min(id[i], 75LL);
		}
		ran(10 - v.size());
		F(i, 1, 10, 1) {
			if (id[i] <= lava[i] && !die[i]) {
				die[i] = 1;
				v.push_back({++cnt, getcol(i)});
				str strnum[] = {"被岩浆灼烧而死。", "试图在岩浆里游泳。", "浴火焚身。", "彻底红温。", "放弃了挣扎。"};
				bro.push_back({getcol(i), strnum[rand() % 5]});
			}
		}
		_sl(200);
		F(i, 1, 10, 1) {
			if (!die[id[i]]) {
				if (rand() % 3 == 0) {
					id[i]--;
					if (rand() % 3 == 0) {
						id[i]--;
					}
				}
			}
		}
	}
	if (!die[getid(c)]) {
		Sleep_write("恭喜你,成为了唯一的幸存者!\n", 20);
		_sl(2000);
		_pa;
	}
	goto menu;
setskin:
	_cl;
	Sleep_write("请选择你想设置皮肤的色块(输入1退出):\n");
	color('R', "R:红色\n");
	color('W', "W:西瓜红\n");
	color('O', "O:橙色\n");
	color('Y', "Y:黄色\n");
	color('G', "G:绿色\n");
	color('C', "C:青色\n");
	color('S', "S:天蓝\n");
	color('B', "B:蓝色\n");
	color('P', "P:紫色\n");
	color('p', "p:粉色\n");
	c = get("RWOYGCSBPp1");
	if (c == '1') {
		goto menu;
	} else {
		Sleep_write("当前色块的皮肤为:");
		str tt = "";
		tt += skin[getid(c)];
		color(c, tt);
		cout << el;
		Sleep_write("输入更换方式:\n1.设置为默认皮肤(\"i\")\n2.设置为颜色代号(");
		cout << c;
		Sleep_write(")\n3.自定义\n4.不更换\n");
		char t = get("1234");
		if (t == '1') {
			skin[getid(c)] = 'i';
			Sleep_write("设置成功!\n");
			_sl(1000);
		} else {
			if (t == '2') {
				skin[getid(c)] = c;
				Sleep_write("设置成功!\n");
				_sl(1000);
			} else {
				if (t == '3') {
					Sleep_write("请输入你想设置的皮肤(只能是一个字符):\n");
					char ttt = get("", 1);
					skin[getid(c)] = ttt;
					Sleep_write("设置成功!\n");
					_sl(1000);
				} else {
					goto setskin;
				}
			}
		}
		goto setskin;
	}
to_the_end:
	Sleep_write("感谢游玩!");
	exit(0);
}
//Yuexingfei_qwq is a flying-wind

抽卡(目前第二长代码……923行)

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#define pa system("pause")
#define cl system("cls")
#define wh while (1)
#define int long long

using namespace std;

long double money = 100.0;
int N = 0;
int R = 0;
int SR = 0;
int SSR = 0;
int TR = 0;
int TGR = 0;
int HR = 0;
int UR = 0;
int LSR = 0;
int CR = 0;
int SGR = 0;
int SC = 0;
int tot = 0;
int ci = 2;
string ka;
int zhangshu;
int ten_eig = 0, fiv_fou = 0;
int cicnt = 0;

const string s[13] = {"", "N", "R", "SR", "SSR", "TR", "TGR", "HR", "UR", "LSR", "CR", "SGR", "SC"};
int a[13] = {0};
int ma[13] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
const double jia[13] = {0, 0.5, 1, 3, 5, 5, 7, 10, 15, 20, 30, 50, 300};
const double xian[13] = {0, 0.2, 0.4, 0.6, 1, 2, 5, 3, 7, 20, 50, 100, 1000};
struct shuxing {
	bool f = false;
	int cishu = 0, shangxian = 15;
	double qian = 0.5;
} latiao, xiaoyang, huogai, suanniu;

inline void init(void) {
	suanniu.qian = 1;
	suanniu.shangxian = 12;
}

inline void Sleep_write(const string &x, const int &y = 10, char c = 'y') {
	for (int i = 0; i < (int)x.length(); i++) {
		putchar(x[i]);
		Sleep(y);
	}
	if (c != 'n') {
		putchar('\n');
	}
	Sleep(500);
}

inline char get(string s) {
	char ch[114514];
	int l = 0;
	for (auto i : s) {
		ch[++l] = i;
	}
	while (true) {
		char x = getch();
		for (int i = 1; i <= l; i++) {
			if (x == ch[i]) {
				return x;
			}
		}
		Sleep_write("Error:输入无效\n");
		Sleep(100);
	}
}

signed main() {
	init();
	int q, f;
	Sleep_write("一天,你运气爆棚,捡到了100块钱\n你高兴极了,作为贫穷的高质量市民,你决定拿来买卡\n开始吧!\n提示:\n游戏中卡的等级仅为部分(不算限定卡等特殊卡),\n卡的概率以小马宝莉的卡为标准");
	system("pause");
	goto zhu;
cla:
	goto zhu1;
ti:
	system("cls");
	Sleep_write("等级顺序:(从小到大)", 2);
	for (int i = 1; i <= 12; i++) {
		cout << s[i] << " ";
	}
	cout << endl;
	Sleep_write("市场价格:(单位:元)", 2);
	for (int i = 1; i <= 12; i++) {
		cout << s[i] << ":";
		printf ("%.1f\n", jia[i]);
	}
	printf ("\n");
	Sleep_write("同学羡慕值:(单位:点,2点 = 1元,初始一种卡最多可以炫耀3次,可以买小样增加炫耀次数)", 2);
	for (int i = 1; i <= 12; i++) {
		cout << s[i] << ":";
		printf ("%.1f\n", xian[i]);
	}
	printf ("\n");
	Sleep_write ("辣条可以增加蹭卡成功率,小卖部有15包货\n小样可以增加卡的炫耀次数,小卖部有15根货\n一包活该可以只用4元买一个五元包,小卖部有15包货\n一包酸妞可以只用8元买一个十元包,小卖部有10包货\n", 5);
	system("pause");
	goto zhu;
ge:
	system("cls");
	printf ("你的钱:%.1Lf\n", money);
	for (int i = 1; i <= 12; i++) {
		cout << s[i] << ":";
		if (s[i] == "N") {
			printf ("%lld", N);
		} else {
			if (s[i] == "R") {
				printf ("%lld", R);
			} else {
				if (s[i] == "SR") {
					printf ("%lld", SR);
				} else {
					if (s[i] == "SSR") {
						printf ("%lld", SSR);
					} else {
						if (s[i] == "TR") {
							printf ("%lld", TR);
						} else {
							if (s[i] == "TGR") {
								printf ("%lld", TGR);
							} else {
								if (s[i] == "HR") {
									printf ("%lld", HR);
								} else {
									if (s[i] == "UR") {
										printf ("%lld", UR);
									} else {
										if (s[i] == "LSR") {
											printf ("%lld", LSR);
										} else {
											if (s[i] == "SGR") {
												printf ("%lld", SGR);
											} else {
												if (s[i] == "CR") {
													printf ("%lld ", CR);
												} else {
													printf ("%lld", SC);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		printf ("\n");
	}
	printf ("卡的总数:%lld\n", tot);
	printf ("技能“用4元买一包5元包的次数”:%lld\n", fiv_fou);
	printf ("技能“用8元买一包10元包的次数”:%lld\n", ten_eig);
	system("pause");
	goto zhu;
shop:
	system("cls");
	printf ("欢迎来到童年小卖部~~~\n你要买什么?\n1.2元包\n2.5元包\n3.10元包\n4.辣条(0.5元,技能:蹭卡成功几率增加)\n5.小样(0.5元,技能:炫耀次数增加)\n6.活该(0.5元,技能:用4元买一包5元包的次数+1)\n7.酸妞(1元,技能:用8元买一包10元包的次数+1)\n8.退出\n你的钱:%.1Lf\n", money);
	q = getch();
	switch (q) {
		case '1':
			cout << endl;
			if (money >= 2) {
				money -= 2;
				N += 2;
				printf ("你获得了2张N卡、");
				f = rand() % 15 + 1;
				if (f <= 8) {
					R += 2;
					SR++;
					printf ("2张R卡、1张SR卡!");
				} else {
					printf ("1张R卡、1张SR卡、");
					R++, SR++;
					f = rand() % 5 + 1;
					if (f == 1) {
						f = rand() % 5 + 1;
						if (f == 1) {
							CR++;
							printf ("1张CR卡!!!!!");
						} else {
							printf ("1张UR卡!");
							UR++;
						}
					} else {
						printf ("1张SSR卡!");
						SSR++;
					}
				}
				printf ("\n");
				Sleep(500);
			} else {
				Sleep_write("你买不起!");
			}
			system("pause");
			break;
		case '2':
			cout << endl;
			if (fiv_fou && money >= 4) {
				puts("是否要使用技能:“用4元买一包5元包”?(Y/N)");
				puts("技能剩余使用次数:");
				cout << fiv_fou << endl;
				char input = tolower(get("YyNn"));
				if (input == 'y') {
					R += 4;
					money -= 4;
					fiv_fou--;
					printf ("你获得了4张R卡、");
					f = rand() % 7 + 1;
					if (f == 5) {
						TGR++;
						printf ("1张TGR卡、");
					} else {
						TR++;
						printf ("1张TR卡、");
					}
					f = rand() % 10 + 1;
					if (f <= 5) {
						printf ("1张SR卡!");
						SR++;
					} else {
						if (f <= 8) {
							printf ("1张SSR卡!");
							SSR++;
						} else {
							printf ("1张UR卡!");
							UR++;
						}
					}
					printf ("\n");
					Sleep(500);
				} else {
					if (money >= 5) {
						R += 4;
						money -= 5;
						printf ("你获得了4张R卡、");
						f = rand() % 7 + 1;
						if (f == 5) {
							TGR++;
							printf ("1张TGR卡、");
						} else {
							TR++;
							printf ("1张TR卡、");
						}
						f = rand() % 10 + 1;
						if (f <= 5) {
							printf ("1张SR卡!");
							SR++;
						} else {
							if (f <= 8) {
								printf ("1张SSR卡!");
								SSR++;
							} else {
								printf ("1张UR卡!");
								UR++;
							}
						}
						printf ("\n");
						Sleep(500);
					} else {
						Sleep_write("你好像不能不用卡…\n");
					}
				}
			} else {
				if (money >= 5) {
					R += 4;
					money -= 5;
					printf ("你获得了4张R卡、");
					f = rand() % 7 + 1;
					if (f == 5) {
						TGR++;
						printf ("1张TGR卡、");
					} else {
						TR++;
						printf ("1张TR卡、");
					}
					f = rand() % 10 + 1;
					if (f <= 5) {
						printf ("1张SR卡!");
						SR++;
					} else {
						if (f <= 8) {
							printf ("1张SSR卡!");
							SSR++;
						} else {
							printf ("1张UR卡!");
							UR++;
						}
					}
					printf ("\n");
					Sleep(500);
				} else {
					Sleep_write("你买不起!");
				}
			}
			system("pause");
			break;
		case '3':
			cout << endl;
			if (ten_eig && money >= 8) {
				puts("是否要使用技能:“用8元买一包10元包”?(Y/N)");
				puts("技能剩余使用次数:");
				cout << ten_eig << endl;
				char input = tolower(get("YyNn"));
				if (input == 'y') {
					money -= 8;
					R += 3;
					ten_eig--;
					SR++;
					HR++;
					printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
					f = rand() % 18 + 1;
					if (f <= 5) {
						f = rand() % 5 + 1;
						if (f == 1) {
							f = rand() % 5 + 1;
							if (f == 1) {
								printf ("1张SC卡!!!!!!!!!!!!");
								SC++;
							} else {
								printf ("1张SGR卡!!!!!");
								SGR++;
							}
						} else {
							printf ("1张LSR卡!!!!!");
							LSR++;
						}
					} else {
						f = rand() % 5 + 1;
						if (f == 1) {
							printf ("1张UR卡!");
							UR++;
						} else {
							printf ("1张SSR卡!");
							SSR++;
						}
					}
					printf ("\n");
					Sleep(500);
				} else {
					if (money >= 10) {
						money -= 10;
						R += 3;
						SR++;
						HR++;
						printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
						f = rand() % 18 + 1;
						if (f <= 5) {
							f = rand() % 5 + 1;
							if (f == 1) {
								f = rand() % 5 + 1;
								if (f == 1) {
									printf ("1张SC卡!!!!!!!!!!!!");
									SC++;
								} else {
									printf ("1张SGR卡!!!!!");
									SGR++;
								}
							} else {
								printf ("1张LSR卡!!!!!");
								LSR++;
							}
						} else {
							f = rand() % 5 + 1;
							if (f == 1) {
								printf ("1张UR卡!");
								UR++;
							} else {
								printf ("1张SSR卡!");
								SSR++;
							}
						}
						printf ("\n");
						Sleep(500);
					} else {
						Sleep_write("你好像不能不用卡…");
					}
				}
			} else {
				if (money >= 10) {
					money -= 10;
					R += 3;
					SR++;
					HR++;
					printf ("你获得了3张R卡、1张SR卡、一张HR卡、");
					f = rand() % 18 + 1;
					if (f <= 5) {
						f = rand() % 5 + 1;
						if (f == 1) {
							f = rand() % 5 + 1;
							if (f == 1) {
								printf ("1张SC卡!!!!!!!!!!!!");
								SC++;
							} else {
								printf ("1张SGR卡!!!!!");
								SGR++;
							}
						} else {
							printf ("1张LSR卡!!!!!");
							LSR++;
						}
					} else {
						f = rand() % 5 + 1;
						if (f == 1) {
							printf ("1张UR卡!");
							UR++;
						} else {
							printf ("1张SSR卡!");
							SSR++;
						}
					}
					printf ("\n");
					Sleep(500);
				} else {
					Sleep_write("你买不起!");
				}
			}
			system("pause");
			break;
		case '4':
			cout << endl;
			if (latiao.cishu >= latiao.shangxian) {
				Sleep_write("没货了…");
				break;
			}
			if (ci <= 1) {
				Sleep_write("不能再加了!");
				break;
			}
			latiao.cishu++;
			Sleep_write("你吃下了辣条!");
			Sleep_write("发动技能:蹭卡成功几率增加!");
			money -= latiao.qian;
			ci -= (ci <= 3 ? (ci - 1) : 2 + rand() % 3);
			system("pause");
			break;
		case '5':
			cout << endl;
			if (xiaoyang.cishu >= xiaoyang.shangxian) {
				Sleep_write("没货了…");
				break;
			}
			xiaoyang.cishu++;
			Sleep_write("你吃下了小样!");
			Sleep_write("发动技能:炫耀次数增加!");
			money -= xiaoyang.qian;
			for (int i = 0; i <= 12; i++) {
				ma[i] += 1;
			}
			system("pause");
			break;
		case '6':
			cout << endl;
			if (huogai.cishu >= huogai.shangxian) {
				Sleep_write("没货了…");
				break;
			}
			huogai.cishu++;
			Sleep_write("你吃下了活该!");
			Sleep_write("发动技能:用4元买一包5元包的次数+1!");
			money -= huogai.qian;
			fiv_fou++;
			system("pause");
			break;
		case '7':
			cout << endl;
			if (suanniu.cishu >= suanniu.shangxian) {
				Sleep_write("没货了…");
				break;
			}
			suanniu.cishu++;
			Sleep_write("你吃下了酸妞!");
			Sleep_write("发动技能:用8元买一包10元包的次数+1!");
			money -= suanniu.qian;
			ten_eig++;
			system("pause");
			break;
		case '8':
			goto zhu;
			break;
		default:
			goto shop;
			break;
	}
	goto shop;
zhu:
	tot = N + R + SR + SSR + TR + TGR + HR + UR + LSR + CR + SGR + SC;
	system("cls");
	printf ("1.买卡\n2.卖卡\n3.去班级\n4.退出\n5.说明\n6.查看个人信息\n");
	q = getch();
	switch (q) {
		case '1':
			goto shop;
			break;
		case '2':
			goto mai;
			break;
		case '3':
			goto cla;
			break;
		case '4':
			return 0;
		case '5':
			goto ti;
			break;
		case '6':
			goto ge;
			break;
		default:
			goto zhu;
			break;
	}
mai:
	wh {
		cl;
		Sleep_write("欢迎来到黑市~~~");
		Sleep_write("你的情况如下:");
		printf ("你的钱:%.1Lf\n", money);
		for (int i = 1; i <= 12; i++) {
			cout << s[i] << ":";
			if (s[i] == "N") {
				printf ("%lld", N);
			} else {
				if (s[i] == "R") {
					printf ("%lld", R);
				} else {
					if (s[i] == "SR") {
						printf ("%lld", SR);
					} else {
						if (s[i] == "SSR") {
							printf ("%lld", SSR);
						} else {
							if (s[i] == "TR") {
								printf ("%lld", TR);
							} else {
								if (s[i] == "TGR") {
									printf ("%lld", TGR);
								} else {
									if (s[i] == "HR") {
										printf ("%lld", HR);
									} else {
										if (s[i] == "UR") {
											printf ("%lld", UR);
										} else {
											if (s[i] == "LSR") {
												printf ("%lld", LSR);
											} else {
												if (s[i] == "SGR") {
													printf ("%lld", SGR);
												} else {
													if (s[i] == "CR") {
														printf ("%lld ", CR);
													} else {
														printf ("%lld", SC);
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
			printf ("\n");
		}
		Sleep_write("输入1退出。");
		printf ("你要卖什么卡?\n");
		cin >> ka;
		if (ka == "1") {
			break;
		}
		printf("你要售卖的卡一张");
		if (ka == "N") {
			printf ("%.1f", jia[1]);
		} else {
			if (ka == "R") {
				printf ("%.1f", jia[2]);
			} else {
				if (ka == "SR") {
					printf ("%.1f", jia[3]);
				} else {
					if (ka == "SSR") {
						printf ("%.1f", jia[4]);
					} else {
						if (ka == "TR") {
							printf ("%.1f", jia[5]);
						} else {
							if (ka == "TGR") {
								printf ("%.1f", jia[6]);
							} else {
								if (ka == "HR") {
									printf ("%.1f", jia[7]);
								} else {
									if (ka == "UR") {
										printf ("%.1f", jia[8]);
									} else {
										if (ka == "LSR") {
											printf ("%.1f", jia[9]);
										} else {
											if (ka == "SGR") {
												printf ("%.1f", jia[10]);
											} else {
												if (ka == "CR") {
													printf ("%.1f ", jia[11]);
												} else {
													printf ("%.1f", jia[12]);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		printf("元,确定售卖吗?(Y/N)\n");
		char ch = tolower(get("YyNn"));
		if (ch == 'n') {
			goto mai;
		}
		printf ("卖多少张?\n");
		cin >> zhangshu;
		int x;
		if (ka == "N") {
			x = N;
		}
		if (ka == "R") {
			x = R;
		}
		if (ka == "SR") {
			x = SR;
		}
		if (ka == "SSR") {
			x = SSR;
		}
		if (ka == "TR") {
			x = TR;
		}
		if (ka == "TGR") {
			x = TGR;
		}
		if (ka == "HR") {
			x = HR;
		}
		if (ka == "UR") {
			x = UR;
		}
		if (ka == "LSR") {
			x = LSR;
		}
		if (ka == "CR") {
			x = CR;
		}
		if (ka == "SGR") {
			x = SGR;
		}
		if (ka == "SC") {
			x = SC;
		}
		if (x < zhangshu) {
			Sleep_write("你没那么多卡!");
		} else {
			if (ka == "N") {
				N  -= zhangshu;
				money += zhangshu * 0.5;
			}
			if (ka == "R") {
				R -= zhangshu;
				money += zhangshu * 1;
			}
			if (ka == "SR") {
				SR -= zhangshu;
				money += zhangshu * 3;
			}
			if (ka == "SSR") {
				SSR -= zhangshu;
				money += zhangshu * 5;
			}
			if (ka == "TR") {
				TR -= zhangshu;
				money += zhangshu * 5;
			}
			if (ka == "TGR") {
				TGR -= zhangshu;
				money += zhangshu * 7;
			}
			if (ka == "HR") {
				HR -= zhangshu;
				money += zhangshu * 10;
			}
			if (ka == "UR") {
				UR -= zhangshu;
				money += zhangshu * 15;
			}
			if (ka == "LSR") {
				LSR -= zhangshu;
				money += zhangshu * 20;
			}
			if (ka == "CR") {
				CR -= zhangshu;
				money += zhangshu * 30;
			}
			if (ka == "SGR") {
				SGR -= zhangshu;
				money += zhangshu * 50;
			}
			if (ka == "SC") {
				SC -= zhangshu;
				money += zhangshu * 300;
			}
			Sleep_write("售卖成功!");
			pa;
		}
	}
	goto zhu;
ceng:
	f = rand() % ci;
	if (f > (ci <= 5 ? 1 : ci / (rand() % 4 + 2) + rand() % 3 - 1)) {
		Sleep_write ("蹭卡失败!");
	} else {
		printf ("蹭到了3张N卡");
		N += 3;
		f = rand() % 6;
		if (f) {
			printf ("、%lld张R卡", f);
			R += f;
		}
		f = rand() % 5;
		if (f) {
			printf ("、%lld张SR卡", f);
		}
		SR += f;
		f = rand() % 3;
		if (f) {
			printf ("、%lld张SSR卡", f);
		}
		SSR += f;
		if ((rand() % 10) == 1) {
			printf ("、2张UR");
			UR += 2;
		}
		if ((rand() % 10) == 1) {
			printf ("、1张TR");
			TR++;
		}
		if ((rand() % 15) == 1) {
			printf ("、1张HR");
			HR++;
			ci++;
		}
		if ((rand() % 35) == 1) {
			printf ("、1张LSR!!!");
			LSR++;
			ci += 2;
		}
		Sleep_write("!");
		if (ci == 2) {
			ci++;
		} else {
			cicnt++;
			if (ci <= 5) {
				if (cicnt == 3) {
					ci++;
					cicnt = 0;
				}
			} else {
				if (cicnt == 2) {
					ci++;
					cicnt = 0;
				}
			}
		}
	}
	system("pause");
	goto zhu1;
xuan:
	cl;
	puts("要炫耀哪种卡?");
	puts("你的情况如下:");
	for (int i = 1; i <= 12; i++) {
		cout << s[i] << ":";
		if (s[i] == "N") {
			printf ("%lld", N);
		} else {
			if (s[i] == "R") {
				printf ("%lld", R);
			} else {
				if (s[i] == "SR") {
					printf ("%lld", SR);
				} else {
					if (s[i] == "SSR") {
						printf ("%lld", SSR);
					} else {
						if (s[i] == "TR") {
							printf ("%lld", TR);
						} else {
							if (s[i] == "TGR") {
								printf ("%lld", TGR);
							} else {
								if (s[i] == "HR") {
									printf ("%lld", HR);
								} else {
									if (s[i] == "UR") {
										printf ("%lld", UR);
									} else {
										if (s[i] == "LSR") {
											printf ("%lld", LSR);
										} else {
											if (s[i] == "SGR") {
												printf ("%lld", SGR);
											} else {
												if (s[i] == "CR") {
													printf ("%lld ", CR);
												} else {
													printf ("%lld", SC);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		printf (",还可以炫耀%lld次\n", ma[i] - a[i]);
	}
	puts("输入1退出。");
	cin >> ka;
	if (ka == "1") {
		goto zhu1;
	}
	int y;
	for (int i = 1; i <= 12; i++) {
		if (s[i] == ka) {
			y = i;
			break;
		}
	}
	if (a[y] == ma[y]) {
		Sleep_write("不能再炫耀这种卡了!");
	} else {
		int n;
		if (ka == "N") {
			n = N;
		}
		if (ka == "R") {
			n = R;
		}
		if (ka == "SR") {
			n = SR;
		}
		if (ka == "SSR") {
			n = SSR;
		}
		if (ka == "TR") {
			n = TR;
		}
		if (ka == "TGR") {
			n = TGR;
		}
		if (ka == "HR") {
			n = HR;
		}
		if (ka == "UR") {
			n = UR;
		}
		if (ka == "LSR") {
			n = LSR;
		}
		if (ka == "CR") {
			n = CR;
		}
		if (ka == "SGR") {
			n = SGR;
		}
		if (ka == "SC") {
			n = SC;
		}
		if (n == 0) {
			Sleep_write("你没有这种卡!");
		} else {
			n *= xian[y];
			a[y]++;
			printf ("共获得了%lld点羡慕值!", n);
			money += n * 0.5;
		}
	}
	pa;
	goto zhu1;
zhu1:
	system("cls");
	puts("你踏入了 6 班...");
	puts("1.蹭卡");
	puts("2.炫耀");
	puts("3.返回");
	q = getch();
	if (q == '1') {
		goto ceng;
	} else {
		if (q == '2') {
			goto xuan;
		} else {
			if (q == '3') {
				goto zhu;
			} else {
				goto zhu1;
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值