【Yuexingfei_qwq的原创游戏】

好的其实标题里的Yuexingfei_qwq指的是我。
不定时持续更新ing……
有bug及时回复或私信我哈……
我不会搞.gif的运行图qwq


更新日志:
2025.4.9
将“乌龟对对碰”的随机改得比较人性化了。

2025.5.18
添加“抽卡”和“色块对决”。


本文同步发表在以下Blog:

洛谷:https://www.luogu.com.cn/article/a0nqm3my(看不到的话可以看https://www.luogu.me/article/a0nqm3my,记得每次点进去的时候都按一下“更新文章内容”按键)

CSDN:https://blog.csdn.net/yuexingfei_111/article/details/146573222?spm=1011.2415.3001.5331

博客园:https://www.cnblogs.com/yxf2013/p/18802908


“.h”文件(自编头文件)

game_1.h(常用游戏函数):

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <algorithm>
#include <conio.h>
#include <math.h>
#define _cl system("cls")
#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
using namespace std;
typedef long long ll;
typedef string str;
using ull = unsigned long long;
inline ll x_y(ll x, ll y, ll p = (1LL << 60)) {//x的y次方模p
	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 == "cin") {
			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 = 100) {
	_sl(d);
	_ge;
}
inline char get(str s) {
	char ch[114514];
	int l = 0;
	for (auto i : s) {
		ch[++l] = i;
	}
	while (true) {
		char x = getchar();
		for (int i = 1; i <= l; i++) {
			if (x == ch[i]) {
				return x;
			}
		}
		Sleep_write("Error:输入无效\n");
		_sl(2000);
		_pa;
	}
}

抽奖

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>
#define w(x) while(x)
#define cl system("cls")
#define Sl(x) Sleep(x)
#define f(i, a, b) for (int i = a; i <= b; i++)

using namespace std;

int a[10][10], money = 20, h1, h2;

void init() {
	srand(time(0));
	f(i, 1, 3) {
		f(j, 1, 3) {
			a[i][j] = rand() % 10 + 1;
		}
	}
}

void start() {
	puts("来抽奖吧!!!");
	puts("yuexingfei出品,必属精品!");
	puts("请按任意键开始游戏...");
	getch();
	cl;
	puts ("Loading......");
	Sl(2000);
	cl;
}

void out() {
	cl;
	int r = rand() % 3 + 1, l = rand() % 3 + 1;
	h1 = r, h2 = l;
	f(i, 1, 3) {
		f(j, 1, 3) {
			if (i == r && j == l) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
			} else {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			}
			printf ("%d", a[i][j]);
			if (j != 3) {
				printf ("\t");
			}
		}
		printf ("\n");
	}
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
}

int main() {
	init();
	start();
	w(1) {
		cl;
		if (money < 4) {
			puts("你的钱不够抽了!");
			break;
		}
		int x;
		while (1) {
			printf ("你现在有%d元,抽一次奖4元。\n请问本次你要旋转几次?(输入123456789重置转盘)\n", money);
			scanf ("%d", &x);
			if (x <= 0 || (x > 1e7 && x != 123456789)) {
				cout << "Error:输入错误" << endl;
			} else {
				break;
			}
		}
		if (x == 123456789) {
			init();
		} else {
			for (int i = 1; i <= x; i++) {
				out();
				int t;
				if (i == x) {
					t = 3000;
				} else {
					if (i == x - 1) {
						t = 2000;
					} else {
						if (i == x - 2) {
							t = 1000;
						} else {
							if (i == x - 3) {
								t = 500;
							} else {
								t = 10;
							}
						}
					}
				}
				Sl(t);
			}
			money = money - 4 + a[h1][h2];
			printf ("恭喜获得了%d元!\n", a[h1][h2]);
			Sl(2500);
		}
	}
	return 0;
}

躲避铁砧

#include <bits/stdc++.h>
#include <iostream>
#include <windows.h>
#include <cmath>
#include <stdlib.h>
#include <cstdio>
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
#include <time.h>

using namespace std;

int r = -1, b = -1, rf = 3, bf = 3;
int n, m;
int a[10];

void init() {
	memset(a, 0, sizeof(a));
}

void out() {
	system ("cls");
	printf ("地图 : \n*******************\n");
	for (int i = 0; i < 10; i++) {
		if (a[i] == 0) {
			if (i == r) {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
				printf ("i ");
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			} else {
				if (i == b) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
					printf ("i ");
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
				} else {
					printf ("/ ");
				}
			}
		} else {
			if (a[i] == 1) {
				if (i == r) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
					printf ("* ");
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
					rf--;
				}
				if (i == b) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
					printf ("* ");
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
					bf--;
				} 
				if (i != b && i != r) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
					printf ("# ");
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
				}
			}
		}
	}
	printf ("\n*******************\n");
	printf ("红生命 : %d\n蓝生命 : %d\n", rf, bf);
}//"#" : 有铁砧但没人; "*" : 有铁砧且有人; "/" : 空; "i" : 人 (对应颜色)

void ran() {
	n = rand() % 5 + 1;
	printf ("落下%d个铁砧\n", n);
	for (int i = 1; i <= n; i++) {
		while (a[m] != 0) {
			m = rand() % 10;
		}
		a[m] = 1;
	}	
}

int main() {
	srand(time(0));
	init();
	while (1) {
		out();
		printf ("红方选择位置(1~10) : \n");
		scanf ("%d", &r);
		r--;
		printf ("蓝方选择位置(1~10) : \n");
		scanf ("%d", &b);
		b--;
		out();
		printf ("ran...\n");
		Sleep(1000);
		ran();
		Sleep(1000);
		out();
		Sleep(2500);
		init();
		if (a[r] == 1)
			rf--;
		if (a[b] == 1)
			bf--;
		if (rf == 0 || bf == 0)
			break;
	}
	if (rf > bf)
		printf ("红赢了!\n");
	if (rf < bf)
		printf ("蓝赢了!\n");
	if (rf == bf)
		printf ("平局!\n");
	return 0;
}

MC党福利

起床战争

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>

char a[50][50] = {"OOOOOOOOOOOOOOOOOOOO",
                  "OA                 O",
                  "O H      O         O",
                  "O      OOOOO       O",
                  "O        O       R O",
                  "O                 WO",
                  "OOOOOOOOOOOOOOOOOOOO",
                 };

struct Player {
	int shengming, gongji, fangyu;
};

Player P1, P2;

bool Aw = true, Ww = true;

int x = 2, y = 2, p = 4, q = 17, n = 1, m = 1, c = 5, b = 18, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30;

void out() {
	system("cls");
	for (int i = 0; i <= 7; i++) {
		for (int j = 0; j <= 20; j++) {
			printf ("%c", a[i][j]);
		}
		switch (i) {
			case 0:
				printf ("	H:玩家1(WASD移动)");
				break;
			case 1:
				printf ("	A:H的床");
				break;
			case 2:
				printf ("	R:玩家2(IJKL移动)");
				break;
			case 3:
				printf ("	W:R的床");
				break;
			case 4:
				printf ("	O:墙壁");
				break;
			case 5:
				printf ("	N:增加攻击");
				break;
			case 6:
				printf ("	F:增加防御");
				break;
			case 7:
				printf ("	S:增加生命");
				break;
		}
		printf ("\n");
	}
	printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
	printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
	if (Aw) {
		printf ("H床:YES\n");
	} else {
		printf ("H床:NO\n");
	}
	if (Ww) {
		printf ("R床:YES\n");
	} else {
		printf ("R床:NO\n");
	}
}

void SetFont(int size) {
	CONSOLE_FONT_INFOEX cfi;
	cfi.cbSize = sizeof cfi;
	cfi.nFont = 0;
	cfi.dwFontSize.X = 0;
	cfi.dwFontSize.Y = size;//设置字体大小
	cfi.FontFamily = FF_DONTCARE;
	cfi.FontWeight = FW_NORMAL; //字体粗细
	wcscpy_s(cfi.FaceName, L"宋体");//设置字体
	SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_FONT_INFO consoleCurrentFont;
	GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}

void xuan() {
	for (int i = 1; i <= 2; i++) {
		if (i == 1) {
			printf ("请H选择!(输入前面的序号)\n");
		} else {
			printf ("请R选择!(输入前面的序号)\n");
		}
		printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
		printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
		printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
		printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
		printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
		int d;
		scanf ("%d", &d);
		switch (d) {
			case 1:
				if (i == 1) {
					P1.shengming = 200;
					P1.gongji = 50;
					P1.fangyu = 50;
				} else {
					P2.shengming = 200;
					P2.gongji = 50;
					P2.fangyu = 50;
				}
				break;
			case 2:
				if (i == 1) {
					P1.shengming = 150;
					P1.gongji = 40;
					P1.fangyu = 80;
				} else {
					P2.shengming = 150;
					P2.gongji = 40;
					P2.fangyu = 80;
				}
				break;
			case 3:
				if (i == 1) {
					P1.shengming = 250;
					P1.gongji = 40;
					P1.fangyu = 40;
				} else {
					P2.shengming = 250;
					P2.gongji = 40;
					P2.fangyu = 40;
				}
				break;
			case 4:
				if (i == 1) {
					P1.shengming = 130;
					P1.gongji = 45;
					P1.fangyu = 85;
				} else {
					P2.shengming = 130;
					P2.gongji = 45;
					P2.fangyu = 85;
				}
				break;
			case 5:
				if (i == 1) {
					P1.shengming = 135;
					P1.gongji = 65;
					P1.fangyu = 40;
				} else {
					P2.shengming = 135;
					P2.gongji = 65;
					P2.fangyu = 40;
				}
				break;
		}
		system("cls");
	}
}

int zhan() {
	system("cls");
	printf ("交战中......\n");
	Sleep(2500);
	int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
	while (1) {
		if (P2g - P1f > 0) {
			P1s = P1s - (P2g - P1f);
		}
		if (P1g - P2f > 0) {
			P2s = P2s - (P1g - P2f);
		}

		if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
			printf ("无法交战!\n");
			Sleep(1000);
			a[p][q] = ' ';
			p = 4, q = 17;
			a[p][q] = 'R';
			a[x][y] = ' ';
			x = 2, y = 2;
			a[x][y] = 'H';
			return 100;
		}

		if (P1s <= 0 && P2s > 0) {
			printf ("H狗带了!\n");
			Sleep(5000);
			if (Aw) {
				a[x][y] = ' ';
				x = 2, y = 2;
				a[x][y] = 'H';
				if (p == x && q == y) {
					p = 5, q = 9;
					a[p][q] = 'R';
				}
				return 99;
			} else {
				return 1;
			}
		}
		if (P2s <= 0 && P1s > 0) {
			printf ("R狗带了!\n");
			Sleep(5000);
			if (Ww) {
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				if (p == x && q == y) {
					x = 1, y = 9;
					a[x][y] = 'H';
				}
				return 99;
			} else {
				return 2;
			}
		}
		if (P2s <= 0 && P1s <= 0) {
			printf ("都狗带了!\n");
			Sleep(5000);
			if (Ww && Aw) {
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				a[x][y] = ' ';
				x = 2, y = 2;
				a[x][y] = 'H';
				return 99;
			}
			if (Ww && !Aw) {
				return 2;
			}
			if (!Ww && Aw) {
				return 1;
			}
			if (!Ww && !Aw) {
				return 3;
			}
		}
	}
}

void win(int g) {
	if (g == 1) {
		printf("\'R\' 赢了!\n");
		Sleep(5000);
		system("pause");
	} else {
		if (g == 2) {
			printf("\'H\' 赢了!\n");
			Sleep(5000);
			system("pause");
		} else {
			printf("平局!\n");
			Sleep(5000);
			system("pause");
		}
	}
}

void rans(char cha) {
	int f = rand() % 2;
	a[sx][sy] = cha;
	sx = 35, sy = 35;
	switch (f) {
		case 0:
			sx = 5, sy = 1;
			break;
		case 1:
			sx = 1, sy = 18;
			break;
	}
	a[sx][sy] = 'S';
}

void rang(char cha) {
	int ff = rand() % 3;
	a[gx][gy] = cha;
	gx = 35, gy = 35;
	switch (ff) {
		case 0:
			gx = 2, gy = 15;
			break;
		case 1:
			gx = 2, gy = 8;
			break;
		case 2:
			gx = 4, gy = 10;
			break;
	}
	a[gx][gy] = 'N';
}

