用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

硬核!!!dev c++做一个游戏盒子(共3000行代码!)

2024-05-19 作者: zr宗然举报

[c++]代码库

#include<bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
int x = 0;
int* X = &x;
char Void[10000] = "\0";
int Key = 0; 
int KeyOut = 0;
int User;
int User2;
int* Q1;
int* Q2; 
int* Q3;
int score;   //游戏得分
const int nn = 809;
struct Point { int x, y; };
int dali;
int fx[4] = { -1,27,1,-27 };
int fxfx[4][2] = { {0,-1},{1,0},{0,1},{-1,0} };
int dis[1000][1000];
int changdi[30][27] = {
    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
    {0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,3,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
    {2,2,2,2,2,2,1,2,2,2,0,3,3,3,3,3,0,2,2,2,1,2,2,2,2,2,2},
    {0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0},
    {0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
    {0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
    {0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
    {0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
int xx, xx1, xx2, xx3, xx4, yy, yy5, yy2, yy3, yy4;
int now, now1, now2, now3, now4;
int gg1, gg2, gg3, gg4;
int fangx, nextfx, last1, last2, last3, last4;
int fenshu, guozi, guaitimer;
int T1, T2, t1, t2, stopped; //T:计时 t1:玩家速度 t2:怪物速度
int ff = 0; //f:{0:继续 1:被吃 2:赢了 3:输了}
int beichi;
#define high 20  //定义地图的高度
#define width 30   //定义地图的宽度
#define snake_maxlength 200  //蛇长最大值
int snake_x[snake_maxlength], snake_y[snake_maxlength]; //蛇的坐标
int snake_length;  //蛇现在的长度
int Map[high][width] = { 0 };  //初始化地图,0表示空格,1表示蛇身,2表示食物,3表示墙,4表示蛇头,现在地图中什么也没有
int food_x, food_y; //食物的坐标
int SCORE;  //本局分数
char input;
char primeinput = '.';
int op = 100;
int Death = 0;
int Guesstimes;
struct account{
    char user[1000];   //用户名
    char password[1000];   //密码
    int coin = 0;   //硬币
    int number;   //编号
    int award = 0;   //奖励次数,主要用于恋爱测试器奖励次数的限定
};
struct account peo[100];   //初设100人,可更改
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
float Check(int a)
{
    if (a == 0)   //针对字符和字符串
    {
        float m;
        if (cin >> m)
        {
            return m;
        }
        else
        {
            cout << "输入错误,请重新输入:";
            cin.clear();   //清除这个错误状态
            cin.sync();   //清理缓冲区内容
            cin.get();
            while (!(cin >> m))
            {
                cout << "输入错误,请重新输入:";
                cin.clear();   //清除这个错误状态
                cin.sync();   //清理缓冲区内容
                cin.get();
            }
            return m;
        }
    }
    else if (a == 1){
        float m;
        float c;
        if (cin >> m){
            while (1){
                if (m == 1 || m == 2 || m == 0){
                    return m;
                    break;
                }
                else{
                    cout << "输入错误,请重新输入:";
                    c = Check(1);   //递归调用,重新检测输入
                    return c;
                    break;
                }
            }
        }
        else{
            cout << "输入错误,请重新输入:";
            cin.clear();   //清除这个错误状态
            cin.sync();   //清理缓冲区内容
            cin.get();
            while (!(cin >> m)){
                cout << "输入错误,请重新输入:";
                cin.clear();   //清除这个错误状态
                cin.sync();   //清理缓冲区内容
                cin.get();
            }
            while (1){
                if (m == 1 || m == 2 || m == 0){
                    return m;
                    break;
                }
                else{
                    cout << "抱歉!输入错误,请重新输入:";
                    c = Check(1);
                    return c;
                    break;
                }
            }
        }
    }
    else if (a == 2)   //针对字符和字符串以及特定的数字(1、2)
    {
        float m;
        float c;
        if (cin >> m)
        {
            while (1)
            {
                if (m == 1 || m == 2)
                {
                    return m;
                    break;
                }
                else
                {
                    cout << "输入错误,请重新输入:";
                    c = Check(2);
                    return c;
                    break;
                }
            }
        }
        else
        {
            cout << "输入错误,请重新输入:";
            cin.clear();   //清除这个错误状态
            cin.sync();//清理缓冲区内容
            cin.get();
            while (!(cin >> m))
            {
                cout << "输入错误,请重新输入:";
                cin.clear();   //清除这个错误状态
                cin.sync();   //清理缓冲区内容
                cin.get();
            }
            while (1)
            {
                if (m == 1 || m == 2)
                {
                    return m;
                    break;
                }
                else
                {
                    cout << "输入错误,请重新输入:";
                    a = Check(2);
                    return a;
                    break;
                }
            }
        }
    }
    else if (a == 3)   //针对字符和字符串以及特定的数字(1、2、3)
    {
        float m;
        float c;
        if (cin >> m)
        {
            while (1)
            {
                if (m == 1 || m == 2 || m == 3)
                {
                    return m;
                    break;
                }
                else
                {
                    cout << "输入错误,请重新输入:";
                    c = Check(3);
                    return c;
                    break;
                }
            }
        }
        else
        {
            cout << "输入错误,请重新输入:";
            cin.clear();   //清除这个错误状态
            cin.sync();   //清理缓冲区内容
            cin.get();
            while (!(cin >> m))
            {
                cout << "输入错误,请重新输入:";
                cin.clear();   //清除这个错误状态
                cin.sync();   //清理缓冲区内容
                cin.get();
            }
            while (1){
                if (m == 1 || m == 2 || m == 3){
                    return m;
                    break;
                }
                else{
                    cout << "输入错误,请重新输入:";
                    a = Check(3);
                    return a;
                    break;
                }
            }
        }
    }
    else if (a == 4) {  //针对字符和字符串以及特定的数字(1、0)
        float m;
        float c;
        if (cin >> m){
            while (1){
                if (m == 1 || m == 0){
                    return m;
                    break;
                }
                else{
                    cout << "输入错误,请重新输入:";
                    c = Check(4);
                    return c;
                    break;
                }
            }
        }
        else{
            cout << "输入错误,请重新输入:";
            cin.clear();   //清除这个错误状态
            cin.sync();   //清理缓冲区内容
            cin.get();
            while (!(cin >> m)){
                cout << "输入错误,请重新输入:";
                cin.clear();   //清除这个错误状态
                cin.sync();   //清理缓冲区内容
                cin.get();
            }
            while (1){
                if (m == 1 || m == 0){
                    return m;
                    break;
                }
                else
                {
                    cout << "输入错误,请重新输入:";
                    a = Check(4);
                    return a;
                    break;
                }
            }
        }
    }
}
void Progress(){
    int c = 1, d = 0;
    for (int i = 0; i < 50; i++)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t+-------------------------------------------------+" << endl;
        cout << "\t\t\t\t|";
        for (int a = 0; a < i; a++)   //打印▋
        {
            cout << "▋";
        }
        for (int b = 49 - i; b > 0; b--)   //打印空格
        {
            cout << " ";
        }
        d += 2;   //进度数
        cout << "|  " << d << "%" << endl;
        cout << "\t\t\t\t+-------------------------------------------------+" << endl;
        cout << "\t\t\t\t        亲爱的用户!正在进入游戏世界,请稍后.";
        for (int j = 0; j < c % 6; j++)
        {
            cout << ".";
        }
        c++;
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        Sleep(150);   //进度条读取速度
        if (i != 49)
        {
            system("cls");   //清屏
        }
    }
    Sleep(3000);
    system("cls");
}
int NormalizeName(char name[1000], int n)
{
    int a = 0;   //计数器
    if (n <= 15)
    {
        for (int i = 0; i < n; i++)
        {
            if (name[i] <= 32 || name[i] == 127)   //为空格或其他特殊情况
            {
                break;
            }
            else
            {
                a++;
            }
        }
        if (a == n)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else
    {
        return 0;
    }
}
//--------------------------------------------------------------------------------------------------------------
// 用户名查重系统
int CheckName(char name[1000])
{
    int a = 0;   //计数器
    if (x == 0)   //第一个注册的人无重复
    {
        return 1;
    }
    else
    {
        for (int i = 0; i < x; i++)
        {
            if (strcmp(name, peo[i].user) == 0)
            {
                break;
            }
            else
            {
                a++;
            }
        }
        if (a == x)   //用户名无重复
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
//--------------------------------------------------------------------------------------------------------------
// 密码规范系统
int NormalizePassword(char password[1000], int n)
{
    int a = 0;   //计数器
    if (n >= 6 && n <= 15)
    {
        for (int i = 0; i < n; i++)
        {
            if ((password[i] >= 48 && password[i] <= 57) || (password[i] >= 65 && password[i] <= 90) || (password[i] >= 97 && password[i] <= 122))   //为字母或数字
            {
                a++;
            }
            else
            {
                break;
            }
        }
        if (a == n)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else
    {
        return 0;
    }
}
//--------------------------------------------------------------------------------------------------------------
// 密码找回系统
int RefoundPassword()
{
    while (1)
    {
        char Name2[1000];
        int Key1 = 0;
        cout << "请输入用户名:";
        cin >> Name2;
        for (int i = 0; i < *X; i++)   //逐个人员遍历
        {
            if (strcmp(Name2, peo[i].user) == 0)   //判断输入的用户名有无注册或是否正确
            {
                Key1 = 1;
                User2 = i;
            }
        }
        system("cls");   //清屏
        if (Key1 == 0)   //钥匙解锁失败
        {
            cout << "抱歉,您的用户名未注册或输入错误!!!" << endl << endl;
            cout << "1.继续找回密码" << endl;
            cout << "2.退出系统" << endl;
            cout << "请输入数字实现对应功能:";
            int m2 = Check(2);   //只返回1、2
            cout << endl;
            if (m2 == 1)
            {
                system("cls");   //清屏
                continue;
            }
            else if (m2 == 2)
            {
                system("cls");   //清屏
                return 0;
            }
        }
        else if (Key1 == 1)   //钥匙解锁成功
        {
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t     您的密码为:" << peo[User2].password << endl;
            Sleep(2000);
            system("pause");
            system("cls");   //清屏
            return 1;
        }
    }
}
//--------------------------------------------------------------------------------------------------------------
// 账号注册系统:
int Register()
{
    int key1 = 0;   //注册成功的钥匙
    int key2 = 0;   //用户名设置成功的钥匙
    int key3 = 0;   //密码设置成功钥匙
    int key4 = 0;   //退出程序的钥匙
    int h = 0;   //轮转片
    char recheck[100];
    peo[x].number = x + 1;   //标号
    while (1)   //创建用户名
    {
        cout << "请设置用户名(不超过15个字符,空格与汉字为非法字符):";
        cin.get();   //cin.getline前要吸收回车键
        cin.getline(peo[x].user, 1000);
        int n1 = strlen(peo[x].user);
        int p1 = NormalizeName(peo[x].user, n1);   //返回1用户名通过,返回0则不通过
        int p2 = CheckName(peo[x].user);   //返回1用户名通过,返回0则不通过
        if (p1 == 1 && p2 == 1)
        {
            key2 = 1;   //钥匙开锁,用户名设置成功
            break;
        }
        else
        {
            cout << endl << endl;
            cout << "用户名重复或非法!!!" << endl;
            cout << "1.重新设置用户名" << endl;
            cout << "2.退出注册" << endl;
            cout << "请输入数字实现对应功能:";
            int q = Check(2);   //只返回1、2
            cout << endl;
            if (q == 1)   //重新设置用户名
            {
                strcpy(peo[x].user, Void);   //清空输入的用户名
                system("cls");   //清屏
                continue;
            }
            else if (q == 2)    //退出注册
            {
                system("cls");   //清屏
                break;
            }
        }
    }
    cout << endl << endl;
    if (key2 == 1)
    {
        while (1)   //设置密码
        {
            system("cls");   //清屏
            cout << "请设置密码(只能为字母和数字,长度不小于6,不超过15):";
            if (h != 0)
            {
                cin.get();   //cin.getline前要吸收回车键
            }
            cin.getline(peo[x].password, 1000);
            //cout << peo[x].password << endl;
            int n2 = strlen(peo[x].password);
            int p3 = NormalizePassword(peo[x].password, n2);   //返回1密码通过,返回0则不通过
            if (p3 == 1)
            {
                key3 = 1;   //钥匙开锁,密码设置成功
            }
            else
            {
                cout << endl << endl;
                cout << "密码非法!!!" << endl;
                cout << "1.重新设置密码" << endl;
                cout << "2.退出注册" << endl;
                cout << "请输入数字实现对应功能:";
                int q = Check(2);   //只返回1、2
                cout << endl;
                if (q == 1)   //重新设置密码
                {
                    strcpy(peo[x].password, Void);   //清空输入的密码
                    cout << endl << endl;
                    h++;
                    continue;
                }
                else if (q == 2)    //退出注册
                {
                    system("cls");   //清屏
                    break;
                }
            }
            if (key3 == 1)
            {
                system("cls");   //清屏
                while (1)
                {
                    cout << "请再次输入密码:";
                    cin >> recheck;
                    //cout << recheck << endl;
                    if (strcmp(recheck, peo[x].password) == 0)
                    {
                        cout << endl;
                        cout << "你真是太棒了!注册成功!!!" << endl << endl;
                        (*X)++;
                        key1 = 1;   //钥匙开锁,注册成功
                        key4 = 1;   //钥匙开锁,退出设置用户名和密码的程序
                        break;
                    }
                    else
                    {
                        cout << endl;
                        cout << "抱歉!两次密码不一致!!!" << endl;
                        cout << "1.重新设置密码" << endl;
                        cout << "2.退出注册" << endl;
                        cout << "请输入数字实现对应功能:";
                        int z = Check(2);   //只返回1、2
                        cout << endl;
                        if (z == 1)
                        {
                            strcpy(recheck, Void);   //清空输入的密码
                            strcpy(peo[x].password, Void);   //清空输入的密码
                            key3 = 0;   //关锁
                            h++;
                            break;
                        }
                        else if (z == 2)
                        {
                            system("cls");   //清屏
                            key4 = 1;   //钥匙开锁,退出设置用户名和密码的程序
                            break;
                        }
                    }
                }
            }
            if (key4 == 1)
            {
                break;
            }
        }
    }
    if (key1 == 1)
    {
        cout << "是否直接进入程序?" << endl;
        cout << "1.是" << endl;
        cout << "2.否" << endl;
        cout << "请输入数字实现对应功能:";
        int m = Check(2);   //只返回1、2
        cout << endl;
        if (m == 1)
        {
            User = x - 1;
            return m;
        }
        else if (m == 2)
        {
            return m;
        }
    }
}
//--------------------------------------------------------------------------------------------------------------
// 账号登录系统
int SignIn()
{
    char Name[1000], Password[1000];
    int Key1 = 0;   //判断用户名正误的钥匙
    int Key2 = 0;   //判断密码正误的钥匙
    while (1)
    {
        cout << "请输入用户名:";   //有BUG
        cin >> Name;
        for (int i = 0; i < *X; i++)   //逐个人员遍历
        {
            if (strcmp(Name, peo[i].user) == 0)   //判断输入的用户名有无注册或是否正确
            {
                Key1 = 1;
                User = i;
            }
        }
        if (Key1 == 0)   //钥匙解锁失败
        {
            cout << "这可能是个bug!抱歉!您的用户名未注册或输入错误!!!" << endl << endl;
            cout << "1.继续登录" << endl;
            cout << "2.退出登录" << endl;
            cout << "请输入数字实现对应功能:";
            int m1 = Check(2);   //只返回1、2
            cout << endl;
            if (m1 == 1)
            {
                system("cls");   //清屏
                continue;
            }
            else if (m1 == 2)
            {
                system("cls");   //清屏
                return 0;
            }
        }
        else if (Key1 == 1)   //钥匙解锁成功
        {
            cout << "请输入密码:";
            cin >> Password;
            if (strcmp(Password, peo[User].password) == 0)   //判断输入的密码是否正确
            {
                Key2 = 1;   //钥匙开锁,成功登陆
            }
            if (Key2 == 0)   //密码错误
            {
                cout << endl << "您输入的密码有误" << endl;
                cout << "1.重新登录" << endl;
                cout << "2.找回密码" << endl;
                cout << "3.退出登录" << endl;
                cout << "请输入数字实现对应功能:";
                int m2 = Check(3);   //只返回1、2、3
                cout << endl;
                if (m2 == 1)
                {
                    Key1 = 0;   //重新登陆关锁
                    system("cls");   //清屏
                    continue;
                }
                else if (m2 == 2)
                {
                    Key1 = 0;   //重新登陆关锁
                    system("cls");   //清屏
                    int r = RefoundPassword();
                    if (r == 1)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     密码找回成功!!!" << endl;
                        Sleep(2000);
                        system("cls");   //清屏
                        continue;
                    }
                    else if (r == 0)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     密码找回失败!!!" << endl;
                        Sleep(2000);
                        system("cls");   //清屏
                        continue;
                    }
                }
                else if (m2 == 3)
                {
                    system("cls");   //清屏
                    return 0;
                }
            }
            else if (Key2 == 1)   //密码正确
            {
                system("cls");   //清屏
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t      你真是太棒了!登录成功!!!" << endl;
                Sleep(2000);   //延时2秒
                return 1;
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------------------
// 游戏部分
//1.雷霆战机
/*=============== all the structures ===============*/
  
typedef struct Frame
{
    COORD position[2];
    int flag;
}Frame;
  
/*=============== all the functions ===============*/
  
void SetPos(COORD a)// set cursor
{
    HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(out, a);
}
  
void SetPos(int i, int j)// set cursor
{
    COORD pos = { i, j };
    SetPos(pos);
}
  
  
//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)
{
    SetPos(x1, y);
    for (int i = 0; i <= (x2 - x1); i++)
        cout << ch;
}
  
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)
{
    if (a.Y == b.Y)
        drawRow(a.Y, a.X, b.X, ch);
    else
    {
        SetPos(0, 25);
        cout << "error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
        system("pause");
    }
}
  
//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)
{
    int y = y1;
    while (y != y2 + 1)
    {
        SetPos(x, y);
        cout << ch;
        y++;
    }
}
  
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)
{
    if (a.X == b.X)
        drawCol(a.X, a.Y, b.Y, ch);
    else
    {
        SetPos(0, 25);
        cout << "error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
        system("pause");
    }
}
  
//左上角坐标、右下角坐标、用row填充行、用col填充列
void drawFrame(COORD a, COORD  b, char row, char col)
{
    drawRow(a.Y, a.X + 1, b.X - 1, row);
    drawRow(b.Y, a.X + 1, b.X - 1, row);
    drawCol(a.X, a.Y + 1, b.Y - 1, col);
    drawCol(b.X, a.Y + 1, b.Y - 1, col);
}
  
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
{
    COORD a = { x1, y1 };
    COORD b = { x2, y2 };
    drawFrame(a, b, row, col);
}
  
void drawFrame(Frame frame, char row, char col)
{
    COORD a = frame.position[0];
    COORD b = frame.position[1];
    drawFrame(a, b, row, col);
}
  
void drawPlaying()
{
    drawFrame(0, 0, 48, 24, '=', '|');//    draw Map frame;
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
    drawFrame(49, 9, 79, 20, '-', '|');//   draw operate frame
    drawFrame(49, 20, 79, 24, '-', '|');//  draw other message frame
    SetPos(52, 6);
    cout << "得分:";
    SetPos(52, 7);
    cout << "称号:";
    SetPos(52, 10);
    cout << "操作方式:";
    SetPos(52, 12);
    cout << "  a,s,d,w 控制移动,j开炮";
    SetPos(52, 14);
    cout << "  p 暂停游戏";
    SetPos(52, 16);
    cout << "  e 退出游戏";
}
  
//在[a, b)之间产生一个随机整数
int random(int a, int b)
{
    int c = (rand() % (a - b)) + a;
    return c;
}
  
//在两个坐标包括的矩形框内随机产生一个坐标
COORD random(COORD a, COORD b)
{
    int x = random(a.X, b.X);
    int y = random(a.Y, b.Y);
    COORD c = { x, y };
    return c;
}
  
bool  judgeCoordInFrame(Frame frame, COORD spot)
{
    if (spot.X >= frame.position[0].X)
        if (spot.X <= frame.position[1].X)
            if (spot.Y >= frame.position[0].Y)
                if (spot.Y <= frame.position[0].Y)
                    return true;
    return false;
}
  
void printCoord(COORD a)
{
    cout << "( " << a.X << " , " << a.Y << " )";
}
  
void printFrameCoord(Frame a)
{
    printCoord(a.position[0]);
    cout << " - ";
    printCoord(a.position[1]);
}
  
int drawMenu()
{
    SetPos(30, 1);
    cout << "P l a n e  W a r";
    drawRow(3, 0, 79, '-');
    drawRow(5, 0, 79, '-');
    SetPos(28, 4);
    cout << "w 和 s 选择, j 确定";
    SetPos(15, 11);
    cout << "1. 简单的敌人";
    SetPos(15, 13);
    cout << "2. 冷酷的敌人";
    drawRow(20, 0, 79, '-');
    drawRow(22, 0, 79, '-');
    SetPos(47, 11);
    cout << "简单的敌人:";
    SetPos(51, 13);
    cout << "简单敌人有着较慢的移动速度。";
    SetPos(24, 21);
    cout << "说明:得分超过200即为胜利";
    int j = 11;
    SetPos(12, j);
    cout << ">>";
    while (1)
    {
        if (_kbhit())
        {
            char x = _getch();
            switch (x)
            {
            case 'w':
            {
                if (j == 13)
                {
                    SetPos(12, j);
                    cout << " ";
                    j = 11;
                    SetPos(12, j);
                    cout << ">>";
                    SetPos(51, 13);
                    cout << "            ";
                    SetPos(47, 11);
                    cout << "简单的敌人:";
                    SetPos(51, 13);
                    cout << "简单敌人有较慢的移动速度,比较容易对付";
                }
                break;
            }
            case 's':
            {
                if (j == 11)
                {
                    SetPos(12, j);
                    cout << " ";
                    j = 13;
                    SetPos(12, j);
                    cout << ">>";
                    SetPos(51, 13);
                    cout << "              ";
                    SetPos(47, 11);
                    cout << "冷酷的敌人:";
                    SetPos(51, 13);
                    cout << "冷酷的敌人移动速度较快,不是很好对付哟。";
                }
                break;
            }
            case 'j':
            {
                if (j == 8) return 1;
                else return 2;
            }
            }
        }
    }
}
/*================== the Game Class ==================*/
  
class Game
{
public:
    COORD position[10];
    COORD bullet[10];
    Frame enemy[8];
    int rank;
    int rankf;
    string title;
    int flag_rank;
  
    Game();
  
    //初始化所有
    void initPlane();
    void initBullet();
    void initEnemy();
  
    //初始化其中一个
    //void initThisBullet( COORD );
    //void initThisEnemy( Frame );
  
    void planeMove(char);
    void bulletMove();
    void enemyMove();
    void drawPlane();
    void drawPlaneToNull();
    void drawBullet();
    void drawBulletToNull();
    void drawEnemy();
    void drawEnemyToNull();
    void drawThisBulletToNull(COORD);
    void drawThisEnemyToNull(Frame);
    void Pause();
    void Playing();
    int judgePlane();
    void judgeEnemy();
    void Shoot();
    void GameOver();
    void printScore();
};
Game::Game()
{
    initPlane();
    initBullet();
    initEnemy();
    score = 0;
    rank = 25;
    rankf = 0;
    flag_rank = 0;
}
void Game::initPlane()
{
    COORD centren = { 39, 22 };
    position[0].X = position[5].X = position[7].X = position[9].X = centren.X;
    position[1].X = centren.X - 2;
    position[2].X = position[6].X = centren.X - 1;
    position[3].X = position[8].X = centren.X + 1;
    position[4].X = centren.X + 2;
    for (int i = 0; i <= 4; i++)
        position[i].Y = centren.Y;
    for (int i = 6; i <= 8; i++)
        position[i].Y = centren.Y + 1;
    position[5].Y = centren.Y - 1;
    position[9].Y = centren.Y - 2;
}
void Game::drawPlane()
{
    for (int i = 0; i < 9; i++)
    {
        SetPos(position[i]);
        if (i != 5)
            cout << "O";
        else if (i == 5)
            cout << "|";
    }
}
void Game::drawPlaneToNull()
{
    for (int i = 0; i < 9; i++)
    {
        SetPos(position[i]);
        cout << " ";
    }
}
void Game::initBullet()
{
    for (int i = 0; i < 10; i++)
        bullet[i].Y = 30;
}
void Game::drawBullet()
{
    for (int i = 0; i < 10; i++)
    {
        if (bullet[i].Y != 30)
        {
            SetPos(bullet[i]);
            cout << "^";
        }
    }
}
void Game::drawBulletToNull()
{
    for (int i = 0; i < 10; i++)
        if (bullet[i].Y != 30)
        {
            COORD pos = { bullet[i].X, bullet[i].Y + 1 };
            SetPos(pos);
            cout << " ";
        }
}
void Game::initEnemy()
{
    COORD a = { 1, 1 };
    COORD b = { 45, 15 };
    for (int i = 0; i < 8; i++)
    {
        enemy[i].position[0] = random(a, b);
        enemy[i].position[1].X = enemy[i].position[0].X + 3;
        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
    }
}
void Game::drawEnemy()
{
    for (int i = 0; i < 8; i++)
        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
}
  
void Game::drawEnemyToNull()
{
    for (int i = 0; i < 8; i++)
    {
        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
    }
}
void Game::Pause()
{
    SetPos(61, 2);
    cout << "               ";
    SetPos(61, 2);
    cout << "暂停中...";
    char c = _getch();
    while (c != 'p')
        c = _getch();
    SetPos(61, 2);
    cout << "         ";
}
void Game::planeMove(char x)
{
    if (x == 'a')
        if (position[1].X != 1)
            for (int i = 0; i <= 9; i++)
                position[i].X -= 2;
  
    if (x == 's')
        if (position[7].Y != 23)
            for (int i = 0; i <= 9; i++)
                position[i].Y += 1;
  
    if (x == 'd')
        if (position[4].X != 47)
            for (int i = 0; i <= 9; i++)
                position[i].X += 2;
  
    if (x == 'w')
        if (position[5].Y != 3)
            for (int i = 0; i <= 9; i++)
                position[i].Y -= 1;
}
void Game::bulletMove()
{
    for (int i = 0; i < 10; i++)
    {
        if (bullet[i].Y != 30)
        {
            bullet[i].Y -= 1;
            if (bullet[i].Y == 1)
            {
                COORD pos = { bullet[i].X, bullet[i].Y + 1 };
                drawThisBulletToNull(pos);
                bullet[i].Y = 30;
            }
  
        }
    }
}
void Game::enemyMove()
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 2; j++)
            enemy[i].position[j].Y++;
  
        if (24 == enemy[i].position[1].Y)
        {
            COORD a = { 1, 1 };
            COORD b = { 45, 3 };
            enemy[i].position[0] = random(a, b);
            enemy[i].position[1].X = enemy[i].position[0].X + 3;
            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
        }
    }
}
int Game::judgePlane()
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 9; j++)
        {
            if (judgeCoordInFrame(enemy[i], position[j]))
            {
                SetPos(62, 1);
                cout << "坠毁";
                drawFrame(enemy[i], '+', '+');
                Sleep(1000);
                GameOver();
                return 1;
            }
        }
    }
}
void Game::drawThisBulletToNull(COORD c)
{
    SetPos(c);
    cout << " ";
}
void Game::drawThisEnemyToNull(Frame f)
{
    drawFrame(f, ' ', ' ');
}
void Game::judgeEnemy()
{
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 10; j++)
            if (judgeCoordInFrame(enemy[i], bullet[j]))
            {
                score += 5;
                drawThisEnemyToNull(enemy[i]);
                COORD a = { 1, 1 };
                COORD b = { 45, 3 };
                enemy[i].position[0] = random(a, b);
                enemy[i].position[1].X = enemy[i].position[0].X + 3;
                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
                drawThisBulletToNull(bullet[j]);
                bullet[j].Y = 30;
            }
}
void Game::Shoot()
{
    for (int i = 0; i < 10; i++)
        if (bullet[i].Y == 30)
        {
            bullet[i].X = position[5].X;
            bullet[i].Y = position[5].Y - 1;
            break;
        }
}
void Game::printScore()
{
    if (score == 30 && flag_rank == 0)
    {
        rank -= 3;
        flag_rank = 1;
    }
  
    else if (score == 70 && flag_rank == 1)
    {
        rank -= 5;
        flag_rank = 2;
    }
    else if (score == 110 && flag_rank == 2)
    {
        rank -= 5;
        flag_rank = 3;
    }
    int x = rank / 5;
    SetPos(60, 6);
    cout << score;
  
    if (rank != rankf)
    {
        SetPos(60, 7);
        if (x == 5)
            title = "初级飞行员";
        else if (x == 4)
            title = "中级飞行员";
        else if (x == 3)
            title = "高级飞行员";
        else if (x == 2)
            title = "王牌飞行员";
        cout << title;
    }
    rankf = rank;
}
  
void Game::Playing(){
    drawEnemy();
    drawPlane();
    int flag_bullet = 0;
    int flag_enemy = 0;
    while (1)
    {
        Sleep(8);
        if (_kbhit()){
            char x = _getch();
            if ('a' == x || 's' == x || 'd' == x || 'w' == x){
                drawPlaneToNull();
                planeMove(x);
                drawPlane();
                int ggg = judgePlane();
                if (ggg == 1) return;
            }
            else if ('p' == x)   //暂停
                Pause();
            else if ('j' == x)   //开炮
                Shoot();
            else if ('e' == x)
            {
                break;
            }
  
        }
        if (0 == flag_bullet)
        {
            bulletMove();
            drawBulletToNull();
            drawBullet();
            judgeEnemy();
        }
        flag_bullet++;
        if (5 == flag_bullet)
            flag_bullet = 0;
        if (0 == flag_enemy)
        {
            drawEnemyToNull();
            enemyMove();
            drawEnemy();
            int gggg = judgePlane();
            if (gggg == 1)
            {
                return;
            }
        }
        flag_enemy++;
        if (flag_enemy >= rank)
            flag_enemy = 0;
        printScore();
    }
    return;
}
void Game::GameOver()
{
    system("cls");
    COORD p1 = { 28,9 };
    COORD p2 = { 53,15 };
    drawFrame(p1, p2, '=', '|');
    SetPos(36, 12);
    string str = "Game Over!";
    for (int i = 0; i < str.size(); i++)
    {
        Sleep(80);
        cout << str[i];
    }
    Sleep(1000);
    system("cls");
    drawFrame(p1, p2, '=', '|');
    SetPos(31, 11);
    cout << "击落敌机:" << score / 5 << " 架";
    SetPos(31, 12);
    cout << "得  分:" << score;
    SetPos(31, 13);
    cout << "获得称号:" << title;
    Sleep(3000);
    return;
}
void PlaneWar()
{
    cout << "***********************************************    雷   霆   战   机   *************************************************" << endl;
    cout << " 游戏说明:" << endl;
    cout << "    ① 玩家通过按键w、s、a、d进行战机的移动,a为向左移动,s为向下移动,d为向右移动,w为向上移动,通过按键j进行开炮操作;" << endl;
    cout << "    ② 玩家需要躲避敌方战机,若有碰撞,则您的战机坠毁,游戏结束;" << endl;
    cout << "    ③ 玩家通过开炮可击落敌方战机,每击落一架战机,可获得5分;" << endl;
    cout << "    ④ 游戏得分超过200分即为游戏胜利,将获得30枚硬币的奖励,否则即为失败。" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    system("cls");
    srand((int)time(0));    //随机种子
    Game game;
    int a = drawMenu();
    if (a == 2)
        game.rank = 20;
    system("cls");
    drawPlaying();
    game.Playing();   //开始游戏
    Q1 = &score;
    return;
}
void color(int a)//颜色函数
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
void gotoxy(int x, int y)//位置函数(行为x 列为y)
{
    COORD pos;
    pos.X = 2 * y;
    pos.Y = x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void begin() {
    system("cls");
    color(11); cout << "       ★";
    color(10); cout << "吃豆人";
    color(11); cout << "★\n\n";
    color(7);
    cout << "     请将窗口开至";
    color(11); cout << "全屏" << endl;
    color(7); cout << "  正在初始化,请耐心等待";
    for (int i = 0; i <= nn; i++)
        for (int j = 1; j <= nn; j++)
            dis[i][j] = 900;
    for (int i = 0; i <= nn; i++) {
        for (int j = 0; j <= 3; j++) {
            if (i + fx[j] >= 0 && i + fx[j] <= nn) {
                int k = i + fx[j], xx = k / 27, yy = k % 27, kk;
                if (changdi[i / 27][i % 27] && changdi[xx][yy]) dis[i][k] = kk = 1;
            }
        }
    }
    for (int k = 0; k <= nn; k++)if (changdi[k]) {
        for (int i = 0; i <= nn; i++)if (changdi[i])
            for (int j = 0; j <= nn; j++)if (changdi[j])
                if (dis[i][j] > dis[i][k] + dis[k][j])
                    dis[i][j] = dis[i][k] + dis[k][j];
        if (k % 80 == 0) { color(13); gotoxy(3, 12); cout << "│"; }
        if (k % 80 == 20) { color(13); gotoxy(3, 12); cout << "╱"; }
        if (k % 80 == 40) { color(13); gotoxy(3, 12); cout << "─"; }
        if (k % 80 == 60) { color(13); gotoxy(3, 12); cout << "╲"; }
        if (k % 60 == 0) { color(11); gotoxy(5, k / 60); cout << "●"; }
    }
  
    cout << "游戏操作如下:";
}
  
void shuru() {
    char ch;
    cout << "请在输入完成后点击回车";
    cin >> ch;
    if ((ch == '1') | (ch == 'j'))
        if ((changdi[xx + fxfx[0][0]][yy + fxfx[0][1]] == 1) | (changdi[xx + fxfx[0][0]][yy + fxfx[0][1]] == 2)) fangx = nextfx = 0;
        else nextfx = 0;
    else if ((ch == '2') | (ch == 'k'))
        if ((changdi[xx + fxfx[1][0]][yy + fxfx[1][1]] == 1) | (changdi[xx + fxfx[1][0]][yy + fxfx[1][1]] == 2)) fangx = nextfx = 1;
        else nextfx = 1;
    else if ((ch == '3') | (ch == 'l'))
        if ((changdi[xx + fxfx[2][0]][yy + fxfx[2][1]] == 1) | (changdi[xx + fxfx[2][0]][yy + fxfx[2][1]] == 2)) fangx = nextfx = 2;
        else nextfx = 2;
    else if ((ch == '5') | (ch == 'i'))
        if ((changdi[xx + fxfx[3][0]][yy + fxfx[3][1]] == 1) | (changdi[xx + fxfx[3][0]][yy + fxfx[3][1]] == 2)) fangx = nextfx = 3;
        else nextfx = 3;
    else if ((ch == '0') | (ch == 's')) stopped = (stopped + 1) % 2;
    else if ((ch == '4') | (ch == 'a')) t1++;
    else if ((ch == '7') | (ch == 'q')) t2++;
    else if (((ch == '6') | (ch == 'd')) && t1 - 1 > 0) t1--;
    else if (((ch == '9') | (ch == 'e')) && t2 - 1 > 0) t2--;
    else if (ch == 'g') dali = (dali + 1) % 2;
}
  
void reset() {
    system("cls"); color(7);
    gotoxy(2, 30); cout << "控制方向:I/J/K/L";
    gotoxy(4, 30); cout << "你的速度:4/6";
    gotoxy(6, 30); cout << "怪物速度:7/9";
    xx = 22; yy = 13;
    xx1 = xx2 = xx3 = xx4 = 14;
    yy5 = 11;    yy2 = 12;    yy3 = 14;    yy4 = 15;
    now = 607;    now1 = 389;    now2 = 390;    now3 = 392;   now4 = 393;
    for (int k = 0; k <= nn; k++) {
        int i = k / 27, j = k % 27;
        gotoxy(i, j);
        if (changdi[i][j] == 1) { color(7); cout << "·"; }
        else if (!changdi[i][j]) { color(1); cout << "■"; }
        if (j == 26) { gotoxy(i, 27); color(7); cout << i; }
    }
    gotoxy(0, 0);
    gotoxy(xx, yy); color(14); cout << "●";
    gotoxy(xx1, yy5); color(4); cout << "◆";
    gotoxy(xx2, yy2); color(5); cout << "◆";
    gotoxy(xx3, yy3); color(3); cout << "◆";
    gotoxy(xx4, yy4); color(2); cout << "◆";
    fangx = 0; T1 = T2 = guaitimer = 0; t1 = 75; t2 = 100;
    stopped = 0; fenshu = 0; guozi = 237;
    gg1 = gg2 = gg3 = gg4 = 0; dali = 0;
    gotoxy(14, 30);
    cout << "          ";
}
  
void move1() {
    int xxx, yyy;
    xxx = xx + fxfx[nextfx][0]; yyy = yy + fxfx[nextfx][1];
    if (changdi[xxx][yyy]) {
        if (changdi[xxx][yyy] == 1) { fenshu += 1; changdi[xxx][yyy] = 2; }
        color(14);
        gotoxy(xx, yy); printf("  ");
        gotoxy(xxx, yyy); if (!dali) printf("◎"); else printf("☆");
        now = xx * 27 + yy; xx = xxx; yy = yyy;
        fangx = nextfx;
    }
    else {
        if (xx == 13 && yy == 0 && fangx == 0) { xxx = xx; yyy = 26; }
        else if (xx == 13 && yy == 26 && fangx == 2) { xxx = xx; yyy = 0; }
        else { xxx = xx + fxfx[fangx][0]; yyy = yy + fxfx[fangx][1]; }
        if (changdi[xxx][yyy]) {
            if (changdi[xxx][yyy] == 1) { fenshu += 1; changdi[xxx][yyy] = 2; }
            color(14);
            gotoxy(xx, yy); cout << "  ";
            gotoxy(xxx, yyy);
            if (!dali) cout << "◎";
            else cout << "☆";
            now = xx * 27 + yy; xx = xxx; yy = yyy;
        }
    }
    color(7);
}
  
void move2() {
    int haha, minhaha, xxx, yyy, chi = 0;
    if (gg1) {
        minhaha = 2147483647;
        if ((now1 % 27 == 0) | (now1 % 27 == 26)) haha = last1;
        else if (!dali) {
            for (int i = 0; i <= 3; i++)
                if (changdi[(now1 + fx[i]) / 27][(now1 + fx[i]) % 27] && i != last1 && minhaha > dis[now1 + fx[i]][now])
                {
                    minhaha = dis[now1 + fx[i]][now]; haha = i;
                }
        }
        else {
            minhaha = -minhaha;
            for (int i = 0; i <= 3; i++)
                if (changdi[(now1 + fx[i]) / 27][(now1 + fx[i]) % 27] && i != last1 && minhaha < dis[now1 + fx[i]][now])
                {
                    minhaha = dis[now1 + fx[i]][now]; haha = i;
                }
        }
        xxx = now1 / 27; yyy = now1 % 27; gotoxy(xxx, yyy);
        if (changdi[xxx][yyy] == 1) cout << "·";
        else cout << "  ";
        now1 += fx[haha]; last1 = (haha + 2) % 4;
        xxx = now1 / 27; yyy = now1 % 27; gotoxy(xxx, yyy);
        color(4); cout << "◆";
        color(7);
        if (xxx == xx && yyy == yy) {
            if (!dali) chi += 1;
            else {
                guozi += 50;
                fenshu += 50;
                last1 = 0;
                gotoxy(now1 / 27, now1 % 27);
                if (changdi[now1 / 27][now1 % 27] == 1) printf("·"); else printf("  ");
                now1 = 389;
            }
        }
    }
    if (gg2) {
        int k;
        minhaha = 2147483647;
        if ((fangx == 0) | (fangx == 2)) {
            k = yy + (fxfx[fangx][1]) * 3;
            while ((k > 25) | !changdi[xx][k]) k--;
            while ((k < 1) | !changdi[xx][k]) k++;
        }
        else {
            k = xx + (fxfx[fangx][0]) * 3;
            while ((k > 28) | !changdi[k][yy]) k--;
            while ((k < 1) | !changdi[k][yy]) k++;
        }
        if ((fangx == 0) | (fangx == 2)) k = xx * 27 + k; else k = k * 27 + yy;
  
        if ((now2 % 27 == 0) | (now2 % 27 == 26)) haha = last2;
        else if (!dali)
            for (int i = 0; i <= 3; i++) {
                if (changdi[(now2 + fx[i]) / 27][(now2 + fx[i]) % 27] && i != last2 && minhaha > dis[now2 + fx[i]][k])
                {
                    minhaha = dis[now2 + fx[i]][k]; haha = i;
                }
            }
        else {
            minhaha = -minhaha;
            for (int i = 0; i <= 3; i++) {
                if (changdi[(now2 + fx[i]) / 27][(now2 + fx[i]) % 27] && i != last2 && minhaha < dis[now2 + fx[i]][k])
                {
                    minhaha = dis[now2 + fx[i]][k]; haha = i;
                }
            }
        }
  
        xxx = now2 / 27; yyy = now2 % 27; gotoxy(xxx, yyy);
        if (changdi[xxx][yyy] == 1) cout << "·";
        else cout << "  ";
        now2 += fx[haha]; last2 = (haha + 2) % 4; gotoxy(18, 30);
        xxx = now2 / 27; yyy = now2 % 27; gotoxy(xxx, yyy); color(5); cout << "◆";
        color(7);
        if (xxx == xx && yyy == yy) {
            if (!dali) chi += 1;
            else {
                guozi += 50;
                fenshu += 50;
                last2 = 0;
                gotoxy(now2 / 27, now2 % 27);
                if (changdi[now2 / 27][now2 % 27] == 1) cout << "·"; else cout << "       ";
                now2 = 390;
            }
        }
    }
    if (gg3) {
        int k;
        minhaha = 2147483647;
        if ((fangx == 0) | (fangx == 2)) {
            k = yy + (fxfx[(fangx + 1) % 4][1]) * 3;
            while ((k > 25) | !changdi[xx][k]) k--;
            while ((k < 1) | !changdi[xx][k]) k++;
        }
        else {
            k = xx + (fxfx[(fangx + 1) % 4][0]) * 3;
            while ((k > 28) | !changdi[k][yy]) k--;
            while ((k < 1) | !changdi[k][yy]) k++;
        }
        if ((fangx == 0) | (fangx == 2)) k = xx * 27 + k; else k = k * 27 + yy;
  
        if ((now3 % 27 == 0) | (now3 % 27 == 26)) haha = last3;
        else if (!dali)
            for (int i = 0; i <= 3; i++) {
                if (changdi[(now3 + fx[i]) / 27][(now3 + fx[i]) % 27] && i != last3 && minhaha > dis[now3 + fx[i]][k])
                {
                    minhaha = dis[now3 + fx[i]][k]; haha = i;
                }
            }
        else {
            minhaha = -minhaha;
            for (int i = 0; i <= 3; i++) {
                if (changdi[(now3 + fx[i]) / 27][(now3 + fx[i]) % 27] && i != last3 && minhaha < dis[now3 + fx[i]][k])
                {
                    minhaha = dis[now3 + fx[i]][k]; haha = i;
                }
            }
        }
  
        xxx = now3 / 27; yyy = now3 % 27; gotoxy(xxx, yyy);
        if (changdi[xxx][yyy] == 1) cout << "·"; else cout << "          ";
        now3 += fx[haha]; last3 = (haha + 2) % 4; gotoxy(18, 30);
        xxx = now3 / 27; yyy = now3 % 27;
        gotoxy(xxx, yyy); color(3); cout << "◆";
        color(7);
        if (xxx == xx && yyy == yy) {
            if (!dali) chi += 1;
            else {
                guozi += 50;
                fenshu += 50;
                last3 = 0;
                gotoxy(now3 / 27, now3 % 27);
                if (changdi[now3 / 27][now3 % 27] == 1) printf("·"); else printf("  ");
                now3 = 341;
            }
        }
    }
    if (chi) beichi++;
}
void ChiDouRen()
{
    Q2 = &beichi;
    system("color 07");   //设置背景色为黑色,字体颜色为黑色
    cout << "***********************************************    吃     豆     人   **************************************************" << endl;
    cout << " 游戏说明:" << endl;
    cout << "    ① 玩家通过按键I、J、K、L配合回车键进行移动,J为向左移动,K为向下移动,L为向右移动,I为向上移动;" << endl;
    cout << "    ② 游戏胜利条件为不被怪物吃掉并且吃满35个豆子;" << endl;
    cout << "    ③ 被怪物吃掉后游戏不会终止,但是将失去游戏奖励,判定为游戏失败。" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    system("cls");
    begin();
    int jixu = 1;
    reset();
    string bb[4] = { "●","①","②","③" }; color(7);
    gotoxy(12, 12); cout << "进入倒计时开始!";
    color(12);
    for (int i = 3; i >= 0; i--) { if (i == 0) color(11); gotoxy(13, 13); cout << bb[i]; Sleep(1000); }
    gotoxy(12, 12); cout << "      ";
    gotoxy(13, 13); cout << " ";
    color(7);
    while (!ff) {
        Sleep(1);
        gotoxy(10, 30); cout << "你最后的得分是:" << fenshu;//gotoxy(行,列)坐标
        gotoxy(8, 30); cout << "怪物速度: " << 300 - t2;
        gotoxy(9, 30); cout << "你的速度: " << 300 - t1;
        gotoxy(15, 30); cout << "被吃次数:" << beichi;
        if (_kbhit()) shuru();//这个这个
        if (stopped) continue;
        T1 = (T1 + 1) % t1; T2 = (T2 + 1) % t2;
        if ((T1 % t1 == 0 && now + fx[fangx] > 0) && (now + fx[fangx] < nn)) move1();
        if (T2 % t2 == 0) {
            if (guaitimer <= 8) {
                if (guaitimer == 0) gg1 = 1;
                if (guaitimer == 8) gg2 = 1;
                guaitimer++;
            }
            if (!gg3 && fenshu >= 30) gg3 = 1;
            move2();
        }
        if (fenshu == guozi || fenshu == 35)ff = 2;
    }
    if (ff == 2) {
        Sleep(2000);
        system("cls");
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t   恭喜您吃完了35个豆子!!!" << endl;
        Sleep(2000);
        cout << "\t\t\t\t\t\t    您一共被怪物吃掉了" << beichi << " 次";
        Sleep(2000);
    }
}
void setdata()   //数据的初始化函数
{
    snake_x[0] = high / 2; snake_y[0] = width / 3;   //初始化蛇头,在地图内的位置随意
    snake_x[1] = high / 2; snake_y[1] = width / 3 + 1;  //初始化蛇身
    snake_length = 2;   //蛇的原始尺寸(一格头一格身子)
    food_x = high / 3, food_y = width / 3;  //初始化食物的位置,在地图内位置随意
    SCORE = 0;
    int i, j;
    Map[snake_x[0]][snake_y[0]] = 4;  //蛇头
    Map[snake_x[1]][snake_y[1]] = 1;  //蛇身
    Map[food_x][food_y] = 2;   //食物
    for (i = 0; i < high; i++)   //墙
        for (j = 0; j < width; j++)
            if (i == 0 || j == 0 || i == high - 1 || j == width - 1)
                Map[i][j] = 3;
}
void Gotoxy(int x, int y)   //画面打印
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}
void show()
{
    Gotoxy(0, 0);
    int i, j;
    for (i = 0; i < high; i++)
    {
        for (j = 0; j < width; j++)
        {
            if (Map[i][j] == 0)
                cout << " ";
            else if (Map[i][j] == 1)
                cout << "+";
            else if (Map[i][j] == 2)
                cout << "@";
            else if (Map[i][j] == 3)
                cout << "*";
            else if (Map[i][j] == 4)
                cout << "0";
        }
        printf("\n");
    }
    printf("得分:%d", SCORE);
}
  
int updatewithoutinput()   //与输入无关的更新
{
  
    int i;
    if (snake_x[0] == food_x && snake_y[0] == food_y)
    {
        SCORE++;
        srand((unsigned)time(NULL));  //srand和rand函数连用产生随机数,一般以时间作为产生随机数的种子
        food_x = rand() % (high - 3) + 1;
        food_y = rand() % (width - 3) + 1;
        Map[food_x][food_y] = 2;
        snake_length++;
    }
    if (snake_x[0] == 0 || snake_x[0] == high - 1 || snake_y[0] == 0 || snake_y[0] == width - 1)  //碰墙了
    {
        cout << "游戏结束!" << endl;
        Sleep(2000);
        return 1;
    }
    for (i = 1; i < snake_length; i++)  //碰到自己了 ,遍历蛇身找是否和蛇头重复
        if (snake_x[0] == snake_x[i] && snake_y[0] == snake_y[i])
        {
            cout << "游戏结束" << endl;
            Sleep(2000);
            return 1;
        }
}
int updatewithinput()
{
    int i = 1;
    if (kbhit())
        input = getch();
  
    if (input != '\0'//input!='\0'(空)表示当有输入的时候开始更新画面,这是游戏开始的条件
    {
        if (input == 'w' || input == 'a' || input == 's' || input == 'd')
        {
            if (primeinput == 'w' && input == 's' || primeinput == 's' && input == 'w' || primeinput == 'a' && input == 'd' || primeinput == 'd' && input == 'a')
            {
                system("cls");
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t    世上没有回头路!!!" << endl;
                Sleep(2000);
                Death++;
                return 1;
            }
            else
                primeinput = input;
        }
        else if (primeinput == '.')
            primeinput = 'w';
        else if (input == 'p')
        {
            while (1)
            {
                char op;
                op = getch();
                if (op == 'p')
                {
                    input = '.';
                    break;
                }
            }
        }
        else if (input == '+')
        {
            if (op >= 50)  //表示最快速度为25 ms刷新一次
                op = op / 2;
        }
        else if (input == '-')
        {
            if (op <= 1000) //表示最慢速度为 2000 ms刷新一次
                op = op * 2;
        }
        Map[snake_x[snake_length - 1]][snake_y[snake_length - 1]] = 0;//蛇走过一格,蛇尾处变为空格
        for (i = snake_length - 1; i > 0; i--)
        {
            snake_x[i] = snake_x[i - 1]; //走过一格后蛇身的坐标覆盖前面的坐标 (从后往前覆盖,蛇头也会被蛇身覆盖)
            snake_y[i] = snake_y[i - 1];
            Map[snake_x[i]][snake_y[i]] = 1;
        }
  
    }
    if (primeinput == 'w')
        snake_x[0]--;
    else if (primeinput == 's')
        snake_x[0]++;
    else if (primeinput == 'a')
        snake_y[0]--;
    else if (primeinput == 'd')
        snake_y[0]++;
    Map[snake_x[0]][snake_y[0]] = 4;  //蛇头的坐标覆盖前面的坐标
}
void tanchishe()   //起始函数
{
    cout << "************************************************    贪    吃    蛇    **************************************************" << endl;
    cout << " 游戏说明:" << endl;
    cout << "    ① 玩家通过按键w、a、s、d控制蛇的移动,w为向上移动,s为向下移动,a为向左移动,d为向右移动;" << endl;
    cout << "    ② 每吃到一次果实,蛇身长度+1,得分+1;" << endl;
    cout << "    ③ 撞到墙壁,即蛇死亡,来到结算界面;" << endl;
    cout << "    ④ 单局得分超过15分,则为游戏胜利,可获得20枚硬币奖励!" << endl;
    cout << " 警告:请勿自噬(蛇头反向蛇身移动,撞向蛇身不算),自噬则蛇永久死亡,无法再次游玩游戏!!!" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    system("cls");
    setdata();//数据初始化
    Q3 = &SCORE;
    while (1)
    {
        show();  //画面打印
        Sleep(op);
        int a = updatewithoutinput();   //与输入无关的更新
        int b = updatewithinput();      //与输入有关的更新
        if (a == 1 || b == 1)
        {
            break;
        }
    }
    return;
}
void caishuzi()
{
    cout << "***********************************************    猜     数     字    *************************************************" << endl;
    cout << " 游戏说明:" << endl;
    cout << "    ① 游戏会出现一个1~100的随机隐藏整数,玩家需要根据技巧猜测数字;" << endl;
    cout << "    ② 游戏很简单,但是如果加上猜测的次数限定呢?" << endl;
    cout << "    ③ 若猜测次数不超过8次,则游戏胜利,玩家可获得20硬币的奖励,否则即为失败;" << endl;
    cout << "    ④ 若玩家运气好到爆炸,一次就猜中,则视为中了彩票,将获得200硬币的奖励!!!" << endl;
    cout << " 注:若一直猜不正确,可按888退出游戏" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    system("cls");   //清屏
    Guesstimes = 0;   //记录猜测次数,方便程序判定游戏是否胜利
    srand((unsigned)time(NULL));   //依据时间的变化产生不同的随机数种子
    int NUM = rand() % 100 + 1;   //随机数发生器,随机生成1~100的整型数字
    while (1)   //永真循环
    {
        cout << "***********************************************    猜     数     字    *************************************************";
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t请输入您猜测的数字(整数):";
        int Value = Check(0);   //规范用户的输入,保证输入的为数字
        if (Value == 888)
        {
            system("cls");
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t   您已强制退出!!!" << endl;
            Sleep(1000);
            system("cls");
            Guesstimes = 999;
            break;
        }
        if (Value > NUM)
        {
            system("cls");
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t   猜测过大!!!" << endl;
            Sleep(1000);
            system("cls");
            Guesstimes++;
            continue;
        }
        else if (Value < NUM)
        {
            system("cls");
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t   猜测过小!!!" << endl;
            Sleep(1000);
            system("cls");
            Guesstimes++;
            continue;
        }
        else if (Value == NUM)
        {
            system("cls");
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t   恭喜您,猜对啦!!!" << endl;
            Sleep(2000);
            system("cls");
            Guesstimes++;
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t   您猜测的次数为:" << Guesstimes << endl;
            Sleep(2000);
            system("cls");
            break;
        }
    }
    return;
}
int LianAiCeShi()
{
    int N, SUMS = 0;
    cout << "*****************************************   恋   爱   指   数   测   试   器   *****************************************" << endl;
    cout << " 测试说明:" << endl;
    cout << "    ① 您需要对接下来的问题进行如实回答,你的心越纯,测试的结果越正确;" << endl;
    cout << "    ② 下列问题如果是则输入2,如果不是则输入1,一点也没感觉则输入0;" << endl;
    cout << "    ③ 加油,面对你自己!*-o-*" << endl;
    cout << " 注:测试共包括10道题,一旦进入测试不可退出" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    system("cls");
    cout << "进入测试请按3,退出测试请按4。" << endl;
Enter:
    cout << "请给出你的选择:";
    int choose = Check(0);
    if (choose == 3) {
        system("cls");   //清屏
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t      开始测试!!!" << endl;
        Sleep(2000);
        system("cls");
    }
    else if (choose == 4) {
        system("cls");   //清屏
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t    您已退出测试!!!" << endl;
        Sleep(2000);
        system("cls");
        return 0;
    }
    else {
        system("cls");   //清屏
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t无效输入,请重新选择!!!" << endl;
        Sleep(2000);
        system("cls");
        goto Enter;
    }
    cout << "question one:" << "你是否面对异性时会心跳加速?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question two:" << "你是否看到异性被欺负时会很愤怒?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question three:" << "你是否惧怕见到异性的家长?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question four:" << "你是否经常刷一位异性的社交平台?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question five:" << "想不想和Ta用情侣头像?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question six:" << "和Ta邂逅过吗?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question seven:" << "吃过同一个饭碗里的东西吗?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question eight:" << "有过在梦里与Ta相遇吗?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question nine:" << "有为了等Ta一个人站在风雨中吗?" << endl;
    N = Check(1);
    SUMS += N;
    cout << endl;
    cout << "question ten:" << "想摸Ta的头发,牵TA的手吗?" << endl;
    N = Check(1);
    SUMS += N;
    system("cls");   //清屏
    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    cout << "\t\t\t\t\t\t  正在测评中,请稍等......" << endl;
    Sleep(3000);
    system("cls");
    if (SUMS >= 16 && SUMS <= 20)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t你的恋爱指数为:A。你是一个深深爱着Ta的人,你往往会守着这份爱走下去^-^。" << endl;
        Sleep(5000);
        system("cls");
    }
    if (SUMS <= 15 && SUMS >= 12)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t你的恋爱指数为:B。你是一个矛盾却又不失爱意的人,你的爱往往一波三折!-!。" << endl;
        Sleep(5000);
        system("cls");
    }
    if (SUMS <= 11 && SUMS >= 7)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t    你的恋爱指数为:C。你是一个有点心思的人,你想表白,却又惧怕现实,你仍须努力o-o。" << endl;
        Sleep(5000);
        system("cls");
    }
    if (SUMS <= 6 && SUMS >= 0)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t你的恋爱指数为:D。你是一个无暇无垢,不食人间烟火的人,想一路踏歌,但道路上仍需佳人陪伴+-+。" << endl;
        Sleep(5000);
        system("cls");
    }
    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    cout << "\t       人生在世,恍如昨世,孤独的身影终难走远,你的那个Ta就在不远方,就如漫天繁星,总有一颗属于你!" << endl;
    Sleep(2000);
    cout << "\t\t\t\t\t      快抓紧你身边的那个Ta ^-^oooooo" << endl << endl << endl;
    Sleep(3000);
    system("pause");
    peo[User].award++;
    return 1;
}
void Gambler()
{
    int GameCount = 0;//游戏次数
    int dice1, dice2, dice3, sum;
    int key1 = 0;   //进入赌局的钥匙
    srand((unsigned int)time(NULL));   //依据时间生成随机数的种子
    cout << "***********************************************    我   是   赌   神   *************************************************" << endl;
    cout << " 赌场规则:" << endl;
    cout << "    ① 玩家必须缴纳5枚硬币来获取赌场通行证,并确保自己仍有剩余的硬币参与下注;" << endl;
    cout << "    ② 进入赌场后,玩家用硬币下注,随后会掷出三枚骰子,玩家需猜测三枚骰子之和为单数还是双数;" << endl;
    cout << "    ③ 猜中即可获得双倍奖励,否则将扣除双倍的硬币;" << endl;
    cout << "    ④ 若三枚骰子大小相同,则为大满贯,即无论您下的注是否猜中,您都将获得三倍奖励。" << endl;
    cout << " 警告:进入赌场的玩家至少需进行5轮赌注,若强制退出,则视为违约,将扣除您硬币总数的一半" << endl << endl << endl;
    Sleep(3000);
    system("pause");//暂停游戏并熄屏
    system("cls");
    cout << "***********************************************    我   是   赌   神   *************************************************";
    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    cout << "\t\t\t\t\t      +--------------------------+" << endl;
    cout << "\t\t\t\t\t      |  是否进入赌场?          |" << endl;
    cout << "\t\t\t\t\t      |  1.进入(需缴纳5枚硬币) | " << endl;
    cout << "\t\t\t\t\t      |  2.退出赌场              |" << endl;
    cout << "\t\t\t\t\t      +--------------------------+" << endl;
    cout << "请输入数字实现对应的功能:";
    int k = Check(2);   //只返回1、2(是否进入赌场)
    system("cls");   //清屏
    if (k == 1 && peo[User].coin > 5)
    {
        peo[User].coin -= 5;   //扣除5枚硬币作为入场券的费用
        key1 = 1;   //赌场开门
    }
    else if (k == 2)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t     退出成功!!!" << endl;
        Sleep(3000);   //延时3秒
        return;
    }
    else if (peo[User].coin <= 5)
    {
        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
        cout << "\t\t\t\t\t\t您的硬币不足,已强制退出" << endl;
        Sleep(3000);   //延时3秒
        return;
    }
    if (key1 == 1)
    {
        while (1)
        {
            if (peo[User].coin <= 0)   //判断硬币数量是否还能继续游戏
            {
                system("cls");   //清屏
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t  您倾家荡产,已强制退出" << endl;
                Sleep(3000);   //延时3秒
                return;
            }
            int judge = 0;
            cout << "***********************************************    我   是   赌   神   *************************************************" << endl << endl;
            cout << "\t\t您的硬币数量:" << peo[User].coin << "\t\t\t\t\t\t     当前下注次数:" << GameCount << endl << endl;
            cout << "1.开始" << endl;
            cout << "2.退出(下注未满5次会扣除您硬币总数的一半)" << endl;
            cout << "请选择:";
            int Choice = Check(2);   //只返回1、2(是否开始游戏)
            if (Choice == 1)
            {
            as:             cout << "请输入您要压入硬币的数量(整数):";
                int cn = Check(0);   //规范输入 防止系统崩溃
                cout << endl;
                if (cn > peo[User].coin)  //下注数大于硬币所有数
                {
                    cout << "您的硬币不足!!!" << endl;
                    goto as;
                }
                cout << endl;
                cout << "1.单数" << endl;
                cout << "0.双数" << endl;
                cout << "请下注:";
                int Bat = Check(4);     //只返回1、0(选择压单或双数)
                system("cls");
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t      赌局开始!!!" << endl;
                Sleep(2000);
                system("cls");
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t    第" << ++GameCount << "轮骰子开始掷!" << endl;
                Sleep(2000);
                system("cls");
                dice1 = 1 + rand() % 6;
                dice2 = 1 + rand() % 6;
                dice3 = 1 + rand() % 6;   //随机扔三个骰子
                sum = dice1 + dice2 + dice3;
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t      " << dice1;
                Sleep(1000);
                system("cls");
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t      " << dice1 << "     " << dice2;
                Sleep(1000);
                system("cls");
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t      " << dice1 << "     " << dice2 << "     " << dice3;
                Sleep(2000);
                system("cls");
                cout << "***********************************************    我   是   赌   神   *************************************************";
                cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                cout << "\t\t\t\t\t\t    骰子大小之和为: " << sum << endl;
                Sleep(2000);
                system("cls");
                if (dice1 == dice2 && dice2 == dice3)    //判断是否三个骰子数都相同 (即大满贯)
                {
                    cout << "***********************************************    我   是   赌   神   *************************************************";
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t大满贯,获得3倍奖励!!!" << endl;
                    peo[User].coin += 3 * cn;
                    judge = 1;
                    Sleep(3000);
                    system("cls");
                    continue;
                }
                if (sum % 2 == Bat)
                {
                    cout << "***********************************************    我   是   赌   神   *************************************************";
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t  猜测正确,双倍奖励!!!" << endl;
                    peo[User].coin += 2 * cn;
                    Sleep(3000);
                    system("cls");
                    continue;
                }
                else if (sum % 2 != Bat)
                {
                    cout << "***********************************************    我   是   赌   神   *************************************************";
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t   猜测错误,硬币扣除" << endl;
                    peo[User].coin -= 2 * cn;
                    Sleep(3000);
                    system("cls");   //清屏
                    continue;
                }
            }      //押单则bat=1,押双数则bat=0
            else if (Choice == 2)   //选择退出游戏
            {
                if (GameCount < 5)
                {
                    system("cls");   //清屏
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t 警告:您游戏未满5次,已扣除硬币总数的一半!!!" << endl;
                    Sleep(3000);   //延时3秒
                    peo[User].coin /= 2;  //硬币扣除硬币总数一半
                    return;
                }
                else
                {
                    system("cls");   //清屏
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t     您全身而退!!!" << endl;
                    Sleep(3000);   //延时3秒
                    return;
                }
            }
        }
    }
}
int main()
{
    system("color F0");   //设置背景色为白色,字体颜色为黑色
    HideCursor();   //影藏光标
    cout << "\t\t\t\t\t\t\n\n\n\n          宗然游戏盒   Version 1.0.0 \n\n\t开源作者:宗然" << endl;
    Sleep(3000);   //延时3秒
    system("cls");   //清屏
    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
    cout << "\t\t\t\t\t 抵 制 不 良 游 戏 , 拒 绝 盗 版 游 戏 。" << endl;
    cout << "\t\t\t\t\t 注 意 自 我 保 护 , 谨 防 受 骗 上 当 。" << endl;
    cout << "\t\t\t\t\t 适 度 游 戏 益 脑 , 沉 迷 游 戏 伤 身 。" << endl;
    cout << "\t\t\t\t\t 合 理 安 排 时 间 , 享 受 健 康 生 活 。" << endl;
    Sleep(6000);   //延时6秒
    system("cls");   //清屏
    while (1)
    {
        while (1)
        {
MessageBox(NULL,"您好,欢迎使用宗然游戏盒,以下是推广链接\nZongranGameBox官方qq群:677548883 开源首发群\n建议加群(如有新版本,将发布至此群)\n如传播或倒卖此免费资源可耻!\n只有从群里或网站下载的才算正常渠道!!!","宗然游戏盒 v 1 . 0 . 0",MB_YESNO|MB_ICONASTERISK);
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t  宗然游戏盒   Version 1.0.0\n\n\t\t\t\t\t\t 官方qq群:677548883\n\n\t\t\t\t\t\t  全服在线人数:1\n\n\t\t\t\t\t\t\tby:宗然\n" << endl;
            cout << "\t\t\t\t\t\t  +--------------------+" << endl;
            cout << "\t\t\t\t\t\t  |  Hi 欢迎回来!    |" << endl;
            cout << "\t\t\t\t\t\t  |  1.登录           | " << endl;
            cout << "\t\t\t\t\t\t  |  2.注册           |" << endl;
            cout << "\t\t\t\t\t\t  |  0.忍痛退出程序   |" << endl;
            cout << "\t\t\t\t\t\t  +--------------------+\n\n" << endl;
            cout << "开启你的旅程吧:";
            float k = Check(1);   //只返回1、2、0
            if (k == 1)   //登录
            {
                system("cls");   //清屏
                int a = SignIn();
                if (a == 1)   //选择直接进入程序
                {
                    Key = 1;   //钥匙开锁,可进入主程序
                    system("cls");   //清屏
                    break;
                }
                else
                {
                    continue;
                }
            }
            else if (k == 2)   //注册
            {
                system("cls");   //清屏
                int b = Register();
                if (b == 1)   //选择直接进入程序
                {
                    Key = 1;   //钥匙开锁,可进入主程序
                    system("cls");   //清屏
                    break;
                }
                else if (b == 2)   //选择不直接进入程序
                {
                    system("cls");   //清屏
                    continue;
                }
            }
            else if (k == 0)      //退出程序
            {
                cout << "\n呜呜呜!你真的要退出了吗?" << endl;
                cout << "1.强忍离去" << endl;
                cout << "2.我点错了!继续使用!" << endl;
                float a = Check(2);
                cout << endl << endl;
                if (a == 1)
                {
                    break;
                }
                else if (a == 2)
                {
                    system("cls");   //清屏
                    continue;
                }
            }
        }
        if (Key == 1)
        {
            Progress();   //进度条
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
            cout << "\t\t\t\t\t\t    你好!" << peo[User].user << endl;
            cout << "\t\t\t\t\t\t    正在加载游戏菜单       by:宗然" << endl;
            Sleep(3000);   //延时3秒
            system("cls");   //清屏
            while (1)
            {
                system("color F0");   //设置背景色为白色,字体颜色为黑色
                cout << "*****************************************************  宗然游戏盒  *****************************************************" << endl;
                cout << "                                             Version 1.0.0      by:宗然\n" << endl;
                cout << "                   玩家:" << peo[User].user << setw(15) << "硬币:" << peo[User].coin <<"                      使用系统:windows\n\n官方qq群:677548883"<<endl;
                cout << "                                                  +------------------+" << endl;
                cout << "                                                  |    1.雷霆战机    |" << endl;
                cout << "                                                  |    2.愤怒吃豆人  |" << endl;
                cout << "                                                  |    3.快乐贪吃蛇  |" << endl;
                cout << "                                                  |    4.经典猜数字  |" << endl;
                cout << "                                                  |    5.恋爱测试    |" << endl;
                cout << "                                                  |    6.澳门赌场    |" << endl;
                cout << "                                                  |                  |" << endl;
                cout << "                                                  |                  |" << endl;
                cout << "                                                  |    9.返回主界面  |" << endl;
                cout << "                                                  |    0.退出程序    |" << endl;
                cout << "                                                  +------------------+\n" << endl;
                cout << "请输入您要游玩的游戏编号:";
                double n = Check(0);
                cout << endl << endl;
                if (n == 1)
                {
                    system("cls");   //清屏
                    PlaneWar();
                    system("cls");   //清屏
                    if (*Q1 > 200)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     游戏胜利,硬币+30" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        peo[User].coin += 30;
                        continue;
                    }
                    else
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        continue;
                    }
                }
                else if (n == 2)
                {
                    system("cls");   //清屏
                    ChiDouRen();
                    system("cls");   //清屏
                    if (*Q2 == 0)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     游戏胜利,硬币+10" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        peo[User].coin += 10;
                        continue;
                    }
                    else
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        continue;
                    }
                }
                else if (n == 3)
                {
                    system("cls");   //清屏
                    if (Death == 1)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t   蛇已死,自噬无法复活!!!" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                    }
                    else if (Death == 0)
                    {
                        tanchishe();
                        system("cls");   //清屏
                        if (*Q3 > 15)
                        {
                            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                            cout << "\t\t\t\t\t\t     游戏胜利,硬币+20" << endl;
                            Sleep(3000);
                            system("cls");   //清屏
                            peo[User].coin += 10;
                            continue;
                        }
                        else
                        {
                            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                            cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
                            Sleep(3000);
                            system("cls");   //清屏
                            continue;
                        }
                    }
                }
                else if (n == 4)
                {
                    system("cls");   //清屏
                    caishuzi();
                    system("cls");   //清屏
                    if (Guesstimes == 1)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t   您运气爆棚,硬币+200" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        peo[User].coin += 200;
                        continue;
                    }
                    else if (Guesstimes <= 8)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t    游戏胜利,硬币+20" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        peo[User].coin += 20;
                        continue;
                    }
                    else
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     游戏失败,继续加油" << endl;
                        Sleep(3000);
                        system("cls");   //清屏
                        continue;
                    }
                }
                else if (n == 5)
                {
                    system("cls");   //清屏
                    int GETG = LianAiCeShi();
                    system("cls");   //清屏
                    if (GETG == 1 && peo[User].award == 1)
                    {
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t    恋爱测试结束!!!" << endl;
                        Sleep(2000);
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t 哈哈!赠送您50硬币,祝您早日找到那个TA!!!" << endl;
                        Sleep(2000);
                        peo[User].coin += 50;
                        system("cls");   //清屏
                    }
                    continue;
                }
                else if (n == 6)
                {
                    system("cls");   //清屏
                    Gambler();
                    if (peo[User].coin < 0)
                    {
                        peo[User].coin = 0;   //硬币下限为0
                    }
                    system("cls");   //清屏
                    continue;
                }
                else if (n == 9)
                {
                    system("cls");   //清屏
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t      存档中......" << endl;
                    Sleep(2000);   //延时2秒
                    system("cls");   //清屏
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t\t      即将返回大厅" << endl;
                    Sleep(2000);   //延时2秒
                    system("cls");   //清屏
                    Key = 0;   //程序关锁
                    KeyOut = 1;   //钥匙开锁,退出登录
                    break;
                }
                else if (n == 0)
                {
                    cout << "呜呜,你真的要退出了吗?" << endl;
                    cout << "1.强忍离去" << endl;
                    cout << "2.继续使用" << endl;
                    float a = Check(2);
                    cout << endl << endl;
                    if (a == 1)
                    {
                        break;
                    }
                    else if (a == 2)
                    {
                        system("cls");   //清屏
                        continue;
                    }
                }
                else if (n == 12321)   //查看所有玩家的信息
                {
                    system("cls");   //清屏
                    cout << setw(10) << "序号" << setw(16) << "用户名" << setw(16) << "密码" << setw(10) << "硬币" << endl;
                    for (int i = 0; i < x; i++)
                    {
                        cout << setw(10) << peo[i].number << setw(16) << peo[i].user << setw(16) << peo[i].password << setw(10) << peo[i].coin << endl;
                    }
                    system("pause");
                    system("cls");   //清屏
                }
                else if (n == 12345)
                {
                    system("cls");   //清屏
                    cout << setw(10) << "编号" << setw(16) << "用户名" << setw(16) << "密码" << setw(10) << "硬币" << endl;
                    for (int i = 0; i < x; i++)
                    {
                        cout << setw(10) << peo[i].number << setw(16) << peo[i].user << setw(16) << peo[i].password << setw(10) << peo[i].coin << endl;
                    }
                    cout << endl << endl << "请输入要修改信息的玩家编号:";
                    int fo = Check(0) - 1;
                    cout << endl;
                    cout << "请输入要修改的信息:" << endl;
                    cout << "1.用户名" << endl;
                    cout << "2.密码" << endl;
                    cout << "3.硬币" << endl;
                    int ko = Check(3);
                    if (ko == 1)
                    {
                        cout << endl << "用户名修改为:";
                        char us1[1000];
                        cin.get();
                        cin.getline(us1, 1000);
                        strcpy(peo[fo].user, us1);
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
                        Sleep(2000);   //等待2秒
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
                    }
                    else if (ko == 2)
                    {
                        cout << endl << "密码修改为:";
                        char us2[1000];
                        cin.get();
                        cin.getline(us2, 1000);
                        strcpy(peo[fo].password, us2);
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
                        Sleep(2000);   //等待2秒
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
                    }
                    else if (ko == 3)
                    {
                        cout << endl << "硬币数量修改为:";
                        long long us3 = Check(0);
                        peo[fo].coin = us3;
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t   正在处理,请稍等......" << endl;
                        Sleep(2000);   //等待2秒
                        system("cls");   //清屏
                        cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                        cout << "\t\t\t\t\t\t     修改成功!!!" << endl;
                    }
                    Sleep(2000);
                    system("cls");   //清屏
                }
                else
                {
                    system("cls");   //清屏
                    cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl;
                    cout << "\t\t\t\t\t 抱歉,您输入的数字不在菜单中,请重新输入!!!" << endl;
                    Sleep(2000);
                    system("cls");   //清屏
                }
            }
        }
        if (KeyOut == 1)
        {
            KeyOut = 0;   //钥匙使用过后关锁,以便后续使用
            continue;
        }
        else if (KeyOut == 0)
        {
            system("cls");   //清屏
            cout << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << endl << "\t\t\t\t\t\t    亲爱的用户!期待您的下次游玩!\n\n\t\t\t\t\t\t    不要忘记作者宗然!" << endl;
            Sleep(3000);   //延时3秒
            break;
        }
    }
    return 0;
}

[代码运行效果截图]


硬核!!!dev c++做一个游戏盒子(共3000行代码!)

[源代码打包下载]




网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...