上接【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);
}
}
#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;
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);
}
抽卡(目前第二长代码……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;
}
}
}
}