void ranf(char cha) {
	int fff = rand() % 3;
	a[fx][fy] = cha;
	fx = 35, fy = 35;
	switch (fff) {
		case 0:
			fx = 2, fy = 10;
			break;
		case 1:
			fx = 4, fy = 4;
			break;
		case 2:
			fx = 4, fy = 8;
			break;
	}
	a[fx][fy] = 'F';
}

int main() {
	system("title 起床战争");
	SetFont(25);
	srand(time(NULL));
	system("color 0a");
	xuan();
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO CursorInfo;
	GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
	CursorInfo.bVisible = false; //隐藏控制台光标
	SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
	out();
	ranf(' ');
	rang(' ');
	rans(' ');
	while (1) {
		if (GetAsyncKeyState('S')) {
			if (a[x + 1][y] != 'O') {
				a[x][y] = ' ';
				x++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('D')) {
			if (a[x][y + 1] != 'O') {
				a[x][y] = ' ';
				y++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('A')) {
			if (a[x][y - 1] != 'O') {
				a[x][y] = ' ';
				y--;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('W')) {
			if (a[x - 1][y] != 'O') {
				a[x][y] = ' ';
				x--;
				a[x][y] = 'H';
			}
		}

		if (GetAsyncKeyState('K')) {
			if (a[p + 1][q] != 'O') {
				a[p][q] = ' ';
				p++;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('L')) {
			if (a[p][q + 1] != 'O') {
				a[p][q] = ' ';
				q++;
				a[p][q] = 'R';

			}
		}
		if (GetAsyncKeyState('J')) {
			if (a[p][q - 1] != 'O') {
				a[p][q] = ' ';
				q--;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('I')) {
			if (a[p - 1][q] != 'O') {
				a[p][q] = ' ';
				p--;
				a[p][q] = 'R';
			}
		}

		if (x == p && y == q) {
			int jie = zhan();
			if (jie == 1) {
				win(1);
				break;
			} else {
				if (jie == 2) {
					win(2);
					break;
				} else {
					if (jie < 99) {
						win(3);
						break;
					}
				}
			}
		}

		if (x == c && y == b) {
			a[c][b] = ' ';
			c = 48, b = 49;
			Ww = false;
		}
		if (p == n && q == m) {
			a[n][m] = ' ';
			n = 39, m = 35;
			Aw = false;
		}

		if (c == p && b == q && Ww) {
			a[c][b] = 'R';
			while (1) {
				if (!(c == p && b == q))
					a[c][b] = 'W';
				break;
			}
		} else {
			a[c][b] = 'W';
		}
		if (n == x && m == y && Aw) {
			a[n][m] = 'H';
			while (1) {
				if (!(n == x && m == y))
					a[n][m] = 'A';
				break;
			}
		} else {
			a[n][m] = 'A';
		}

		if (sx == x && sy == y) {
			P1.shengming += 5;
			Sleep(10);
			rans('H');
		}
		if (sx == p && sy == q) {
			P2.shengming += 5;
			Sleep(10);
			rans('R');
		}

		if (gx == x && gy == y) {
			P1.gongji += 5;
			rang('H');
		}
		if (gx == p && gy == q) {
			P2.gongji += 5;
			rang('R');
		}

		if (fx == x && fy == y) {
			P1.fangyu += 5;
			ranf('H');
		}
		if (fx == p && fy == q) {
			P2.fangyu += 5;
			ranf('R');
		}

		out();
	}
	return 0;
}

水晶战争

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>

char a[50][50] = {"OOOOOOOOOOOOOOOOOOOO",
                  "OA                 O",
                  "O H      O         O",
                  "O      OOOOO       O",
                  "O        O       R O",
                  "O                 WO",
                  "OOOOOOOOOOOOOOOOOOOO",
                 };

struct Player {
	int shengming, gongji, fangyu;
};

Player P1, P2;

bool Aw = true, Ww = true, Z = false;

int x = 2, y = 2, p = 4, q = 17, n = 1, m = 1, c = 5, b = 18, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30, A = 1000, W = 1000;

void out() {
	system("cls");
	for (int i = 0; i <= 7; i++) {
		for (int j = 0; j <= 20; j++) {
			printf ("%c", a[i][j]);
		}
		switch (i) {
			case 0:
				printf ("	H:玩家1(WASD移动)");
				break;
			case 1:
				printf ("	A:H的水晶");
				break;
			case 2:
				printf ("	R:玩家2(IJKL移动)");
				break;
			case 3:
				printf ("	W:R的水晶");
				break;
			case 4:
				printf ("	O:墙壁");
				break;
			case 5:
				printf ("	N:增加攻击");
				break;
			case 6:
				printf ("	F:增加防御");
				break;
			case 7:
				printf ("	S:增加生命(也可增加水晶血量)");
				break;
		}
		printf ("\n");
	}
	printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
	printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
	if (Aw) {
		printf ("H水晶:YES		血量:%d\n", A);
	} else {
		printf ("H水晶:NO\n");
	}
	if (Ww) {
		printf ("R水晶:YES		血量:%d\n", W);
	} else {
		printf ("R水晶:NO\n");
	}
}

void SetFont(int size) {
	CONSOLE_FONT_INFOEX cfi;
	cfi.cbSize = sizeof cfi;
	cfi.nFont = 0;
	cfi.dwFontSize.X = 0;
	cfi.dwFontSize.Y = size;//设置字体大小
	cfi.FontFamily = FF_DONTCARE;
	cfi.FontWeight = FW_NORMAL; //字体粗细
	wcscpy_s(cfi.FaceName, L"宋体");//设置字体
	SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_FONT_INFO consoleCurrentFont;
	GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}

void xuan() {
	for (int i = 1; i <= 2; i++) {
		if (i == 1) {
			printf ("请H选择你的职业!(输入前面的序号)\n");
		} else {
			printf ("请R选择你的职业!(输入前面的序号)\n");
		}
		printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
		printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
		printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
		printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
		printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
		int d;
		scanf ("%d", &d);
		switch (d) {
			case 1:
				if (i == 1) {
					P1.shengming = 200;
					P1.gongji = 50;
					P1.fangyu = 50;
				} else {
					P2.shengming = 200;
					P2.gongji = 50;
					P2.fangyu = 50;
				}
				break;
			case 2:
				if (i == 1) {
					P1.shengming = 150;
					P1.gongji = 40;
					P1.fangyu = 80;
				} else {
					P2.shengming = 150;
					P2.gongji = 40;
					P2.fangyu = 80;
				}
				break;
			case 3:
				if (i == 1) {
					P1.shengming = 250;
					P1.gongji = 40;
					P1.fangyu = 40;
				} else {
					P2.shengming = 250;
					P2.gongji = 40;
					P2.fangyu = 40;
				}
				break;
			case 4:
				if (i == 1) {
					P1.shengming = 130;
					P1.gongji = 45;
					P1.fangyu = 85;
				} else {
					P2.shengming = 130;
					P2.gongji = 45;
					P2.fangyu = 85;
				}
				break;
			case 5:
				if (i == 1) {
					P1.shengming = 135;
					P1.gongji = 65;
					P1.fangyu = 40;
				} else {
					P2.shengming = 135;
					P2.gongji = 65;
					P2.fangyu = 40;
				}
				break;
		}
		system("cls");
	}
}

int zhan() {//这个函数我现在再倒回来看都觉得不是我的实力能写得出来的
	Z = true;
	system("cls");
	printf ("交战中......\n");
	Sleep(2500);
	int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
	while (1) {
		if (P2g - P1f > 0) {
			P1s = P1s - (P2g - P1f);
		}
		if (P1g - P2f > 0) {
			P2s = P2s - (P1g - P2f);
		}

		if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
			printf ("无法交战!\n");
			Sleep(1000);
			a[p][q] = ' ';
			p = 4, q = 17;
			a[p][q] = 'R';
			a[x][y] = ' ';
			x = 2, y = 2;
			a[x][y] = 'H';
			Z = false;
			return 100;
		}

		if (P1s <= 0 && P2s > 0) {
			printf ("H狗带了!\n");
			Sleep(5000);
			if (Aw) {
				a[x][y] = ' ';
				x = 2, y = 2;
				a[x][y] = 'H';
				if (p == x && q == y) {
					p = 5, q = 9;
					a[p][q] = 'R';
				}
				Z = false;
				return 99;
			} else {
				Z = false;
				return 1;
			}
		}
		if (P2s <= 0 && P1s > 0) {
			printf ("R狗带了!\n");
			Sleep(5000);
			if (Ww) {
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				if (p == x && q == y) {
					x = 1, y = 9;
					a[x][y] = 'H';
				}
				Z = false;
				return 99;
			} else {
				Z = false;
				return 2;
			}
		}
		if (P2s <= 0 && P1s <= 0) {
			printf ("都狗带了!\n");
			Sleep(5000);
			if (Ww && Aw) {
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				a[x][y] = ' ';
				x = 2, y = 2;
				a[x][y] = 'H';
				Z = false;
				return 99;
			}
			if (Ww && !Aw) {
				Z = false;
				return 2;
			}
			if (!Ww && Aw) {
				Z = false;
				return 1;
			}
			if (!Ww && !Aw) {
				Z = false;
				return 3;
			}
		}
	}
}

void win(int g) {
	if (g == 1) {
		printf("\'R\' 赢了!\n");
		Sleep(5000);
		system("pause");
	} else {
		if (g == 2) {
			printf("\'H\' 赢了!\n");
			Sleep(5000);
			system("pause");
		} else {
			printf("平局!\n");
			Sleep(5000);
			system("pause");
		}
	}
}

void rans(char cha) {
	int f = rand() % 2;
	a[sx][sy] = cha;
	sx = 35, sy = 35;
	switch (f) {
		case 0:
			sx = 5, sy = 1;
			break;
		case 1:
			sx = 1, sy = 18;
			break;
	}
	a[sx][sy] = 'S';
}

void rang(char cha) {
	int ff = rand() % 3;
	a[gx][gy] = cha;
	gx = 35, gy = 35;
	switch (ff) {
		case 0:
			gx = 2, gy = 15;
			break;
		case 1:
			gx = 2, gy = 8;
			break;
		case 2:
			gx = 4, gy = 10;
			break;
	}
	a[gx][gy] = 'N';
}

void ranf(char cha) {
	int fff = rand() % 3;
	a[fx][fy] = cha;
	fx = 35, fy = 35;
	switch (fff) {
		case 0:
			fx = 2, fy = 10;
			break;
		case 1:
			fx = 4, fy = 4;
			break;
		case 2:
			fx = 4, fy = 8;
			break;
	}
	a[fx][fy] = 'F';
}

int main() {
	system("title 水晶战争");
	SetFont(25);
	srand(time(NULL));
	system("color 0a");
	xuan();
	out();
	ranf(' ');
	rang(' ');
	rans(' ');
	while (1) {
		if (GetAsyncKeyState('S')) {
			if (a[x + 1][y] != 'O') {
				a[x][y] = ' ';
				x++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('D')) {
			if (a[x][y + 1] != 'O') {
				a[x][y] = ' ';
				y++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('A')) {
			if (a[x][y - 1] != 'O') {
				a[x][y] = ' ';
				y--;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('W')) {
			if (a[x - 1][y] != 'O') {
				a[x][y] = ' ';
				x--;
				a[x][y] = 'H';
			}
		}

		if (GetAsyncKeyState('K')) {
			if (a[p + 1][q] != 'O') {
				a[p][q] = ' ';
				p++;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('L')) {
			if (a[p][q + 1] != 'O') {
				a[p][q] = ' ';
				q++;
				a[p][q] = 'R';

			}
		}
		if (GetAsyncKeyState('J')) {
			if (a[p][q - 1] != 'O') {
				a[p][q] = ' ';
				q--;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('I')) {
			if (a[p - 1][q] != 'O') {
				a[p][q] = ' ';
				p--;
				a[p][q] = 'R';
			}
		}

		if (x == p && y == q) {
			int jie = zhan();
			if (jie == 1) {
				win(1);
				break;
			} else {
				if (jie == 2) {
					win(2);
					break;
				} else {
					if (jie < 99) {
						win(3);
						break;
					}
				}
			}
		}

		if (x == c && y == b && !Z) {
			W -= P1.gongji;
			Sleep(500);
			if (W <= 0) {
				a[c][b] = ' ';
				c = 48, b = 49;
				Ww = false;
			}
		}
		if (p == n && q == m && !Z) {
			A -= P2.gongji;
			Sleep(500);
			if (A <= 0) {
				a[n][m] = ' ';
				n = 48, m = 49;
				Aw = false;
			}
		}

		if (c == p && b == q && Ww) {
			a[c][b] = 'R';
			while (1) {
				if (!(c == p && b == q))
					a[c][b] = 'W';
				break;
			}
		} else {
			a[c][b] = 'W';
		}
		if (n == x && m == y && Aw) {
			a[n][m] = 'H';
			while (1) {
				if (!(n == x && m == y))
					a[n][m] = 'A';
				break;
			}
		} else {
			a[n][m] = 'A';
		}

		if (sx == x && sy == y) {
			P1.shengming += 5;
			A += 2;
			Sleep(10);
			rans('H');
		}
		if (sx == p && sy == q) {
			P2.shengming += 5;
			W += 2;
			Sleep(10);
			rans('R');
		}

		if (gx == x && gy == y) {
			P1.gongji += 5;
			rang('H');
		}
		if (gx == p && gy == q) {
			P2.gongji += 5;
			rang('R');
		}

		if (fx == x && fy == y) {
			P1.fangyu += 5;
			ranf('H');
		}
		if (fx == p && fy == q) {
			P2.fangyu += 5;
			ranf('R');
		}

		out();
	}
	return 0;
}

攻守战

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>
#define w(x) while(x)
#define cl system("cls")
#define Sl(x) Sleep(x)

using namespace std;

char a[50][50] = {"OOOOOOOOOOOOOOOOOOOOOOOOO",
                  "O                      WO",
                  "O           O           O",
                  "OH        OOOOO      R WO",
                  "O           O           O",
                  "O                      WO",
                  "OOOOOOOOOOOOOOOOOOOOOOOOO",
                 };

struct Player {
	int shengming, gongji, fangyu;
};

Player P1, P2;

bool W1 = true, W2 = true, W3 = true;

int x = 3, y = 1, p = 3, q = 21, n = 1, m = 23, c = 3, b = 23, f = 5, j = 23, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30;

int ttt;
int t = 100000;

void out() {
	cl;
	for (int i = 0; i <= 7; i++) {
		for (int j = 0; j <= 24; j++) {
			printf ("%c", a[i][j]);
		}
		printf ("	");
		switch (i) {
			case 0:
				printf ("H:玩家1(WASD移动)");
				break;
			case 1:
				printf ("R:玩家2(IJKL移动)");
				break;
			case 2:
				printf ("W:R的床");
				break;
			case 3:
				printf ("O:墙壁");
				break;
			case 4:
				printf ("N:增加攻击");
				break;
			case 5:
				printf ("F:增加防御");
				break;
			case 6:
				printf ("S:增加生命");
				break;
		}
		printf ("\n");
	}
	printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
	printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
	if (W1) {
		printf ("床W1:YES\n");
	} else {
		printf ("床W1:NO\n");
	}
	if (W2) {
		printf ("床W2:YES\n");
	} else {
		printf ("床W2:NO\n");
	}
	if (W3) {
		printf ("床W3:YES\n");
	} else {
		printf ("床W3:NO\n");
	}
	printf ("剩余时间:%dms\n", t - (int)clock() + ttt);
}

void SetFont(int size) {
	CONSOLE_FONT_INFOEX cfi;
	cfi.cbSize = sizeof cfi;
	cfi.nFont = 0;
	cfi.dwFontSize.X = 0;
	cfi.dwFontSize.Y = size;//设置字体大小
	cfi.FontFamily = FF_DONTCARE;
	cfi.FontWeight = FW_NORMAL; //字体粗细
	wcscpy_s(cfi.FaceName, L"宋体");//设置字体
	SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_FONT_INFO consoleCurrentFont;
	GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}

void xuan() {
	for (int i = 1; i <= 2; i++) {
		if (i == 1) {
			printf ("请H选择职业!(输入前面的序号)\n");
		} else {
			printf ("请R选择职业!(输入前面的序号)\n");
		}
		printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
		printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
		printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
		printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
		printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
		int d;
		scanf ("%d", &d);
		switch (d) {
			case 1:
				if (i == 1) {
					P1.shengming = 200;
					P1.gongji = 50;
					P1.fangyu = 50;
				} else {
					P2.shengming = 200;
					P2.gongji = 50;
					P2.fangyu = 50;
				}
				break;
			case 2:
				if (i == 1) {
					P1.shengming = 150;
					P1.gongji = 40;
					P1.fangyu = 80;
				} else {
					P2.shengming = 150;
					P2.gongji = 40;
					P2.fangyu = 80;
				}
				break;
			case 3:
				if (i == 1) {
					P1.shengming = 250;
					P1.gongji = 40;
					P1.fangyu = 40;
				} else {
					P2.shengming = 250;
					P2.gongji = 40;
					P2.fangyu = 40;
				}
				break;
			case 4:
				if (i == 1) {
					P1.shengming = 130;
					P1.gongji = 45;
					P1.fangyu = 85;
				} else {
					P2.shengming = 130;
					P2.gongji = 45;
					P2.fangyu = 85;
				}
				break;
			case 5:
				if (i == 1) {
					P1.shengming = 135;
					P1.gongji = 65;
					P1.fangyu = 40;
				} else {
					P2.shengming = 135;
					P2.gongji = 65;
					P2.fangyu = 40;
				}
				break;
		}
		system("cls");
	}
}

int zhan() {
	system("cls");
	printf ("交战中......\n");
	Sleep(2500);
	int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
	while (1) {
		if (P2g - P1f > 0) {
			P1s = P1s - (P2g - P1f);
		}
		if (P1g - P2f > 0) {
			P2s = P2s - (P1g - P2f);
		}

		if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
			printf ("无法交战!\n");
			Sl(1000);
			a[p][q] = ' ';
			p = 3, q = 21;
			a[p][q] = 'R';
			a[x][y] = ' ';
			x = 3, y = 1;
			a[x][y] = 'H';
			return 100;
		}

		if (P1s <= 0 && P2s > 0) {
			printf ("H狗带了!\n");
			Sl(3000);
			a[x][y] = ' ';
			x = 3, y = 1;
			a[x][y] = 'H';
		}
		if (P2s <= 0 && P1s > 0) {
			printf ("R狗带了!\n");
			Sl(3000);
			if (W1 || W2 || W3) {
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				if (p == x && q == y) {
					x = 3, y = 9;
					a[x][y] = 'H';
				}
				return 99;
			} else {
				return 2;
			}
		}
		if (P2s <= 0 && P1s <= 0) {
			printf ("都狗带了!\n");
			Sl(3000);
			if (W1 || W2 || W3) {
				a[x][y] = ' ';
				x = 3, y = 1;
				a[x][y] = 'H';
				a[p][q] = ' ';
				p = 4, q = 17;
				a[p][q] = 'R';
				if (p == x && q == y) {
					a[x][y] = ' ';
					x = 3, y = 9;
					a[x][y] = 'H';
				}
				return 99;
			} else {
				return 2;
			}
		}
	}
}

void win(int g) {
	if (g == 1) {
		printf("R赢了!\n");
		Sl(3000);
		system("pause");
	} else {
		printf("H赢了!\n");
		Sl(3000);
		system("pause");
	}
}

void rans(char cha) {
	int f = rand() % 2;
	a[sx][sy] = cha;
	sx = 35, sy = 35;
	switch (f) {
		case 0:
			sx = 5, sy = 1;
			break;
		case 1:
			sx = 1, sy = 18;
			break;
	}
	a[sx][sy] = 'S';
}

void rang(char cha) {
	int ff = rand() % 3;
	a[gx][gy] = cha;
	gx = 35, gy = 35;
	switch (ff) {
		case 0:
			gx = 2, gy = 15;
			break;
		case 1:
			gx = 2, gy = 8;
			break;
		case 2:
			gx = 4, gy = 10;
			break;
	}
	a[gx][gy] = 'N';
}

void ranf(char cha) {
	int fff = rand() % 3;
	a[fx][fy] = cha;
	fx = 35, fy = 35;
	switch (fff) {
		case 0:
			fx = 2, fy = 10;
			break;
		case 1:
			fx = 4, fy = 4;
			break;
		case 2:
			fx = 4, fy = 8;
			break;
	}
	a[fx][fy] = 'F';
}

void Start() {
	puts("欢迎来玩攻守战!!!");
	Sl(1000);
	puts("yuexingfei出品,必属精品!");
	Sl(1000);
	puts("请按任意键开始游戏...");
	getch();
	cl;
	puts ("Loading......");
	Sl(2000);
	cl;
	int o = 0;
	for (int i = 1; i <= 200; i++) {
		printf ("已加载%d个文件,进度%d", i, o);
		cout << "%\n";
		if (i % 2 == 0) {
			o++;
		}
		Sl(1);
		if (rand() % 15 == 9) {
			Sl(4);
		}
		cl;
	}
}

void SetConsoleWindowSize( SHORT width, SHORT height ) {
	HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
	SMALL_RECT wrt = { 0, 0, width - 1, height - 1 };
	SetConsoleWindowInfo( hStdOutput, TRUE, &wrt );
	COORD coord = { width, height };
	SetConsoleScreenBufferSize( hStdOutput, coord );
}

int main() {
	system("title 攻守战");
	SetFont(25);
	SetConsoleWindowSize(53, 25);
	srand(time(NULL));
	system("color 0a");
	Start();
	cl;
	printf ("规则:\n1.有时间限制(100s)\n2.攻方在规定时间内破坏守方的三个床就算赢\n3.守方要在规定时间内守住三个床,只要规定时间结束后还有床没有被攻方破坏就算赢\n");
	system("pause");
	cl;
	xuan();
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO CursorInfo;
	GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
	CursorInfo.bVisible = false; //隐藏控制台光标
	SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
	ttt = clock();
	out();
	ranf(' ');
	rang(' ');
	rans(' ');
	w(1) {
		if (GetAsyncKeyState('S')) {
			if (a[x + 1][y] != 'O') {
				a[x][y] = ' ';
				x++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('D')) {
			if (a[x][y + 1] != 'O') {
				a[x][y] = ' ';
				y++;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('A')) {
			if (a[x][y - 1] != 'O') {
				a[x][y] = ' ';
				y--;
				a[x][y] = 'H';
			}
		}
		if (GetAsyncKeyState('W')) {
			if (a[x - 1][y] != 'O') {
				a[x][y] = ' ';
				x--;
				a[x][y] = 'H';
			}
		}

		if (GetAsyncKeyState('K')) {
			if (a[p + 1][q] != 'O') {
				a[p][q] = ' ';
				p++;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('L')) {
			if (a[p][q + 1] != 'O') {
				a[p][q] = ' ';
				q++;
				a[p][q] = 'R';

			}
		}
		if (GetAsyncKeyState('J')) {
			if (a[p][q - 1] != 'O') {
				a[p][q] = ' ';
				q--;
				a[p][q] = 'R';
			}
		}
		if (GetAsyncKeyState('I')) {
			if (a[p - 1][q] != 'O') {
				a[p][q] = ' ';
				p--;
				a[p][q] = 'R';
			}
		}

		if (clock() - ttt >= 100000) {
			if (W1 || W2 || W3) {
				win(2);
			} else {
				win(1);
			}
			break;
		}

		if (x == p && y == q) {
			int jie = zhan();
			if (jie == 2) {
				win(2);
				break;
			}
		}

		if (x == n && y == m) {
			W1 = false;
			n = 48, m = 49;
		}
		if (x == c && y == b) {
			W2 = false;
			c = 48, b = 49;
		}
		if (x == f && y == j) {
			W3 = false;
			f = 48, j = 49;
		}

		if (p == n && q == m && W1) {
			a[n][m] = 'R';
			while (1) {
				if (!(p == n && q == m))
					a[n][m] = 'W';
				break;
			}
		} else {
			a[n][m] = 'W';
		}

		if (p == c && q == b && W2) {
			a[c][b] = 'R';
			while (1) {
				if (!(p == c && q == b))
					a[c][b] = 'W';
				break;
			}
		} else {
			a[c][b] = 'W';
		}

		if (p == f && q == j && W3) {
			a[f][j] = 'R';
			while (1) {
				if (!(p == f && q == j))
					a[f][j] = 'W';
				break;
			}
		} else {
			a[f][j] = 'W';
		}

		if (sx == x && sy == y) {
			P1.shengming += 5;
			Sleep(10);
			rans('H');
		}
		if (sx == p && sy == q) {
			P2.shengming += 5;
			Sleep(10);
			rans('R');
		}

		if (gx == x && gy == y) {
			P1.gongji += 5;
			rang('H');
		}
		if (gx == p && gy == q) {
			P2.gongji += 5;
			rang('R');
		}

		if (fx == x && fy == y) {
			P1.fangyu += 5;
			ranf('H');
		}
		if (fx == p && fy == q) {
			P2.fangyu += 5;
			ranf('R');
		}

		out();
	}
	return 0;
}

画图

turtle版

#include <turtle.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#define _cl system("cls")
#define _pa system("pause")
#define Get(x) GetAsyncKeyState(x)
#define inf 1e9

using namespace std;

typedef long long ll;
typedef string str;

inline void Sleep_write(const string &x, const int &y = 10) {
	for (int i = 0; i < (int)x.length(); i++) {
		putchar(x[i]);
		ege::api_sleep(y);
	}
}

inline void wait(const int &d = 100) {
	ege::api_sleep(d);
	getchar();
}

inline void welcome(void) {
	Sleep_write("画图turtle版\n");
	wait();
	Sleep_write("作者:Yuexingfei_qwq\n");
	wait();
	Sleep_write("版权归Yuexingfei_qwq所有,恶意搬运者将会受到惩罚\n");
	wait();
	Sleep_write("开发者联系方式(洛谷):https://luogu.com.cn/user/1125939,用户名Yuexingfei_qwq||https://luogu.com.cn/user/1423517,用户名Mengchen_Yxf2013_qwq(Yuexingfei_qwq小号)\n");
	wait();
	Sleep_write("操控turtle时请使用英文输入法\n");
	wait();
	Sleep_write("出现bug时,请按下P键解除\n");
	wait();
	Sleep_write("使用教程在代码和代码末尾里的注释中都有,请自行查看\n");
	wait();
	_pa;
	_cl;
}

inline char get(str s) {
	char ch[114514];
	int l = 0;
	for (auto i : s) {
		ch[++l] = i;
	}
	while (true) {
		str t;
		cin >> t;
		for (int i = 1; i <= l; i++) {
			if (t[0] == ch[i]) {
				return t[0];
			}
		}
		Sleep_write("Error:输入无效\n");
		ege::api_sleep(1000);
		_pa;
	}
}

inline void init(void) {
	char ch;
	Sleep_write("是否设置画板大小?(Y/N)\n");
	ch = tolower(get("YyNn"));
	int n, m;
	if (ch == 'y') {
		Sleep_write("请输入画板的长和宽\n");
		cin >> n >> m;
	} else {
		n = 800, m = 600;
	}
	_cl;

	Sleep_write("是否设置turtle初始坐标?(Y/N)\n");
	ch = tolower(get("YyNn"));
	int x = inf, y = -inf;
	if (ch == 'y') {
		Sleep_write("请输入turtle初始坐标\n");
		cin >> x >> y;
	}
	_cl;

	Sleep_write("是否设置画布标题?(Y/N)\n");
	ch = tolower(get("YyNn"));
	char s[1919810];
	int f = 0;
	if (ch == 'y') {
		f = 1;
		Sleep_write("请输入画布标题\n");
		cin >> s;
	}
	_cl;
	initWorld(n, m);
	if (x != inf && y != -inf) {
		setOrigin(x, y);
	}
	if (f) {
		setCaption(s);
	}
}

int fo = 10, an = 30, ps = 1;//fo:步数 an:角度 ps:画笔粗细
int panc = 0, bakc = 15;//笔颜色和背景颜色
int isjisu = 0, sudu = 100;//1急速 0非

inline void SetPen(void) {
	if (panc == 0) {
		setPenColor(ege::BLACK);
	}
	if (panc == 1) {
		setPenColor(ege::BLUE);
	}
	if (panc == 2) {
		setPenColor(ege::GREEN);
	}
	if (panc == 3) {
		setPenColor(ege::CYAN);
	}
	if (panc == 4) {
		setPenColor(ege::RED);
	}
	if (panc == 5) {
		setPenColor(ege::MAGENTA);
	}
	if (panc == 6) {
		setPenColor(ege::BROWN);
	}
	if (panc == 7) {
		setPenColor(ege::LIGHTGRAY);
	}
	if (panc == 8) {
		setPenColor(ege::DARKGRAY);
	}
	if (panc == 9) {
		setPenColor(ege::LIGHTBLUE);
	}
	if (panc == 10) {
		setPenColor(ege::LIGHTGREEN);
	}
	if (panc == 11) {
		setPenColor(ege::LIGHTCYAN);
	}
	if (panc == 12) {
		setPenColor(ege::LIGHTRED);
	}
	if (panc == 13) {
		setPenColor(ege::LIGHTMAGENTA);
	}
	if (panc == 14) {
		setPenColor(ege::YELLOW);
	}
	if (panc == 15) {
		setPenColor(ege::WHITE);
	}
}

inline void SetBack(void) {
	if (bakc == 0) {
		setBackgroundColor(ege::BLACK);
	}
	if (bakc == 1) {
		setBackgroundColor(ege::BLUE);
	}
	if (bakc == 2) {
		setBackgroundColor(ege::GREEN);
	}
	if (bakc == 3) {
		setBackgroundColor(ege::CYAN);
	}
	if (bakc == 4) {
		setBackgroundColor(ege::RED);
	}
	if (bakc == 5) {
		setBackgroundColor(ege::MAGENTA);
	}
	if (bakc == 6) {
		setBackgroundColor(ege::BROWN);
	}
	if (bakc == 7) {
		setBackgroundColor(ege::LIGHTGRAY);
	}
	if (bakc == 8) {
		setBackgroundColor(ege::DARKGRAY);
	}
	if (bakc == 9) {
		setBackgroundColor(ege::LIGHTBLUE);
	}
	if (bakc == 10) {
		setBackgroundColor(ege::LIGHTGREEN);
	}
	if (bakc == 11) {
		setBackgroundColor(ege::LIGHTCYAN);
	}
	if (bakc == 12) {
		setBackgroundColor(ege::LIGHTRED);
	}
	if (bakc == 13) {
		setBackgroundColor(ege::LIGHTMAGENTA);
	}
	if (bakc == 14) {
		setBackgroundColor(ege::YELLOW);
	}
	if (bakc == 15) {
		setBackgroundColor(ege::WHITE);
	}
}

signed main(void) {
	welcome();
	init();
	while (ege::is_run()) {
		if (Get('P')) {//debug
			setImmediate(1);
			lt(360);
			setImmediate(0);
			setSpeed(sudu);
		}
		if (Get('W')) {//前进
			fd(fo);
		}
		if (Get('S')) {//后退
			bk(fo);
		}
		if (Get('A')) {//左转
			lt(an);
		}
		if (Get('D')) {//右转
			rt(an);
		}
		if (Get('Q')) {//落笔
			pd();
		}
		if (Get('E')) {//抬笔
			pu();
		}
		if (Get('R')) {//重置
			clear();
		}
		if (Get('F')) {//回到起始点
			home();
		}
		if (Get('Z')) {//画笔粗细+1
			ps += 1;
			setPenSize(ps);
		}
		if (Get('X')) {//画笔粗细-1
			ps -= 1;
			ps = std::max(1, ps);
			setPenSize(ps);
		}
		if (Get('T')) {//速度+1
			sudu += 1;
			setSpeed(sudu);
		}
		if (Get('G')) {//速度-1
			sudu -= 1;
			sudu = std::max(1, sudu);
			setSpeed(sudu);
		}
		if (Get('V')) {//隐藏
			hide();
		}
		if (Get('Y')) {//显示
			show();
		}
		if (Get('U')) {//旋转角度+1
			an += 1;
			an = std::min(an, 360);
		}
		if (Get('J')) {//旋转角度-1
			an -= 1;
			an = std::max(an, 0);
		}
		if (Get('N')) {//步数+1
			fo += 10;
		}
		if (Get('M')) {//步数-1
			fo -= 10;
			fo = std::max(fo, 1);
		}
		if (Get('C')) {//将画笔颜色改为下一个
			(panc += 1) %= 16;
			SetPen();
		}
		if (Get('H')) {//将背景颜色改为下一个
			(bakc += 1) %= 16;
			SetBack();
		}
		if (Get('B')) {//设置是否急速
			isjisu = 1 - isjisu;
			if (isjisu) {
				setImmediate(isjisu);
			} else {
				setSpeed(sudu);
			}
		}
	}
	pause();
	return 0;
}
/*
操作指令
initWorld(int width, int height, double scale = 1.0):生成画布,设置画布大小(第三个参数为放大倍数,前两个参数均会乘上它;没填时默认为1.0)
setOrigin(int x, int y):设置乌龟起始点
setCaption(const char* title):改变画布标题(参数为一个string,需用双引号,而不是char)

W:fd(double step):前进step步
S:bk(double step):后退step步
A:lt(double step):左转step°
D:rt(double step):右转step°
Q:pd():落笔
E:pu():抬笔
R:clear():重置
F:home():乌龟移到起始点
Z+X-:setPenSize(int size):设置画笔粗细(默认值为1)(在参数较大时画出来的斜线可能会出现不均匀的情况) √
C:setPenColor(ege::color_t color):改变画笔颜色
	ege::BLACK:黑色(默认颜色)
	ege::BLUE:蓝色
	ege::GREEN:绿色
	ege::CYAN:青色
	ege::RED:红色
	ege::MAGENTA:紫色
	ege::BROWN:棕色
	ege::YELLOW:黄色
	ege::WHITE:白色
	ege::DARKGRAY:深灰色
	ege::LIGHTGRAY:浅灰色
	ege::LIGHTBLUE:浅蓝色
	ege::LIGHTGREEN:浅绿色
	ege::LIGHTCYAN:浅青色(类似天蓝色或淡蓝色)
	ege::LIGHTRED:淡红色
	ege::LIGHTMAGENTA:淡紫色(类似粉色)
	注意事项:传参时参数应当为"ege::"+对应颜色的英文,颜色英文需全用大写
T+G-:setSpeed(int speed):调速度(默认100)
V:hide():隐藏乌龟
Y:show():显示乌龟
H:setBackgroundColor(ege::color_t color):改变背景颜色(详见setPenColor函数)
B:setImmediate(int isImmediate):参数为0时普通速度,否则为超快速度
U+J-:调节乌龟旋转角度(默认30°)
N+M-:调节乌龟走路步数(默认10步)

pause():等待直到画布被关闭
(由于输入输出、兼容性等问题,仅使用turtle.h中的部分操作指令)
*/

字符版

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <conio.h>
#include <string>
#include <string.h>
#include <math.h>

using namespace std;

int x = 1, y = 1;

int pen = 1;
string s[102][102];
string color = "white";
string ch = "@";
string dfs_color = " ", dfs_ch = " ";

bool f = 0, b[102][102], yd = 0;

string a[102][102];

int l, h;

inline void color1(string g) {
	if (g == "white") {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	} else {
		if (g == "red") {
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
		} else {
			if (g == "yellow") {
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
			} else {
				if (g == "green") {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
				} else {
					if (g == "indego") {
						SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN);
					} else {
						if (g == "pink") {
							SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED);
						} else {
							if (g == "blue") {
								SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
							} else {
								SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
							}
						}
					}
				}
			}
		}
	}
}

inline void out() {
	system("cls");
	for (int i = 0; i < l; i++) {
		for (int j = 0; j < h; j++) {
			if (a[i][j] == "+") {
				if (f == 1) {
					color1(dfs_color);
					printf ("%s", dfs_ch.c_str());
				} else {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
					printf ("+");
				}
			} else {
				color1(s[i][j]);
				printf ("%s", a[i][j].c_str());
			}
		}
		printf ("\n");
	}
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("X:%d  Y:%d\n", x, y);
}

inline void SetConsoleWindowSize(SHORT width, SHORT height) {
	HANDLE hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
	SMALL_RECT wrt = {0, 0, width - 1, height - 1};
	SetConsoleWindowInfo(hStdOutput, TRUE, &wrt);
	COORD coord = {width, height};
	SetConsoleScreenBufferSize(hStdOutput, coord);
}

inline void q() {
	for (int i = 1; i < l - 1; i++) {
		for (int j = 1; j < h - 1; j++) {
			a[i][j] = " ";
		}
	}
	a[x][y] = "+";
}

inline void init() {
	for (int i = 0; i < l; i++) {
		for (int j = 0; j < h; j++) {
			b[i][j] = 0;
		}
	}
}

inline void dfs(const int &x, const int &y) {
	b[x][y] = 1;
	s[x][y] = color, a[x][y] = ch;
	if (a[x - 1][y] == dfs_ch && s[x - 1][y] == dfs_color && !b[x - 1][y]) {
		dfs(x - 1, y);
	}
	if (a[x + 1][y] == dfs_ch && s[x + 1][y] == dfs_color && !b[x + 1][y]) {
		dfs(x + 1, y);
	}
	if (a[x][y - 1] == dfs_ch && s[x][y - 1] == dfs_color && !b[x][y - 1]) {
		dfs(x, y - 1);
	}
	if (a[x][y + 1] == dfs_ch && s[x][y + 1] == dfs_color && !b[x][y + 1]) {
		dfs(x, y + 1);
	}
}

int main() {
	cout << "教程在代码末尾的注释里\n";
	system("pause");
	system("cls");
	h = 32, l = 12;
	for (int i = 0; i < l; i++) {
		for (int j = 0; j < h; j++) {
			if (i == 0 || j == 0 || i == l - 1 || j == h - 1) {
				a[i][j] = "O";
			} else {
				a[i][j] = " ";
			}
			s[i][j] = "white";
		}
	}
	a[x][y] = "+";
	CONSOLE_CURSOR_INFO cursorInfo;
	GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
	cursorInfo.bVisible = FALSE;
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
	SetConsoleWindowSize(32, 14);
	system("title 画图");
	while (1) {
		out();
		if (GetAsyncKeyState('S')) {
			if (a[x + 1][y] != "O" && !f) {
				if (!yd) {
					if (pen) {
						a[x][y] = ch;
					} else {
						a[x][y] = " ";
					}
					s[x][y] = color;
				}
				if (yd) {
					a[x][y] = dfs_ch;
					s[x][y] = dfs_color;
				}
				dfs_ch = a[x + 1][y];
				dfs_color = s[x + 1][y];
				x++;
				a[x][y] = "+";
			}
		}
		if (GetAsyncKeyState('D')) {
			if (a[x][y + 1] != "O" && !f) {
				if (!yd) {
					if (pen) {
						a[x][y] = ch;
					} else {
						a[x][y] = " ";
					}
					s[x][y] = color;
				}
				if (yd) {
					a[x][y] = dfs_ch;
					s[x][y] = dfs_color;
				}
				dfs_ch = a[x][y + 1];
				dfs_color = s[x][y + 1];
				y++;
				a[x][y] = "+";
			}
		}
		if (GetAsyncKeyState('A')) {
			if (a[x][y - 1] != "O" && !f) {
				if (!yd) {
					if (pen) {
						a[x][y] = ch;
					} else {
						a[x][y] = " ";
					}
					s[x][y] = color;
				}
				if (yd) {
					a[x][y] = dfs_ch;
					s[x][y] = dfs_color;
				}
				dfs_ch = a[x][y - 1];
				dfs_color = s[x][y - 1];
				y--;
				a[x][y] = "+";
			}
		}
		if (GetAsyncKeyState('W')) {
			if (a[x - 1][y] != "O" && !f) {
				if (!yd) {
					if (pen) {
						a[x][y] = ch;
					} else {
						a[x][y] = " ";
					}
					s[x][y] = color;
				}
				if (yd) {
					a[x][y] = dfs_ch;
					s[x][y] = dfs_color;
				}
				dfs_ch = a[x - 1][y];
				dfs_color = s[x - 1][y];
				x--;
				a[x][y] = "+";
			}
		}
		if (GetAsyncKeyState('1')) {
			pen = 1;
		}
		if (GetAsyncKeyState('2')) {
			pen = 0;
		}
		if (GetAsyncKeyState('3')) {
			color = "white";
		}
		if (GetAsyncKeyState('4')) {
			color = "red";
		}
		if (GetAsyncKeyState('5')) {
			color = "yellow";
		}
		if (GetAsyncKeyState('6')) {
			color = "green";
		}
		if (GetAsyncKeyState('7')) {
			color = "indego";
		}
		if (GetAsyncKeyState('8')) {
			color = "pink";
		}
		if (GetAsyncKeyState('9')) {
			color = "blue";
		}
		if (GetAsyncKeyState('0')) {
			color = "grey";
		}
		if (GetAsyncKeyState('Y')) {
			ch = "@";
		}
		if (GetAsyncKeyState('U')) {
			ch = "#";
		}
		if (GetAsyncKeyState('I')) {
			ch = "%";
		}
		if (GetAsyncKeyState('O')) {
			ch = "^";
		}
		if (GetAsyncKeyState('P')) {
			ch = "&";
		}
		if (GetAsyncKeyState('H')) {
			ch = "*";
		}
		if (GetAsyncKeyState('J')) {
			ch = "/";
		}
		if (GetAsyncKeyState('K')) {
			ch = "-";
		}
		if (GetAsyncKeyState('L')) {
			ch = ".";
		}
		if (GetAsyncKeyState('M')) {
			q();
		}
		if (GetAsyncKeyState('N')) {
			f = 1;
		}
		if (GetAsyncKeyState('B')) {
			f = 0;
		}
		if (GetAsyncKeyState('Z')) {
			for (int i = 0; i < l; i++) {
				for (int j = 0; j < h; j++) {
					if (a[i][j] != "O") {
						s[i][j] = color, a[i][j] = ch;
					}
				}
			}
			dfs_ch = ch;
			dfs_color = color;
			a[x][y] = "+";
		}
		if (GetAsyncKeyState('X')) {
			init();
			dfs(x, y);
			dfs_ch = ch;
			dfs_color = color;
			a[x][y] = "+";
		}
		if (GetAsyncKeyState('Q')) {
			yd = 1;
		}
		if (GetAsyncKeyState('E')) {
			yd = 0;
		}
	}
	return 0;
}
/*
操作方法如下:(按下键盘上的按钮操作;O代表边缘,画笔移动时碰到O就不能继续移动了;+代表鼠标)

w:鼠标向上移动

a:鼠标向左移动

s:鼠标向下移动

d:鼠标向右移动

1:鼠标设成画笔

2:鼠标设成橡皮

3:画笔颜色设为白色

4:画笔颜色设为红色

5:画笔颜色设为黄色

6:画笔颜色设为绿色

7:画笔颜色设为靛青

8:画笔颜色设为粉色

9:画笔颜色设为蓝色

0:画笔颜色设为灰色

y:画出图案设为@

u:画出图案设为#

i:画出图案设为%

o:画出图案设为^

p:画出图案设为&

h:画出图案设为*

j:画出图案设为/

k:画出图案设为-

l:画出图案设为.

m:清屏

n:开启观察者模式(见文末)

b:关闭观察者模式(见文末)

q:抬笔

e:落笔


特殊规则:

1.开始时,鼠标默认为画笔,画出图案为@

2.在画笔模式下,鼠标每移动一次,它原所在的格子为画出的图案

3.在橡皮模式下,鼠标每移动一次,它原所在的格子为空格

观察者模式:在该模式下,鼠标不会被显示,也不能移动,但可以改变颜色、图案、鼠标模式等。
*/

乌龟对对碰

其实下面两个的画面都一样,只不过是一个要用 "game_1.h"(在文章开头的“ ‘.h’文件(自编头文件) ” 里) 一个不用。

复杂版(需使用 "game_1.h"):

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <winuser.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 GAME_1

using namespace std;

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

#ifndef GAME_1

#define _cl system("cls")
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _ge getch()
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a

inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
	for (auto i : s) {
		if (t == "cin") {
			cout << i;
		} else {
			putchar(i);
		}
		_sl(y);
	}
}

inline void setcolor(int color) {
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hConsole, color);
}

#else
#include "game_1.h"
#endif

char s[5][5];
int bag = 9, prebag, cnt;
str c = "RBCOYGPpWS";
std::vector<std::bitset<5>> iswish(5), isthree(5);
char w;

struct Info {
	inline bool reset() {
		F(i, 0, 4, 1) {
			isthree[i].reset();
		}
		r0;
	}
	inline bool set(int x, char op, bool f) {
		if (op == 'x' || op == 'r') {
			F(i, 1, 3, 1) {
				isthree[x][i] = f;
			}
		}
		if (op == 'y' || op == 'c') {
			F(i, 1, 3, 1) {
				isthree[i][x] = f;
			}
		}
		if (op == 'd' || op == 'l') {
			if (x == 1) {
				F(i, 1, 3, 1) {
					isthree[i][i] = f;
				}
			} else {
				F(i, 1, 3, 1) {
					isthree[i][3 - i + 1] = f;
				}
			}
		}
		r0;
	}
	inline bool judge(int x, char op, bool f) {
		if (op == 'x' || op == 'r') {
			F(i, 1, 3, 1) {
				if (isthree[x][i] != f) {
					r0;
				}
			}
			return 1;
		}
		if (op == 'y' || op == 'c') {
			F(i, 1, 3, 1) {
				if (isthree[i][x] != f) {
					r0;
				}
			}
			return 1;
		}
		if (op == 'd' || op == 'l') {
			if (x == 1) {
				F(i, 1, 3, 1) {
					if (isthree[i][i] != f) {
						r0;
					}
				}
				return 1;
			} else {
				F(i, 1, 3, 1) {
					if (isthree[i][3 - i + 1] != f) {
						r0;
					}
				}
				return 1;
			}
		}
		r0;
	}
} op;

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;
}

inline bool out(void) {
	_cl;
	cout << "许愿+1    对碰+1    三连+5    清台+5" << el;
	color('R', "R:红色 ");
	color('W', "W:西瓜红 ");
	color('O', "O:橙色 ");
	color('Y', "Y:黄色 ");
	color('G', "G:绿色 ");
	color('C', "C:青色 ");
	color('S', "S:天蓝 ");
	color('B', "B:蓝色 ");
	color('P', "P:紫色 ");
	color('p', "p:粉色\n");
	cout << "-------------" << el;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			cout << "| ";
			color(s[i][j]);
			cout << sp;
		}
		cout << "|" << el;
		cout << "-------------" << el;
	}
	cout << "已收集乌龟数:" << cnt << el;
	cout << "剩余可拆袋数:" << bag << el;
	cout << "幸运色:";
	color(w);
	cout << el;
	r0;
}

std::unordered_map<char, int> tot;

inline bool check(void) {
	if (!bag) {
		r0;
	}
	std::unordered_set<char> st;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			if (!isdigit(s[i][j])) {
				st.insert(s[i][j]);
			}
		}
	}
	return !(st.size() == 9 && st.find(w) == st.end());
}

inline bool check2(void) {
	std::unordered_set<char> st;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			if (!isdigit(s[i][j])) {
				st.insert(s[i][j]);
			}
		}
	}
	return !(st.size() == 9 && st.find(w) == st.end()) && prebag <= 2;
}

