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