inline char ran(void) {
	int r = _ra(0, 9);
	return c[r];
}

inline bool isequ(char a, char b, char c) {
	return a == b && b == c;
}

inline char mygetchar(void) {
	str s;
	cin >> s;
	return s[0];
}

std::vector<std::pair<int, int>> v;

inline bool start(void) {
	Sleep_write("乌龟对对碰\n");
	_sl(200);
	Sleep_write("作者:");
	color('C', "Yuexingfei_qwq\n", 1);
	Sleep_write("不了解的可以看这:https://baike.baidu.com/item/乌龟对对碰\n");
	_sl(200);
	while (1) {
		Sleep_write("是否启动网站“https://baike.baidu.com/item/乌龟对对碰”?Y/N\n");
		str s;
		cin >> s;
		if (s == "Y" || s == "y") {
			system("start https://baike.baidu.com/item/乌龟对对碰");
			break;
		} else {
			if (s == "N" || s == "n") {
				break;
			} else {
				Sleep_write("无效输入\n");
				_sl(900);
				_cl;
			}
		}
	}
	_pa;
	_cl;
	Sleep_write("在这里,你初始有9个可拆袋,当游戏无法继续进行后,你能得到你现在得到的总乌龟数\n");
	_sl(200);
	_pa;
	r0;
}

signed main(void) {
	_sr;
	system("title 乌龟对对碰");
#ifndef DEBUG
	start();
#endif
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			s[i][j] = ((i - 1) * 3 + j) + '0';
		}
	}
	while (1) {
		_cl;
		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");
		w = mygetchar();
		if (c.find(w) == string::npos) {
			Sleep_write("输入无效\n");
			_sl(1500);
		} else {
			break;
		}
	}
	while (check()) {
		prebag = bag;
		out();
		Sleep_write("按下任意键拆袋\n");
		_ge;
		bool f = 1;
		F(i, 1, 3, 1) {
			F(j, 1, 3, 1) {
				if (bag == 0) {
					f = 0;
					break;
				}
				if (isdigit(s[i][j])) {
					bag--;
					if (check2()) {
						int now = rand() % 3;
						if (now == 1) {
							s[i][j] = ran();
						} else {
							if (!now) {
								s[i][j] = w;
							} else {
								bool flag = 0;
								F(k, 0, 9, 1) {
									if (tot[::c[k]] == 1) {
										s[i][j] = ::c[k];
										flag = 1;
									}
								}
								if (!flag) {
									s[i][j] = ran();
								}
							}
						}
					} else {
						s[i][j] = ran();
					}
					tot[s[i][j]]++;
					iswish[i][j] = 0;
					out();
					_sl(500);
				}
			}
			if (!f) {
				break;
			}
		}
		out();
		//优先级:许愿 > 三连 > 对碰 > 清台
		int cnt = 0;
		F(i, 1, 3, 1) {
			F(j, 1, 3, 1) {
				if (!iswish[i][j] && s[i][j] == w) {
					cnt++;
					iswish[i][j] = 1;
				}
			}
		}
		if (cnt) {
			Sleep_write("许愿+");
			cout << cnt << el;
			_sl(1500);
			bag += cnt;
			out();
			_sl(500);
		}
		cnt = 0;
		v.clear();
		op.reset();
		if (isequ(s[1][1], s[1][2], s[1][3]) && op.judge(1, 'x', 0)) {
			cnt++;
			op.set(1, 'x', 1);
		}
		if (isequ(s[2][1], s[2][2], s[2][3]) && op.judge(2, 'x', 0)) {
			cnt++;
			op.set(2, 'x', 1);
		}
		if (isequ(s[3][1], s[3][2], s[3][3]) && op.judge(3, 'x', 0)) {
			cnt++;
			op.set(3, 'x', 1);
		}
		//x
		if (isequ(s[1][1], s[2][1], s[3][1]) && op.judge(1, 'y', 0)) {
			cnt++;
			op.set(1, 'y', 1);
		}
		if (isequ(s[1][2], s[2][2], s[3][2]) && op.judge(2, 'y', 0)) {
			cnt++;
			op.set(2, 'y', 1);
		}
		if (isequ(s[1][3], s[2][3], s[3][3]) && op.judge(3, 'y', 0)) {
			cnt++;
			op.set(3, 'y', 1);
		}
		//y
		if (isequ(s[1][1], s[2][2], s[3][3]) && op.judge(1, 'l', 0)) {
			cnt++;
			op.set(1, 'd', 1);
		}
		if (isequ(s[1][3], s[2][2], s[3][1]) && op.judge(2, 'l', 0)) {
			cnt++;
			op.set(2, 'd', 1);
		}
		//l
		if (cnt) {
			Sleep_write("三连+");
			cout << cnt << el;
			::cnt += cnt * 3;
			bag += cnt * 5;
			_sl(1500);
			F(i, 1, 3, 1) {
				F(j, 1, 3, 1) {
					if (isthree[i][j]) {
						tot[s[i][j]]--;
						s[i][j] = (i - 1) * 3 + j + '0';
					}
				}
			}
			out();
			_sl(500);
		}
		cnt = 0;
		F(k, 0, 9, 1) {
			while (tot[::c[k]] > 1) {
				cnt++;
				tot[::c[k]] -= 2;
				int now = 0;
				F(i, 1, 3, 1) {
					F(j, 1, 3, 1) {
						if (s[i][j] == ::c[k]) {
							now++;
							s[i][j] = (i - 1) * 3 + j + '0';
							if (now >= 2) {
								break;
							}
						}
					}
					if (now >= 2) {
						break;
					}
				}
			}
		}
		if (cnt) {
			Sleep_write("对碰+");
			cout << cnt << el;
			bag += cnt;
			::cnt += cnt * 2;
			_sl(1500);
			out();
			_sl(500);
		}
		cnt = 0;
		F(i, 0, 9, 1) {
			cnt += tot[c[i]];
		}
		if (!cnt) {
			Sleep_write("全场清台+1\n");
			bag += 5;
			_sl(1500);
			out();
			_sl(500);
		}
	}
	Sleep_write("无袋可拆!\n");
	_sl(1500);
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			s[i][j] = ((i - 1) * 3 + j) + '0';
		}
	}
	F(i, 0, 9, 1) {
		cnt += tot[c[i]];
	}
	out();
	Sleep_write("你收集了");
	cout << cnt;
	Sleep_write("个乌龟!\n");
	_sl(1000);
	_pa;
	_cl;
	system("ipconfig");
	_sl(500);
	MessageBoxA(0, "已发货~", "获取到你的地址!", 0);
	r0;
}
/*
-------------
| 1 | 2 | 3 |
-------------
| 4 | 5 | 6 |
-------------
| 7 | 8 | 9 |
-------------

red:4 R
orange:6 O
yellow:14 Y
green:10 G
cyan:11 C
blue:1 B
purple:5 P
pink:13 p
watermalon:12 W
sky:3 S
*/

纯享版(无需其他文件):

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
#include <winuser.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 GAME_1

using namespace std;

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

#ifndef GAME_1

#define _cl system("cls")
#define _pa system("pause")
#define _sl(x) Sleep(x)
#define _ge getch()
#define _sr srand(time(NULL))
#define _ra(a, b) (rand() % (b - a + 1)) + a

inline void Sleep_write(const string &s, const int &y = 10, const string &t = "cout") {
	for (auto i : s) {
		if (t == "cin") {
			cout << i;
		} else {
			putchar(i);
		}
		_sl(y);
	}
}

inline void setcolor(int color) {
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hConsole, color);
}

#else
#include "game_1.h"
#endif

char s[5][5];
int bag = 9, prebag, cnt;
str c = "RBCOYGPpWS";
std::vector<std::bitset<5>> iswish(5), isthree(5);
char w;

struct Info {
	inline bool reset() {
		F(i, 0, 4, 1) {
			isthree[i].reset();
		}
		r0;
	}
	inline bool set(int x, char op, bool f) {
		if (op == 'x' || op == 'r') {
			F(i, 1, 3, 1) {
				isthree[x][i] = f;
			}
		}
		if (op == 'y' || op == 'c') {
			F(i, 1, 3, 1) {
				isthree[i][x] = f;
			}
		}
		if (op == 'd' || op == 'l') {
			if (x == 1) {
				F(i, 1, 3, 1) {
					isthree[i][i] = f;
				}
			} else {
				F(i, 1, 3, 1) {
					isthree[i][3 - i + 1] = f;
				}
			}
		}
		r0;
	}
	inline bool judge(int x, char op, bool f) {
		if (op == 'x' || op == 'r') {
			F(i, 1, 3, 1) {
				if (isthree[x][i] != f) {
					r0;
				}
			}
			return 1;
		}
		if (op == 'y' || op == 'c') {
			F(i, 1, 3, 1) {
				if (isthree[i][x] != f) {
					r0;
				}
			}
			return 1;
		}
		if (op == 'd' || op == 'l') {
			if (x == 1) {
				F(i, 1, 3, 1) {
					if (isthree[i][i] != f) {
						r0;
					}
				}
				return 1;
			} else {
				F(i, 1, 3, 1) {
					if (isthree[i][3 - i + 1] != f) {
						r0;
					}
				}
				return 1;
			}
		}
		r0;
	}
} op;

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;
}

inline bool out(void) {
	_cl;
	cout << "许愿+1    对碰+1    三连+5    清台+5" << el;
	color('R', "R:红色 ");
	color('W', "W:西瓜红 ");
	color('O', "O:橙色 ");
	color('Y', "Y:黄色 ");
	color('G', "G:绿色 ");
	color('C', "C:青色 ");
	color('S', "S:天蓝 ");
	color('B', "B:蓝色 ");
	color('P', "P:紫色 ");
	color('p', "p:粉色\n");
	cout << "-------------" << el;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			cout << "| ";
			color(s[i][j]);
			cout << sp;
		}
		cout << "|" << el;
		cout << "-------------" << el;
	}
	cout << "已收集乌龟数:" << cnt << el;
	cout << "剩余可拆袋数:" << bag << el;
	cout << "幸运色:";
	color(w);
	cout << el;
	r0;
}

std::unordered_map<char, int> tot;

inline bool check(void) {
	if (!bag) {
		r0;
	}
	std::unordered_set<char> st;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			if (!isdigit(s[i][j])) {
				st.insert(s[i][j]);
			}
		}
	}
	return !(st.size() == 9 && st.find(w) == st.end());
}

inline bool check2(void) {
	std::unordered_set<char> st;
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			if (!isdigit(s[i][j])) {
				st.insert(s[i][j]);
			}
		}
	}
	return !(st.size() == 9 && st.find(w) == st.end()) && prebag <= 2;
}

inline char ran(void) {
	int r = _ra(0, 9);
	return c[r];
}

inline bool isequ(char a, char b, char c) {
	return a == b && b == c;
}

inline char mygetchar(void) {
	str s;
	cin >> s;
	return s[0];
}

std::vector<std::pair<int, int>> v;

inline bool start(void) {
	Sleep_write("乌龟对对碰\n");
	_sl(200);
	Sleep_write("作者:");
	color('C', "Yuexingfei_qwq\n", 1);
	Sleep_write("不了解的可以看这:https://baike.baidu.com/item/乌龟对对碰\n");
	_sl(200);
	while (1) {
		Sleep_write("是否启动网站“https://baike.baidu.com/item/乌龟对对碰”?Y/N\n");
		str s;
		cin >> s;
		if (s == "Y" || s == "y") {
			system("start https://baike.baidu.com/item/乌龟对对碰");
			break;
		} else {
			if (s == "N" || s == "n") {
				break;
			} else {
				Sleep_write("无效输入\n");
				_sl(900);
				_cl;
			}
		}
	}
	_pa;
	_cl;
	Sleep_write("在这里,你初始有9个可拆袋,当游戏无法继续进行后,你能得到你现在得到的总乌龟数\n");
	_sl(200);
	_pa;
	r0;
}

signed main(void) {
	_sr;
	system("title 乌龟对对碰");
#ifndef DEBUG
	start();
#endif
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			s[i][j] = ((i - 1) * 3 + j) + '0';
		}
	}
	while (1) {
		_cl;
		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");
		w = mygetchar();
		if (c.find(w) == string::npos) {
			Sleep_write("输入无效\n");
			_sl(1500);
		} else {
			break;
		}
	}
	while (check()) {
		prebag = bag;
		out();
		Sleep_write("按下任意键拆袋\n");
		_ge;
		bool f = 1;
		F(i, 1, 3, 1) {
			F(j, 1, 3, 1) {
				if (bag == 0) {
					f = 0;
					break;
				}
				if (isdigit(s[i][j])) {
					bag--;
					if (check2()) {
						int now = rand() % 3;
						if (now == 1) {
							s[i][j] = ran();
						} else {
							if (!now) {
								s[i][j] = w;
							} else {
								bool flag = 0;
								F(k, 0, 9, 1) {
									if (tot[::c[k]] == 1) {
										s[i][j] = ::c[k];
										flag = 1;
									}
								}
								if (!flag) {
									s[i][j] = ran();
								}
							}
						}
					} else {
						s[i][j] = ran();
					}
					tot[s[i][j]]++;
					iswish[i][j] = 0;
					out();
					_sl(500);
				}
			}
			if (!f) {
				break;
			}
		}
		out();
		//优先级:许愿 > 三连 > 对碰 > 清台
		int cnt = 0;
		F(i, 1, 3, 1) {
			F(j, 1, 3, 1) {
				if (!iswish[i][j] && s[i][j] == w) {
					cnt++;
					iswish[i][j] = 1;
				}
			}
		}
		if (cnt) {
			Sleep_write("许愿+");
			cout << cnt << el;
			_sl(1500);
			bag += cnt;
			out();
			_sl(500);
		}
		cnt = 0;
		v.clear();
		op.reset();
		if (isequ(s[1][1], s[1][2], s[1][3]) && op.judge(1, 'x', 0)) {
			cnt++;
			op.set(1, 'x', 1);
		}
		if (isequ(s[2][1], s[2][2], s[2][3]) && op.judge(2, 'x', 0)) {
			cnt++;
			op.set(2, 'x', 1);
		}
		if (isequ(s[3][1], s[3][2], s[3][3]) && op.judge(3, 'x', 0)) {
			cnt++;
			op.set(3, 'x', 1);
		}
		//x
		if (isequ(s[1][1], s[2][1], s[3][1]) && op.judge(1, 'y', 0)) {
			cnt++;
			op.set(1, 'y', 1);
		}
		if (isequ(s[1][2], s[2][2], s[3][2]) && op.judge(2, 'y', 0)) {
			cnt++;
			op.set(2, 'y', 1);
		}
		if (isequ(s[1][3], s[2][3], s[3][3]) && op.judge(3, 'y', 0)) {
			cnt++;
			op.set(3, 'y', 1);
		}
		//y
		if (isequ(s[1][1], s[2][2], s[3][3]) && op.judge(1, 'l', 0)) {
			cnt++;
			op.set(1, 'd', 1);
		}
		if (isequ(s[1][3], s[2][2], s[3][1]) && op.judge(2, 'l', 0)) {
			cnt++;
			op.set(2, 'd', 1);
		}
		//l
		if (cnt) {
			Sleep_write("三连+");
			cout << cnt << el;
			::cnt += cnt * 3;
			bag += cnt * 5;
			_sl(1500);
			F(i, 1, 3, 1) {
				F(j, 1, 3, 1) {
					if (isthree[i][j]) {
						tot[s[i][j]]--;
						s[i][j] = (i - 1) * 3 + j + '0';
					}
				}
			}
			out();
			_sl(500);
		}
		cnt = 0;
		F(k, 0, 9, 1) {
			while (tot[::c[k]] > 1) {
				cnt++;
				tot[::c[k]] -= 2;
				int now = 0;
				F(i, 1, 3, 1) {
					F(j, 1, 3, 1) {
						if (s[i][j] == ::c[k]) {
							now++;
							s[i][j] = (i - 1) * 3 + j + '0';
							if (now >= 2) {
								break;
							}
						}
					}
					if (now >= 2) {
						break;
					}
				}
			}
		}
		if (cnt) {
			Sleep_write("对碰+");
			cout << cnt << el;
			bag += cnt;
			::cnt += cnt * 2;
			_sl(1500);
			out();
			_sl(500);
		}
		cnt = 0;
		F(i, 0, 9, 1) {
			cnt += tot[c[i]];
		}
		if (!cnt) {
			Sleep_write("全场清台+1\n");
			bag += 5;
			_sl(1500);
			out();
			_sl(500);
		}
	}
	Sleep_write("无袋可拆!\n");
	_sl(1500);
	F(i, 1, 3, 1) {
		F(j, 1, 3, 1) {
			s[i][j] = ((i - 1) * 3 + j) + '0';
		}
	}
	F(i, 0, 9, 1) {
		cnt += tot[c[i]];
	}
	out();
	Sleep_write("你收集了");
	cout << cnt;
	Sleep_write("个乌龟!\n");
	_sl(1000);
	_pa;
	_cl;
	system("ipconfig");
	_sl(500);
	MessageBoxA(0, "已发货~", "获取到你的地址!", 0);
	r0;
}
/*
-------------
| 1 | 2 | 3 |
-------------
| 4 | 5 | 6 |
-------------
| 7 | 8 | 9 |
-------------

red:4 R
orange:6 O
yellow:14 Y
green:10 G
cyan:11 C
blue:1 B
purple:5 P
pink:13 p
watermalon:12 W
sky:3 S
*/

绿黄斗

其实是借鉴了 这题 的想法。

新手教程

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>


using namespace std;



int main() {
	printf ("欢迎来到绿黄斗世界!\n");
	Sleep(1000);
	printf("在正式开始玩前,先来练习一下吧!");
	Sleep(1000);
	system("cls");
	while (1) {
		printf("操作输入\"1\":换兵\n");
		Sleep(1000);
		printf("效果:把 \"输入的第一个数\" 号兵营的 \"输入的第三个数\" 个兵放到 \"输入的第二个数”\"号兵营\n");
		Sleep(2000);
		printf("地图:\n*****************************\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		printf ("9 10 5 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		printf ("3 6 6 9 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
		printf ("2 6 5");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		printf ("\n*****************************\n请绿操作!\n");
		Sleep(2000);
		printf ("试着把绿队2号兵营的6个兵移到3号兵营吧!\n");
		printf("提示:要先输入数字1,表示你要换兵哦!\n");
		int a, b, c, d;
		scanf ("%d%d%d%d", &a, &b, &c, &d);
		if (a == 1 && b == 2 && c == 3 && d == 6)
			break;
		else {
			printf("输入错误!");
			Sleep(1000);
			system("cls");
		}
	}
	system("cls");
	printf("地图:\n*****************************\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	printf ("9 4 11 ");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	printf ("3 6 6 9 ");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("2 6 5");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("\n*****************************\n");
	Sleep(2500);
	printf ("很好!\n");
	system("cls");
	while (1) {
		printf("操作输入\"2\":进攻\n");
		Sleep(1000);
		printf("效果:让本队最靠近敌方(包括无人领地)的兵营进攻\n");
		Sleep(2000);
		printf("分三种情况:\n一:我多敌少,夺得一格地盘,消耗兵力为对方兵力\n");
		printf("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		printf ("5 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		printf ("3");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		printf ("\n*****\n请绿操作!\n");
		Sleep(2000);
		printf("请输入\"2\"进攻!\n");
		int x;
		scanf ("%d", &x);
		if (x == 2) {
			break;
		} else {
			printf("输入错误!");
			Sleep(1000);
			system("cls");
		}
	}
	printf("地图:\n*****\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	printf ("2 0");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("\n*****\n");
	Sleep(1000);
	printf ("很好!\n");
	Sleep(1000);
	system("cls");
	while (1) {
		printf("二:敌多我少,地盘不变,本兵营兵力归零,对方兵力消耗为我方兵力\n");
		printf("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		printf ("2 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		printf ("5");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		printf ("\n*****\n请绿操作!\n");
		Sleep(2000);
		printf("请输入\"2\"进攻!\n");
		int x;
		scanf ("%d", &x);
		if (x == 2) {
			break;
		} else {
			printf("输入错误!");
			Sleep(1000);
			system("cls");
		}
	}
	printf("地图:\n*****\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	printf ("0 ");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	printf ("3");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("\n*****\n");
	Sleep(1000);
	printf ("很好!\n");
	Sleep(1000);
	system("cls");
	while (1) {
		printf("三:敌我相等,地盘不变,双方兵力都归零\n");
		printf("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		printf ("11 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		printf ("11");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		printf ("\n*****\n请绿操作!\n");
		Sleep(2000);
		printf("请输入\"2\"进攻!\n");
		int x;
		scanf ("%d", &x);
		if (x == 2) {
			break;
		} else {
			printf("输入错误!");
			Sleep(1000);
			system("cls");
		}
	}
	printf("地图:\n*****\n");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	printf ("0 ");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	printf ("0");
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	printf ("\n*****\n");
	Sleep(1000);
	printf ("很好!\n");
	Sleep(1000);
	system("cls");
	printf("输入别的数字不操作,谁先占领所有地盘,谁就赢了!\n");
	Sleep(3000);
	printf("恭喜你,完成了新手教程,快去正式版玩吧!\n祝游玩愉快!");
	Sleep(3000);
	return 0;
}

正式游戏

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>


using namespace std;

struct Info {
	int num, di; //di:地盘 (1:绿 | 2:黄 | 0:无)
} a[11];

int y = 3, g = 3, w = 4, opt;//y:黄色地盘 |  g:绿色地盘 | w:无人地盘

void init() {
	for (int i = 1; i <= 10; i++) {
		a[i].num = rand() % 6 + 1;
	}
	a[1].di = a[2].di = a[3].di = 1;
	a[4].di = a[5].di = a[6].di = a[7].di = 0;
	a[8].di = a[9].di = a[10].di = 2;
}

void out() {
	printf ("地图:\n***************************************\n");
	for (int i = 1; i <= 10; i++) {
		switch (a[i].di) {
			case 1:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
				break;
			case 2:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
				break;
			default:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
				break;
		}
		printf ("%d ", a[i].num);
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	}
	printf ("\n***************************************\n");
}

void tian() {
	Sleep(1000);
	printf ("天降神兵!\n");
	Sleep(1500);
	system("cls");
	int cl = rand() % 10 + 1;
	out();
	printf ("降在总第%d个兵营,加三个兵!", cl);
	Sleep(1000);
	a[cl].num += 3;
}

void f1(int n, int m, int l) {//f:绿
	a[n].num -= l;
	a[m].num += l;
}

void f2() {
	if (a[g + 1].di == 0) {
		if (a[g].num > a[g + 1].num) {
			a[g].num -= a[g + 1].num;
			a[g + 1].num = 0;
			a[g + 1].di = 1;
			g++;
			w--;
		} else {
			if (a[g].num < a[g + 1].num) {
				a[g + 1].num -= a[g].num;
				a[g].num = 0;
			} else {
				a[g].num = 0;
				a[g + 1].num = 0;
			}
		}
	} else {
		if (a[g].num > a[g + 1].num) {
			a[g].num -= a[g + 1].num;
			a[g + 1].num = 0;
			a[g + 1].di = 1;
			g++;
			y--;
		} else {
			if (a[g].num < a[g + 1].num) {
				a[g + 1].num -= a[g].num;
				a[g].num = 0;
			} else {
				a[g].num = 0;
				a[g + 1].num = 0;
			}
		}
	}
}

void g1(int n, int m, int l) {//g:黄
	n = n + g + w;
	m = m + g + w;
	a[n].num -= l;
	a[m].num += l;
}

void g2() {
	if (a[g + w].di == 0) {
		if (a[g + w + 1].num > a[g + w].num) {
			a[g + w + 1].num -= a[g + w].num;
			a[g + w].num = 0;
			a[g + w].di = 2;
			y++;
			w--;
		} else {
			if (a[g + w + 1].num < a[g + w].num) {
				a[g + w].num -= a[g].num;
				a[g + w + 1].num = 0;
			} else {
				a[g + w + 1].num = 0;
				a[g + w].num = 0;
			}
		}
	} else {
		if (a[g + w + 1].num > a[g + w].num) {
			a[g + w + 1].num -= a[g + w].num;
			a[g + w].num = 0;
			a[g + w].di = 2;
			y++;
			g--;
		} else {
			if (a[g + w + 1].num < a[g + w].num) {
				a[g + w].num -= a[g].num;
				a[g + w + 1].num = 0;
			} else {
				a[g + w + 1].num = 0;
				a[g + w].num = 0;
			}
		}
	}
}

int main() {
	srand(time(0));
	init();
	while (1) {
		if (rand() % 5 == 2)
			tian();
		system("cls");
		out();
		printf ("请绿操作!\n");
		scanf ("%d", &opt);
		switch (opt) {
			case 1://移兵
				int n, m, l;
				scanf("%d%d%d", &n, &m, &l);
				f1(n, m, l);
				break;
			case 2://攻击
				f2();
				break;
		}
		system("cls");
		out();
		printf ("请黄操作!\n");
		scanf ("%d", &opt);
		switch (opt) {
			case 1://移兵
				int n, m, l;
				scanf("%d%d%d", &n, &m, &l);
				g1(n, m, l);
				break;
			case 2://攻击
				g2();
				break;
				system("cls");
				out();
		}
		//判断
		if (g == 10) {
			printf ("绿赢了!\n");
			break;
		} else {
			if (y == 10) {
				printf ("黄赢了!\n");
				break;
			}
		}
	}
	return 0;
}//移兵:输入兵营号为本队从左到右的第几个
/*
0 * * * \ \ \ \ + + +
*/

边界之争(绿黄斗的完整版)

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#define pa system("pause") 

using namespace std;

struct Info {
	int num, di; //di:地盘 (1:绿 | 2:黄 | 0:无)
} a[6];

int y = 2, g = 2, w = 1, opt;//y:黄色地盘 |  g:绿色地盘 | w:无人地盘
bool err1, err2;

inline int write(const string _Str) {
	for (int i = 0; i < (int)_Str.size(); i++) {
		putchar(_Str[i]);
		Sleep(50);
	}
	return EOF;
}

void init() {
	for (int i = 1; i <= 5; i++) {
		a[i].num = rand() % 6 + 1;
	}
	a[1].di = a[2].di = 1;
	a[3].di =  0;
	a[4].di = a[5].di = 2;
}

void out() {
	system("cls");
	printf ("地图:\n**************\n");
	for (int i = 1; i <= 5; i++) {
		switch (a[i].di) {
			case 1:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
				break;
			case 2:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
				break;
			default:
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
				break;
		}
		if (a[i].num < 0)
			a[i].num = 0;
		printf ("%d ", a[i].num);
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
	}
	printf ("\n**************\n");
}

void tian() {
	Sleep(1000);
	write ("天降神兵!\n");
	Sleep(1500);
	system("cls");
	int cl = rand() % 5 + 1;
	out();
	printf ("降在总第%d个兵营,加三个兵!", cl);
	Sleep(1000);
	a[cl].num += 3;
}

void f1(int n, int l, int m) {//f:绿
	a[n].num -= l;
	a[m].num += l;
}

void f2() {
	if (a[g + 1].di == 0) {
		if (a[g].num > a[g + 1].num) {
			a[g].num -= a[g + 1].num;
			a[g + 1].num = a[g].num;
			a[g].num = 0;
			a[g + 1].di = 1;
			g++;
			w--;
		} else {
			if (a[g].num < a[g + 1].num) {
				a[g + 1].num -= a[g].num;
				a[g].num = a[g + 1].num;
				a[g + 1].num = 0;
				a[g].di = 0;
				g--;
				w++;
			} else {
				a[g].num = 0;
				a[g + 1].num = 0;
			}
		}
	} else {
		if (a[g].num > a[g + 1].num) {
			a[g].num -= a[g + 1].num;
			a[g + 1].num = a[g].num;
			a[g].num = 0;
			a[g + 1].di = 1;
			g++;
			y--;
		} else {
			if (a[g].num < a[g + 1].num) {
				a[g + 1].num -= a[g].num;
				a[g].num = a[g + 1].num;
				a[g + 1].num = 0;
				a[g].di = 2;
				g--;
				y++;
			} else {
				a[g].num = 0;
				a[g + 1].num = 0;
			}
		}
	}
}

void g1(int n, int l, int m) {//g:黄
	n = n + g + w;
	m = m + g + w;
	a[n].num -= l;
	a[m].num += l;
}

void g2() {
	if (a[g + w].di == 0) {
		if (a[g + w + 1].num > a[g + w].num) {
			a[g + w + 1].num -= a[g + w].num;
			a[g + w].num = a[g + w + 1].num;
			a[g + w + 1].num = 0;
			a[g + w].di = 2;
			y++;
			w--;
		} else {
			if (a[g + w + 1].num < a[g + w].num) {
				a[g + w].num -= a[g + w + 1].num;
				a[g + w].num = a[g + w + 1].num;
				a[g + w + 1].num = 0;
				a[g + w + 1].di = 0;
				y--;
				w++;
			} else {
				a[g + w + 1].num = 0;
				a[g + w].num = 0;
			}
		}
	} else {
		if (a[g + w + 1].num > a[g + w].num) {
			a[g + w + 1].num -= a[g + w].num;
			a[g + w].num = a[g + w + 1].num;
			a[g + w + 1].num = 0;
			a[g + w].di = 2;
			y++;
			g--;
		} else {
			if (a[g + w + 1].num < a[g + w].num) {
				a[g + w].num -= a[g + w + 1].num;
				a[g + w].num = a[g + w + 1].num;
				a[g + w + 1].num = 0;
				a[g + w + 1].di = 1;
				y--;
				g++;
			} else {
				a[g + w + 1].num = 0;
				a[g + w].num = 0;
			}
		}
	}
}

void welcome() {
	MessageBox(NULL, TEXT("边	界 	之	争"), TEXT("进入"), MB_OK);
	MessageBox(NULL, TEXT("本游戏需要两个人互相对抗"), TEXT("提示"), MB_OK);
	write("你好,勇士们!欢迎来到边界之争!\n");
	Sleep(1000);
	write("作者:yuexingfei\n");
	Sleep(1000);
	pa;
}

void xin() {
	write ("			新");
	Sleep(1000);
	write ("			手");
	Sleep(1000);
	write ("			教");
	Sleep(1000);
	write ("			程\n");
	Sleep(1000);
}

void zheng() {
	system("cls");
	write ("			正");
	Sleep(1000);
	write ("			式");
	Sleep(1000);
	write ("			游");
	Sleep(1000);
	write ("			戏\n");
	Sleep(1000);
	system("cls");
}

bool erro1(int n, int l, int m) {
	if (n > g || m > g || a[n].num < l ) {
		err1 = false;
		return false;
	}
	return true;
}

bool erro2(int n, int l, int m) {
	if (g + w > n + g + w || g + w > m + g + w || a[n + g + w].num < l ) {
		err2 = false;
		return false;
	}
	return true;
}

int main() {
	system("title 边界之争");
	system("color 17");
	welcome();
	char c;
	while (1) {
		write ("是否跳过新手教程?(y/n)\n");
		scanf ("%c", &c);
		if (c == 'n' || c == 'N' || c == 'y' || c == 'Y')
			break;
		else
			write ("输入错误!\n");
		Sleep(1500);
		system("cls");
	}
	system("color 07");
	//新手教程
	if (c == 'n' || c == 'N') {
		system("cls");
		xin();
		write ("一:布局\n");
		Sleep(1000);
		write ("共5个地盘,初始绿、黄双方各2个地盘,中间的无人领地1个地盘\n");
		Sleep(1000);
		write ("兵营号为本队从左到右数的第几个兵营,数字代表本兵营的兵力,颜色代表阵营(绿色为绿队,灰色为无人领地,黄色为黄队)\n");
		pa;
		system("cls");
		write ("二:输入类型\n");
		Sleep(1000);
		write ("输入1:换兵\n");
		Sleep(1000);
		write ("输入2:进攻\n");
		Sleep(1000);
		write ("输入其他数字:不操作\n");
		Sleep(1000);
		write ("提示:要先输入表示操作类型的数字哦~\n");
		pa;
		system("cls");
		write ("三:操作输入\n");
		while (1) {
			write("操作输入\"1\":换兵\n");
			Sleep(1000);
			write ("首先,输入1表示你要换兵;其次,输入需要调动的兵营号;然后,输入想要调动的兵力的数量;最后,输入要调往的兵营号。\n");
			Sleep(2000);
			write("地图:\n**************\n");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			write ("9 5 ");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
			write ("6 ");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
			write ("6 5");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			write ("\n**************\n请绿操作!\n\n");
			Sleep(2000);
			write ("试着在绿队1号兵营中抽出6个兵移到2号兵营吧!\n");
			write("提示:要先输入数字1,表示你要换兵哦!\n");
			int a, b, c, d;
			scanf ("%d%d%d%d", &a, &b, &c, &d);
			if (a == 1 && b == 1 && c == 6 && d == 2)
				break;
			else {
				write("输入错误!");
				Sleep(1000);
				system("cls");
			}
		}
		system("cls");
		write("地图:\n**************\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		write ("3 11 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		write ("6 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
		write ("6 5");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		write ("\n**************\n");
		Sleep(1002);
		write ("很好!\n");
		Sleep(2500);
		system("cls");
		while (1) {
			write("操作输入\"2\":进攻\n");
			Sleep(1000);
			write("效果:让本队最靠近敌方(包括无人领地)的兵营进攻\n");
			Sleep(2000);
			write("分三种情况:\n一:我多敌少,夺得一格地盘,消耗兵力为对方兵力\n");
			write("地图:\n*****\n");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			write ("5 ");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
			write ("3");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			write ("\n*****\n请绿操作!\n\n");
			Sleep(2000);
			write("请输入\"2\"进攻!\n");
			int x;
			scanf ("%d", &x);
			if (x == 2) {
				break;
			} else {
				write("输入错误!");
				Sleep(1000);
				system("cls");
			}
		}
		write("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		write ("2 0");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		write ("\n*****\n");
		Sleep(1000);
		write ("很好!\n");
		Sleep(1000);
		system("cls");
		while (1) {
			write("二:敌多我少,失去一格地盘,本兵营兵力归零,对方兵力消耗为我方兵力\n");
			write("地图:\n*****\n");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			write ("2 ");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
			write ("5");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			write ("\n*****\n请绿操作!\n\n");
			Sleep(2000);
			write("请输入\"2\"进攻!\n");
			int x;
			scanf ("%d", &x);
			if (x == 2) {
				break;
			} else {
				write("输入错误!");
				Sleep(1000);
				system("cls");
			}
		}
		write("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		write ("0 3");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		write ("\n*****\n");
		Sleep(1000);
		write ("很好!\n");
		Sleep(1000);
		system("cls");
		while (1) {
			write("三:敌我相等,地盘不变,双方兵力都归零\n");
			write("地图:\n*****\n");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
			write ("11 ");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
			write ("11");
			SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
			write ("\n*****\n请绿操作!\n\n");
			Sleep(2000);
			write("请输入\"2\"进攻!\n");
			int x;
			scanf ("%d", &x);
			if (x == 2) {
				break;
			} else {
				write("输入错误!");
				Sleep(1000);
				system("cls");
			}
		}
		write("地图:\n*****\n");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
		write ("0 ");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		write ("0");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
		write ("\n*****\n");
		Sleep(1000);
		write ("很好!\n");
		Sleep(1000);
		system("cls");

		write ("四:获胜条件\n");
		Sleep(1000);
		write("谁先占领所有地盘,谁就赢了!\n");
		Sleep(3000);
		system("cls");

		write("恭喜你,完成了新手教程!\n祝游玩愉快!\n");
		system("pause");
	}

	//正式
	system("cls");
	zheng();

	srand(time(0));
	init();
	while (1) {
		int t = rand() % 4;
		if (t == 1)
			tian();
		while (1) {
			err1 = true;
			out();
			write ("请绿操作!\n");
			scanf ("%d", &opt);
			switch (opt) {
				case 1://移兵
					int n, m, l;
					scanf("%d%d%d", &n, &l, &m);
					if (erro1(n, l, m))
						f1(n, l, m);
					break;
				case 2://攻击
					f2();
					break;
			}
			if (!err1) {
				write ("操作错误!\n");
				Sleep(1000);
			} else
				break;
		}

		//判断1
		if (g == 5) {
			out();
			Sleep(1000);
			system("cls");
			MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
			break;
		} else {
			if (y == 5) {
				out();
				Sleep(1000);
				system("cls");
				MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
				break;
			}
		}

		system("cls");
		while (1) {
			err2 = true;
			out();
			write ("请黄操作!\n");
			scanf ("%d", &opt);
			switch (opt) {
				case 1://移兵
					int n, m, l;
					scanf("%d%d%d", &n, &l, &m);
					if (erro2(n, l, m))
						g1(n, l, m);
					break;
				case 2://攻击
					g2();
					break;
			}
			if (!err2) {
				write ("操作错误!\n");
				Sleep(1000);
			} else
				break;
		}

		//判断2
		if (g == 5) {
			out();
			Sleep(1000);
			system("cls");
			MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
			break;
		} else {
			if (y == 5) {
				out();
				Sleep(1000);
				system("cls");
				MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
				break;
			}
		}
	}
	system("pause");
	return 0;
}

色块对决(目前最长游戏……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;
			}
		}
	}
}
posted @ 2025-03-31 20:32  Yuexingfei_qwq  阅读(72)  评论(4)    收藏  举报