精华内容
下载资源
问答
  • 24个c++游戏源码

    2020-12-22 01:38:14
    24个c++游戏源码是网友分享的经典游戏源码,采用c++语言编写,对于学习c++的朋友很有帮助,可以帮助你提升编程语言能力!C++语言介绍C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据...

    24个c++游戏源码是网友分享的经典游戏源码,采用c++语言编写,对于学习c++的朋友很有帮助,可以帮助你提升编程语言能力!

    C++语言介绍

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

    c++适合做游戏吗

    C++有这悠久的历史,前人已经写了上千亿行代码库,软件行业有一个经验,能用就不要重写,小车不倒只管推。现在毕业生进入公司后,很少丛零开始写代码,大部分时间在维护旧代码,对大型代码的开发需求并不强烈。由于风险太大,除非有实力的公司,一般公司不会冒险从零开始写几千万行代码。一般是在开源代码上修修改改。

    很多实力的公司可以独立开发自己的库而对库的要求是性能好,因为调用库的代码很多,库被调用越多,性能改进的回报就越多.如果用C#开发,到后来会发现性能十分差,还不如从开始时就用C+ +,那样就没有编程语言性能差的借口了,只能从算法上找原因上。在性能上C+ +有优势,许多游戏公司自己开发图形图像库。 而且C#比较适合编写大型的程序,可以减少很多bug排查时间,主要的是C#除了快速开发,而且有些简单外,目前为止跨平台性依然不行,所以现在很多游戏开发商还是会选择C++。

    PC官方版

    安卓官方手机版

    IOS官方手机版

    展开全文
  • } cout你赢了"以下是全部的源代码 #include #include //用于调用getch() #include //用于调用隐藏光标,Sleep() using namespace std; char a[50][50]={"O#########", " #", "# # ######", "# # ####", "# # # ##...

    我们需要先输入头文件以及标准名字空间。

    #include<bits\stdc++.h>
    #include <windows.h>//用于调用getch() 
    #include <conio.h>//用于调用隐藏光标,Sleep()
    using namespace std;

    接着我们要定义一个二维的字符数组当做地图。

    char a[50][50]={"O#########",
    				"         #",
    				"# # ######",
    				"# #   ####",
    				"# # # ####",
    				"# #    ###",
    				"# #### ###",
    				"# #### ###",
    				"#  ###    ",
    				"##########"};
    /*
    char a是字符数组,由于比较大,因而在主函数外注明 
    */

    然后我们要编写初始界面(隐藏光标的函数我也先打出来了,光标若未隐藏会比较别扭)。

    	CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    	cout<<"w表示上,s表示下,a表示左,d表示右(注意小写)"<<endl;
    	cout<<"#表示墙壁,O表示玩家,$表示宝藏"<<endl;
    	Sleep(5000);//用于延时 
    	system("cls");//用于清屏 
    	/*
    	初始界面 
    	*/

    这段是隐藏光标的函数。

    	CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

    我们要定义初始位置及输出地图。

        int x=0,y=0;//初始位置定义 
    	char ch;
    	for(int i=0;i<=9;i++)
    		puts(a[i]);//循环输出地图

    接下来是走迷宫的过程。

    	while(1)//循环做出判断 
    	{
    		ch=getch();
            if(ch=='s')//下
            {
    			if(a[x+1][y]==' ')
                {
    				a[x][y]=' ';
                    x++;
                    a[x][y]='O';
                }
            }
            else if(ch=='w')//上
            {
    			if(a[x-1][y]==' ')
                {
    				a[x][y]=' ';
                    x--;
                    a[x][y]='O';
                }
            }
    		else if(ch=='a')//左
            {
    			if(a[x][y-1]==' ')
                {
    				a[x][y]=' ';
                    y--;
                    a[x][y]='O';
                }
            }
            else if(ch=='d')//右
            {
    			if(a[x][y+1]==' ')
                {
    				a[x][y]=' ';
                    y++;
                    a[x][y]='O';
                }
            }
            system("cls");
    		for(int i=0;i<=9;i++)
    			puts(a[i]);
            if(x==8 && y==9)
            	break;
    	}
    	cout<<"你赢了"<<endl;
    	Sleep(10000);

    以下是全部的源代码

    #include<bits\stdc++.h>
    #include <windows.h>//用于调用getch() 
    #include <conio.h>//用于调用隐藏光标,Sleep()
    using namespace std;
    char a[50][50]={"O#########",
    				"         #",
    				"# # ######",
    				"# #   ####",
    				"# # # ####",
    				"# #    ###",
    				"# #### ###",
    				"# #### ###",
    				"#  ###    ",
    				"##########"};
    /*
    char a是字符数组,由于比较大,因而在主函数外注明 
    */
    int main()
    {
    	CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    	cout<<"w表示上,s表示下,a表示左,d表示右(注意小写)"<<endl;
    	cout<<"#表示墙壁,O表示玩家,$表示宝藏"<<endl;
    	Sleep(5000);//用于延时 
    	system("cls");//用于清屏 
    	/*
    	初始界面 
    	*/
        int x=0,y=0;//初始位置定义 
    	char ch;
    	for(int i=0;i<=9;i++)
    		puts(a[i]);//循环输出地图 
    	while(1)//循环做出判断 
    	{
    		ch=getch();
            if(ch=='s')//下
            {
    			if(a[x+1][y]==' ')
                {
    				a[x][y]=' ';
                    x++;
                    a[x][y]='O';
                }
            }
            else if(ch=='w')//上
            {
    			if(a[x-1][y]==' ')
                {
    				a[x][y]=' ';
                    x--;
                    a[x][y]='O';
                }
            }
    		else if(ch=='a')//左
            {
    			if(a[x][y-1]==' ')
                {
    				a[x][y]=' ';
                    y--;
                    a[x][y]='O';
                }
            }
            else if(ch=='d')//右
            {
    			if(a[x][y+1]==' ')
                {
    				a[x][y]=' ';
                    y++;
                    a[x][y]='O';
                }
            }
            system("cls");
    		for(int i=0;i<=9;i++)
    			puts(a[i]);
            if(x==8 && y==9)
            	break;
    	}
    	cout<<"你赢了"<<endl;
    	Sleep(10000);
    	return 0;
    }

    谢谢大家,这是我发的第一篇博文,望支持。

    展开全文
  • 今天小编为大家带来了c/c++游戏源码素材!游戏是现在大火的一个行业,要制作一款倍受青睐的作品实属不易。 今天给大家准备了很多的游戏源码素材,让创作变得更简单~ 这一类的素材找起来还是挺困难的,但是小编给...

    今天小编为大家带来了c/c++游戏源码素材!游戏是现在大火的一个行业,要制作一款倍受青睐的作品实属不易。

    今天给大家准备了很多的游戏源码素材,让创作变得更简单~ 这一类的素材找起来还是挺困难的,但是小编给大家找到了,就不用再去到处寻找啦~

    爱给网

    爱给网这个网站主推专注免费素材!宗旨是让广大设计师的创作变得更简单!这也是小编为大家安利的原因之一,更值得推荐的是他家的下载前浏览压缩包及下载后无水印的功能,给广大设计师真的带来了很大的便利!

    除了c/c++游戏源码,这个栏目里面还涵盖了手游、端游、页游等等源码,大家可以先收藏,以后有需要就直接去找啦!

    6m5m素材网

    该网站素材质量高,但是所有源码素材都需要消耗金币或者积分才可下载,游戏初学者学习可以使用该网站源码素材进行学习,但该网站资源禁止商用~ 该网站不足之处在于所有资源需消耗金币和积分下载,金币积分需上传作品获得,网站从中抽成40%,不推荐作为第一参考~

    HOTSCRIPTS(需翻墙)

    另外,小编还给大家安利一个国外的老牌源码网站,具有一定的知名度,资源数量也相对较多,可以提供给大家学习哟~

    小编呕心沥血就整理到这里啦,还有更好的资源请大家分享给我啦,评论区等你互动!

    展开全文
  • c++游戏大集结【免费复制源码

    千次阅读 2021-07-28 10:08:20
    这是一个小游戏,感兴趣的可以看看 代码如下: #include<bits/stdc++.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> using namespace std; struct...

    代码来了!!!

    1.狼人杀

            这是一个小游戏,感兴趣的可以看看

                    代码如下:

    #include<bits/stdc++.h>
    #include<cstdio>
    #include<cstdlib>
    #include<ctime>
    #include<windows.h>
    using namespace std;
    struct IDname
    {
        int geshu;
        string NAME;
    };
    IDname jue_se[100];
    struct ID
    {
        int num;
        bool life;
        string name;
        int know;
        int how;
    };
    ID player[21];
    int n, MY, kill1, kill2;
    char a;
    bool jieyao = 1, duyao = 1;
    int lieren, shouwei = 0;
    void init1()
    {
        jue_se[1].NAME = "村民 ";
        jue_se[2].NAME = "狼人 ";
        jue_se[3].NAME = "女巫 ";
        jue_se[4].NAME = "预言家 ";
        jue_se[5].NAME = "猎人 ";
        jue_se[6].NAME = "守卫 ";
    }
    void init2(int nn)
    {
        switch (nn)
        {
        case 6:
            jue_se[1].geshu = 3;
            jue_se[2].geshu = 2;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 0;
            jue_se[5].geshu = 0;
            jue_se[6].geshu = 0;
            break;
        case 7:
            jue_se[1].geshu = 3;
            jue_se[2].geshu = 2;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 0;
            jue_se[6].geshu = 0;
            break;
        case 8:
            jue_se[1].geshu = 3;
            jue_se[2].geshu = 3;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 0;
            jue_se[6].geshu = 0;
            break;
        case 9:
            jue_se[1].geshu = 3;
            jue_se[2].geshu = 3;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 1;
            jue_se[6].geshu = 0;
            break;
        case 10:
            jue_se[1].geshu = 4;
            jue_se[2].geshu = 3;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 1;
            jue_se[6].geshu = 0;
            break;
        case 11:
            jue_se[1].geshu = 4;
            jue_se[2].geshu = 4;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 1;
            jue_se[6].geshu = 0;
            break;
        case 12:
            jue_se[1].geshu = 4;
            jue_se[2].geshu = 4;
            jue_se[3].geshu = 1;
            jue_se[4].geshu = 1;
            jue_se[5].geshu = 1;
            jue_se[6].geshu = 1;
            break;
        default:
            cout << "输入错误,再见" << endl;
            exit(0);
            break;
        }
    }
    int van[10] = { 7,4,6,43,35,1,2,8,20,19 };
    void init3(int nn)
    {
        srand(time(0));
        Sleep(rand() % 44);
        int x = 10000;
        int t = rand();
        srand(time(NULL));
        int y = van[(rand() % 100 * van[rand() % 10] + t) % 10];
        if (nn <= 6)
            x = abs(x * 6 / y) % 3 + 1;
        else if (nn <= 8)
            x = abs(x * 7 / y) % 4 + 1;
        else if (nn <= 11)
            x = abs(x * 8 / y) % 5 + 1;
        else if (nn <= 14)
            x = abs(x * 9 / y) % 6 + 1;
        do
        {
            if (nn <= 6)
                x = x % 3 + 1;
            else if (nn <= 8)
                x = x % 4 + 1;
            else if (nn <= 11)
                x = x % 5 + 1;
            else if (nn <= 14)
                x = x % 6 + 1;
            if (jue_se[x].geshu > 0)
            {
                player[nn].name = jue_se[x].NAME;
                if (player[nn].name == "猎人 ")
                    lieren = nn;
                if (player[nn].name == "守卫 ")
                    shouwei = nn;
                player[nn].life = 1;
                player[nn].num = nn;
                player[nn].know = 0;
                jue_se[x].geshu--;
                player[nn].how = 0;
                break;
            }
        } while (jue_se[x].geshu == 0);
    }
    void printhhh()
    {
        int cm = 0;
        int sz = 0;
        for (int i = 1; i <= n; i++)
        {
            if (player[i].life == 0)
                continue;
            else if (player[i].name == "村民 ")
                cm++;
            else if (player[i].name == "女巫 " || player[i].name == "预言家 " || player[i].name == "猎人 " || player[i].name == "守卫 ")
                sz++;
        }
        if (sz == 0 || cm == 0)
            cout << "狼人阵营胜利" << endl;
        else
            cout << "好人阵营胜利" << endl;
        for (int i = 1; i <= n; i++)
        {
            cout << left << setw(3) << player[i].num << ": " << player[i].name << " ";
            if (player[i].life == 0)
                cout << "死亡" << "\t";
            else
                cout << "存活" << "\t";
            if (player[i].how == 0)
                cout << "最终存活 " << endl;
            else if (player[i].how == 1)
                cout << "最终被狼人杀死" << endl;
            else if (player[i].how == 2)
                cout << "最终被投票投死" << endl;
            else if (player[i].how == 3)
                cout << "最终被女巫毒死" << endl;
            else if (player[i].how == 4)
                cout << "最终被猎人射杀" << endl;
        }
        system("pause");
        system("pause");
        system("pause");
    }
    void print(int day, int ti)
    {
        HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
        if (ti == 0)
            SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY);
        else
            SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        cout << "\t\t\t\t第" << day << "天 ";
        if (ti == 0)
            cout << "白天" << endl;
        else
            cout << "夜晚" << endl;
        cout << "我的位置:" << MY << "号" << endl;
        for (int i = 1; i <= 6; i++)
        {
            cout << player[i].num << "号位 ";
        }
        cout << endl;
        for (int i = 1; i <= 6; i++)
        {
            if (player[i].life == 1)
            {
                if (ti == 0)
                    SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                else
                    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                cout << "存活 ";
            }
            else
            {
                if (ti == 0)
                    SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED);
                else
                    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
                cout << "已死亡 ";
            }
        }
        if (ti == 0)
            SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY);
        else
            SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        cout << endl;
        for (int i = 1; i <= 6; i++)
        {
            if (player[i].know == 0)
                cout << "未知 ";
            else if (player[i].know == 1)
            {
                if (player[i].name == "狼人 ")
                    cout << "狼人 ";
                else
                    cout << "好人 ";
            }
            else if (player[i].know == 2)
                cout << player[i].name << " ";
        }
        cout << endl << endl;
        for (int i = 7; i <= n; i++)
        {
            if (i < 10)
                cout << player[i].num << "号位 ";
            else
                cout << player[i].num << "号位 ";
        }
        cout << endl;
        for (int i = 7; i <= n; i++)
        {
            if (player[i].life == 1)
            {
                if (ti == 0)
                    SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                else
                    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                cout << "存活 ";
            }
            else
            {
                if (ti == 0)
                    SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED);
                else
                    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
                cout << "已死亡 ";
            }
        }
        if (ti == 0)
            SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY);
        else
            SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        cout << endl;
        for (int i = 7; i <= n; i++)
        {
            if (player[i].know == 0)
                cout << "未知 ";
            else if (player[i].know == 1)
            {
                if (player[i].name == "狼人 ")
                    cout << "狼人 ";
                else
                    cout << "好人 ";
            }
            else if (player[i].know == 2)
                cout << player[i].name << " ";
        }
        cout << endl << endl;
    }
    int shou = 0;
    void shoushui(int hhh, int hhhh)
    {
        int x;
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        cout << "守~卫~请~睁~眼~~~" << endl;
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        if (MY == shouwei && player[MY].life == 1)
        {
            cout << "请问你要守护谁?" << endl << "输入:";
            cin >> x;
            while (x == shou || x<1 || x>n || player[x].life == 0)
            {
                cout << "输入错误,请重新输入" << endl << "输入:";
                cin >> x;
            }
            shou = x;
        }
        else if (player[shouwei].life == 1)
        {
            cout << "请问你要守护谁?" << endl;
            Sleep(rand() % 98);
            srand(time(0));
            x = rand() % n + 1;
            while (x == shou || player[x].life == 0)
            {
                Sleep(rand() % 98);
                srand(time(0));
                x = rand() % n + 1;
            }
            shou = x;
        }
        else
        {
            cout << "请问你要守护谁?" << endl;
            Sleep(3000);
            shou = -1;
        }
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        cout << "守~卫~请~闭~眼~~~" << endl;
    }
    struct tou
    {
        int xxx;
        int num;
        int toupiaoquan;
    };
    tou TOU[13];
    bool cmp(tou x, tou y)
    {
        if (x.xxx == y.xxx)
            return x.num < y.num;
        return x.xxx > y.xxx;
    }
    bool cmp1(tou x, tou y)
    {
        return x.num < y.num;
    }
    void toupiao(int ddd, int nnn)
    {
        //--------1--------
        int x;
        Sleep(2000);
        system("cls");
        print(ddd, nnn);
        cout << "现在大家请投票";
        for (int i = 1; i <= 3; i++)
        {
            cout << ".";
            Sleep(500);
        }
        cout << endl;
        for (int i = 1; i <= n; i++)
        {
            TOU[i].num = i;
            TOU[i].toupiaoquan = 1;
            TOU[i].xxx = 0;
        }
        for (int i = 1; i <= n; i++)
        {
            if (player[i].life == 1)
            {
                Sleep(3000);
                if (i == MY)
                {
                    cout << "请投票...(0弃权)" << endl;
                    cin >> x;
                    while (player[x].life == 0 && x != 0)
                    {
                        cin >> x;
                    }
                    if (x == 0)
                        cout << MY << "号玩家弃权" << endl;
                    else
                        cout << MY << "号玩家投给了" << x << "号玩家" << endl;
                }
                else
                {
                    srand(time(0));
                    if (player[i].name == "狼人 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name == "狼人 " || x == i))
                        {
                            Sleep(rand() % 98);
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else if (player[i].name == "预言家 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name != "狼人 " || x == i))
                        {
                            Sleep(rand() % 98);
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || x == i))
                        {
                            Sleep(rand() % 98);
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                }
                if (x != 0)
                    TOU[x].xxx++;
            }
        }
        Sleep(3000);
        sort(TOU + 1, TOU + n + 1, cmp);
        if (TOU[2].xxx != TOU[1].xxx)
        {
            cout << "投票结束," << TOU[1].num << "号投票出局" << endl;
            player[TOU[1].num].life = 0;
            player[TOU[1].num].how = 2;
            Sleep(3000);
            return;
        }
        else
        {
            TOU[1].toupiaoquan = 0;
            TOU[2].toupiaoquan = 0;
            system("cls");
            print(ddd, nnn);
            cout << TOU[1].num << "号," << TOU[2].num << "号";
            int i;
            for (i = 3; i <= n; i++)
            {
                if (TOU[i].xxx == TOU[1].xxx)
                {
                    TOU[i].toupiaoquan = 0;
                    cout << "," << TOU[i].num << "号";
                }
                else
                    break;
            }
            if (i == n + 1)
            {
                for (int i = 1; i <= n; i++)
                    TOU[i].toupiaoquan = 1;
            }
            cout << "平票" << endl;
        }
        //--------2--------
        sort(TOU + 1, TOU + n + 1, cmp1);
        cout << "请再次投票";
        for (int i = 1; i <= 3; i++)
        {
            cout << ".";
            Sleep(500);
        }
        cout << endl;
        for (int i = 1; i <= n; i++)
        {
            if (player[i].life == 1 && TOU[i].toupiaoquan == 1)
            {
                Sleep(3000);
                if (i == MY)
                {
                    cout << "请投票...(0弃权)" << endl;
                    cin >> x;
                    while ((player[x].life == 0 || TOU[x].toupiaoquan == 1) && x != 0)
                    {
                        cin >> x;
                    }
                    if (x == 0)
                        cout << MY << "号玩家弃权" << endl;
                    else
                        cout << MY << "号玩家投给了" << x << "号玩家" << endl;
                }
                else
                {
                    srand(time(0));
                    if (player[i].name == "狼人 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name == "狼人 " || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else if (player[i].name == "预言家 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name != "狼人 " || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                }
                if (x != 0 && TOU[i].toupiaoquan == 1)
                    TOU[x].xxx++;
            }
        }
        Sleep(3000);
        sort(TOU + 1, TOU + n + 1, cmp);
        if (TOU[2].xxx != TOU[1].xxx)
        {
            cout << "投票结束," << TOU[1].num << "号投票出局" << endl;
            player[TOU[1].num].life = 0;
            player[TOU[1].num].how = 2;
            Sleep(3000);
            return;
        }
        else
        {
            TOU[1].toupiaoquan = 0;
            TOU[2].toupiaoquan = 0;
            system("cls");
            print(ddd, nnn);
            cout << TOU[1].num << "号," << TOU[2].num << "号";
            int i;
            for (i = 3; i <= n; i++)
            {
                if (TOU[i].xxx == TOU[1].xxx)
                {
                    TOU[i].toupiaoquan = 0;
                    cout << "," << TOU[i].num << "号";
                }
                else
                    break;
            }
            if (i == n + 1)
            {
                for (int i = 1; i <= n; i++)
                    TOU[i].toupiaoquan = 1;
            }
            cout << "平票" << endl;
        }
        //--------3--------
        sort(TOU + 1, TOU + n + 1, cmp1);
        cout << "请再次投票";
        for (int i = 1; i <= 3; i++)
        {
            cout << ".";
            Sleep(500);
        }
        cout << endl;
        for (int i = 1; i <= n; i++)
        {
            if (player[i].life == 1 && TOU[i].toupiaoquan == 1)
            {
                Sleep(3000);
                if (i == MY)
                {
                    cout << "请投票...(0弃权)" << endl;
                    cin >> x;
                    while ((player[x].life == 0 || TOU[x].toupiaoquan == 1) && x != 0)
                    {
                        cin >> x;
                    }
                    if (x == 0)
                        cout << MY << "号玩家弃权" << endl;
                    else
                        cout << MY << "号玩家投给了" << x << "号玩家" << endl;
                }
                else
                {
                    srand(time(0));
                    if (player[i].name == "狼人 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name == "狼人 " || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else if (player[i].name == "预言家 " || player[i].name == "猎人 ")
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || player[x].name != "狼人 " || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                    else
                    {
                        x = rand() % (n + 1);
                        while (x != 0 && (player[x].life == 0 || x == i || TOU[x].toupiaoquan == 1))
                        {
                            srand(time(0));
                            x = rand() % (n + 1);
                        }
                        if (x == 0)
                            cout << i << "号玩家弃权" << endl;
                        else
                            cout << i << "号玩家投给了" << x << "号玩家" << endl;
                    }
                }
                if (x != 0 && TOU[i].toupiaoquan == 1)
                    TOU[x].xxx++;
            }
        }
        Sleep(3000);
        sort(TOU + 1, TOU + n + 1, cmp);
        if (TOU[2].xxx != TOU[1].xxx)
        {
            cout << "投票结束," << TOU[1].num << "号投票出局" << endl;
            player[TOU[1].num].life = 0;
            player[TOU[1].num].how = 2;
        }
        else
        {
            cout << "投票结束,无人出局" << endl;
        }
        Sleep(5000);
    }
    bool game_over()
    {
        int pingmin = 0;
        int langren = 0;
        int shenzhi = 0;
        for (int i = 1; i <= n; i++)
        {
            if (player[i].life == 0)
                continue;
            if (player[i].name == "狼人 ")
                langren++;
            else if (player[i].name == "村民 ")
                pingmin++;
            else if (player[i].name == "女巫 " || player[i].name == "预言家 " || player[i].name == "猎人 ")
                shenzhi++;
        }
        if (shenzhi == 0 || langren == 0 || pingmin == 0)
            return 1;
        return 0;
    }
    void night()
    {
        system("cls");
        system("color 0f");
        print(1, 1);
        cout << "天~黑~请~闭~眼~~~" << endl;
        if (n >= 12)
            shoushui(1, 1);
        Sleep(3000);
        system("cls");
        print(1, 1);
        cout << "狼~人~请~睁~眼~~~" << endl;
        if (player[MY].name == "狼人 ")
        {
            Sleep(1000);
            cout << "你的同伴有:";
            for (int i = 1; i <= n; i++)
            {
                if (i == MY)
                    continue;
                if (player[i].name == "狼人 ")
                {
                    cout << player[i].num << "号 ";
                    player[i].know = 2;
                }
            }
            Sleep(3000);
            cout << endl << "请问你们要杀谁:" << endl << "输入:";
            cin >> kill1;
            Sleep(1500);
            system("cls");
            print(1, 1);
            cout << "今晚你们要杀的是" << kill1 << "号玩家" << endl;
        }
        else
        {
            Sleep(4000);
            system("cls");
            print(1, 1);
            cout << "请问你们要杀谁?" << endl;
            do
            {
                Sleep(rand() % 18);
                srand(time(0));
                int x = rand() % n + 1;
                if (player[x].name != "狼人 " && player[x].life == 1)
                {
                    kill1 = x;
                    break;
                }
            } while (1);
            Sleep(5000);
        }
        Sleep(3000);
        system("cls");
        print(1, 1);
        cout << "狼~人~请~闭~眼~~~" << endl;
        Sleep(2000);
        system("cls");
        print(1, 1);
        cout << "女~巫~请~睁~眼~~~" << endl;
        Sleep(2000);
        system("cls");
        print(1, 1);
        if (player[MY].name == "女巫 " && player[MY].life == 1)
        {
            Sleep(1000);
            if (jieyao == 1)
            {
                cout << "今晚" << kill1 << "号玩家被杀" << endl;
                Sleep(500);
                cout << "请问你要救吗???" << endl << "A. 救 B.不救" << endl << "输入:";
                cin >> a;
                if (a == 'A')
                {
                    system("cls");
                    print(1, 1);
                    cout << "请问你要毒吗???" << endl;
                    Sleep(2000);
                    system("cls");
                    print(1, 1);
                    cout << "今晚" << kill1 << "号玩家被你解救" << endl;
                    jieyao = 0;
                    if (shou != kill1)
                        kill1 = 0;
                }
                else
                {
                    if (shou == kill1)
                        kill1 = 0;
                    Sleep(2000);
                    system("cls");
                    print(1, 1);
                    cout << "请问你要毒吗???" << endl << "A. 毒 B.不毒" << endl << "输入:";
                    cin >> a;
                    if (a == 'A')
                    {
                        cout << "请问你要毒谁???" << endl << "输入:";
                        cin >> kill2;
                        while (player[kill2].life != 1)
                        {
                            cout << "输入错误,请重新输入:" << endl;
                            cin >> kill2;
                        }
                        duyao = 0;
                    }
                }
            }
            else
            {
                if (shou == kill1)
                    kill1 = 0;
                Sleep(2000);
                system("cls");
                print(1, 1);
                cout << "请问你要毒吗???" << endl << "A. 毒 B.不毒" << endl << "输入:";
                cin >> a;
                if (a == 'A')
                {
                    cout << "请问你要毒谁???" << endl << "输入:";
                    cin >> kill2;
                    while (player[kill2].life != 1)
                    {
                        cout << "输入错误,请重新输入:" << endl;
                        cin >> kill2;
                    }
                    duyao = 0;
                }
            }
        }
        else
        {
            bool b = 0;
            cout << "请问你是否要用解药???" << endl;
            int FFF = 0, kkkk;
            for (int i = 1; i <= n; i++)
            {
                if (player[i].life == 1 && player[i].name == "村民 ")
                    FFF++;
                if (player[i].name == "女巫 ")
                    kkkk = i;
            }
            if (jieyao == 1 && player[kkkk].life == 1)
            {
                if (FFF == 1)
                {
                    if (shou == kill1)
                        jieyao = 1;
                    else
                        jieyao = 0;
                    kill1 = 0;
                    b = 1;
                }
                else
                    for (int i = 1; i <= n; i++)
                    {
                        if (player[i].name == "女巫 " && kill1 == i)
                        {
                            kill1 = 0;
                            if (shou == kill1)
                                jieyao = 1;
                            else
                                jieyao = 0;
                            b = 1;
                            break;
                        }
                        else if (player[i].name == "预言家 " && kill1 == i)
                        {
                            kill1 = 0;
                            if (shou == kill1)
                                jieyao = 1;
                            else
                                jieyao = 0;
                            b = 1;
                            break;
                        }
                    }
            }
            Sleep(3000);
            if (b == 0 && duyao == 1 && player[kkkk].life == 1)
            {
                system("cls");
                print(1, 1);
                cout << "请问你是否要用毒药???" << endl;
                srand(time(0));
                int x = rand() % 2;
                Sleep(1500);
                cout << "请问你要毒谁???" << endl;
                if (x == 1)
                {
                    duyao = 0;
                    int y = rand() % n + 1;
                    while ((player[y].name == "女巫 " || player[y].name == "预言家 " || y == kill1) || player[y].life == 0)
                        y = rand() % n + 1;
                    kill2 = y;
                }
            }
            else
            {
                Sleep(3000);
                system("cls");
                print(1, 1);
                cout << "请问你是否要用毒药???" << endl;
                Sleep(3000);
                cout << "请问你要毒谁???" << endl;
                Sleep(3000);
            }
        }
        Sleep(3000);
        system("cls");
        print(1, 1);
        cout << "女~巫~请~闭~眼~~~" << endl;
        if (n > 6)
        {
            Sleep(3000);
            system("cls");
            print(1, 1);
            cout << "预~言~家~请~睁~眼~~~" << endl;
            if (player[MY].name == "预言家 ")
            {
                Sleep(3000);
                cout << "请问你想查验谁???" << endl << "输入:";
                int x;
                cin >> x;
                player[x].know = 1;
                Sleep(2000);
                system("cls");
                print(1, 1);
                cout << "他的身份是:";
                if (player[x].name == "狼人 ")
                    cout << "狼人" << endl;
                else
                    cout << "好人" << endl;
                Sleep(3000);
            }
            else
            {
                Sleep(3000);
                cout << "请问你想查验谁???" << endl;
                Sleep(3000);
                system("cls");
                print(1, 1);
                cout << "他的身份是:......";
                Sleep(3000);
            }
            Sleep(3000);
            system("cls");
            print(1, 1);
            cout << "预~言~家~请~闭~眼~~~" << endl;
        }
        Sleep(3000);
        if (kill1 != 0)
            player[kill1].life = 0;
        if (kill2 != 0)
            player[kill2].life = 0;
        player[kill1].how = 1;
        player[kill2].how = 3;
        system("cls");
        system("color F0");
        print(2, 0);
    }
    void night2(int hhh, int hhhh)
    {
        system("cls");
        system("color 0f");
        print(hhh, hhhh);
        cout << "天~黑~请~闭~眼~~~" << endl;
        if (n >= 12)
            shoushui(hhh, hhhh);
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        cout << "狼~人~请~睁~眼~~~" << endl;
        if (player[MY].name == "狼人 " && player[MY].life == 1)
        {
            Sleep(3000);
            cout << endl << "请问你们要杀谁:" << endl << "输入:";
            cin >> kill1;
            Sleep(1500);
            system("cls");
            print(hhh, hhhh);
            cout << "今晚你们要杀的是" << kill1 << "号玩家" << endl;
        }
        else
        {
            Sleep(4000);
            system("cls");
            print(hhh, hhhh);
            cout << "请问你们要杀谁?" << endl;
            do
            {
                srand(time(0));
                int x = rand() % n + 1;
                if (player[x].name != "狼人 " && player[x].life == 1)
                {
                    kill1 = x;
                    break;
                }
            } while (1);
            Sleep(5000);
        }
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        cout << "狼~人~请~闭~眼~~~" << endl;
        Sleep(2000);
        system("cls");
        print(hhh, hhhh);
        cout << "女~巫~请~睁~眼~~~" << endl;
        Sleep(2000);
        system("cls");
        print(hhh, hhhh);
        if (player[MY].name == "女巫 " && player[MY].life == 1)
        {
            Sleep(1000);
            if (jieyao == 1)
            {
                cout << "今晚" << kill1 << "号玩家被杀" << endl;
                Sleep(500);
                cout << "请问你要救吗???" << endl << "A. 救 B.不救" << endl << "输入:";
                cin >> a;
                if (a == 'A')
                {
                    system("cls");
                    print(hhh, hhhh);
                    cout << "请问你要毒吗???" << endl;
                    Sleep(2000);
                    system("cls");
                    print(hhh, hhhh);
                    cout << "今晚" << kill1 << "号玩家被你解救" << endl;
                    jieyao = 0;
                    if (shou != kill1)
                        kill1 = 0;
                }
                else
                {
                    if (shou == kill1)
                        kill1 = 0;
                    Sleep(2000);
                    system("cls");
                    print(hhh, hhhh);
                    cout << "请问你要毒吗???" << endl << "A. 毒 B.不毒" << endl << "输入:";
                    cin >> a;
                    if (a == 'A')
                    {
                        cout << "请问你要毒谁???" << endl << "输入:";
                        cin >> kill2;
                        while (player[kill2].life != 1)
                        {
                            cout << "输入错误,请重新输入:" << endl;
                            cin >> kill2;
                        }
                        duyao = 0;
                    }
                }
            }
            else if (duyao == 1)
            {
                if (shou == kill1)
                    kill1 = 0;
                Sleep(2000);
                system("cls");
                print(hhh, hhhh);
                cout << "请问你要毒吗???" << endl << "A. 毒 B.不毒" << endl << "输入:";
                cin >> a;
                if (a == 'A')
                {
                    cout << "请问你要毒谁???" << endl << "输入:";
                    cin >> kill2;
                    while (player[kill2].life != 1)
                    {
                        cout << "输入错误,请重新输入:" << endl;
                        cin >> kill2;
                    }
                    duyao = 0;
                }
            }
            else
            {
                Sleep(2000);
                system("cls");
                print(hhh, hhhh);
                cout << "请问你要毒吗???" << endl;
            }
        }
        else
        {
            bool b = 0;
            cout << "请问你是否要用解药???" << endl;
            int FFF = 0, kkkk;
            for (int i = 1; i <= n; i++)
            {
                if (player[i].life == 1 && player[i].name == "村民 ")
                    FFF++;
                if (player[i].name == "女巫 ")
                    kkkk = i;
            }
            if (jieyao == 1 && player[kkkk].life == 1)
            {
                if (FFF == 1)
                {
                    if (shou == kill1)
                        jieyao = 1;
                    else
                        jieyao = 0;
                    kill1 = 0;
                    b = 1;
                }
                else
                    for (int i = 1; i <= n; i++)
                    {
                        if (player[i].name == "女巫 " && kill1 == i)
                        {
                            kill1 = 0;
                            if (shou == kill1)
                                jieyao = 1;
                            else
                                jieyao = 0;
                            b = 1;
                            break;
                        }
                        else if (player[i].name == "预言家 " && kill1 == i)
                        {
                            kill1 = 0;
                            if (shou == kill1)
                                jieyao = 1;
                            else
                                jieyao = 0;
                            b = 1;
                            break;
                        }
                    }
            }
            Sleep(3000);
            if (b == 0 && duyao == 1 && player[kkkk].life == 1)
            {
                system("cls");
                print(hhh, hhhh);
                cout << "请问你是否要用毒药???" << endl;
                srand(time(0));
                int x = rand() % 2;
                Sleep(1500);
                cout << "请问你要毒谁???" << endl;
                if (x == 1)
                {
                    duyao = 0;
                    int y = rand() % n + 1;
                    while ((player[y].name == "女巫 " || player[y].name == "预言家 " || y == kill1) || player[y].life == 0)
                        y = rand() % n + 1;
                    kill2 = y;
                }
            }
            else
            {
                Sleep(3000);
                system("cls");
                print(hhh, hhhh);
                cout << "请问你是否要用毒药???" << endl;
                Sleep(3000);
                cout << "请问你要毒谁???" << endl;
                Sleep(3000);
            }
        }
        Sleep(3000);
        system("cls");
        print(hhh, hhhh);
        cout << "女~巫~请~闭~眼~~~" << endl;
        if (n > 6)
        {
            Sleep(3000);
            system("cls");
            print(hhh, hhhh);
            cout << "预~言~家~请~睁~眼~~~" << endl;
            if (player[MY].name == "预言家 " && player[MY].life == 1)
            {
                Sleep(3000);
                cout << "请问你想查验谁???" << endl << "输入:";
                int x;
                cin >> x;
                player[x].know = 1;
                Sleep(2000);
                system("cls");
                print(hhh, hhhh);
                cout << "他的身份是:";
                if (player[x].name == "狼人 ")
                    cout << "狼人" << endl;
                else
                    cout << "好人" << endl;
                Sleep(3000);
            }
            else
            {
                Sleep(3000);
                cout << "请问你想查验谁???" << endl;
                Sleep(3000);
                system("cls");
                print(hhh, hhhh);
                cout << "他的身份是:......";
                Sleep(3000);
            }
            Sleep(3000);
            system("cls");
            print(hhh, hhhh);
            cout << "预~言~家~请~闭~眼~~~" << endl;
        }
        Sleep(3000);
        if (kill1 != 0)
            player[kill1].life = 0;
        if (kill2 != 0)
            player[kill2].life = 0;
        player[kill1].how = 1;
        player[kill2].how = 3;
        system("cls");
        system("color F0");
        print(hhh + 1, 0);
    }
    bool lr = 0;
    void panduanlieren()
    {
        if (lr == 1)
            return;
        if (MY == lieren)
        {
            cout << "请射杀一名玩家" << endl;
            int x;
            cin >> x;
            while (player[x].life != 1)
            {
                cout << "输入错误,请重新输入" << endl;
                cin >> x;
            }
            Sleep(1000);
            cout << lieren << "号猎人发动技能,开枪带走了" << x << "号" << endl;
            player[x].life = 0;
            player[x].how = 4;
        }
        else if (n >= 9)
        {
            srand(time(0));
            int x = rand() % n + 1;
            while (player[x].life != 1)
            {
                x = rand() % n + 1;
            }
            Sleep(1000);
            cout << lieren << "号猎人发动技能,开枪带走了" << x << "号" << endl;
            player[x].life = 0;
            player[x].how = 4;
        }
        lr = 1;
    }
    void print1()
    {
        cout << "天亮了,昨晚";
        if (kill1 != 0 || kill2 != 0)
        {
            cout << kill1 << "号";
            if (kill2 != 0)
            {
                cout << "," << kill2 << "号";
                kill2 = 0;
            }
            cout << "被杀" << endl;
        }
        else
            cout << "是平安夜" << endl;
    }
    int main()
    {
        system("cls");
        cout << " " << "狼人杀online" << endl;
        cout << "请输入人数个数:" << endl;
        scanf("%d", &n);
        cout << "加载时间长,请耐心等待";
        init1();
        init2(n);
        int k = 1;
        do
        {
            srand(time(0));
            init3(k);
            cout << ".";
            Sleep(17);
            k++;
        } while (k <= n);
        system("cls");
        system("color F0");
        cout << "游戏即将开始";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        Sleep(1500);
        cout << endl << endl << "请大家查看身份牌......" << endl;
        Sleep(45);
        srand(time(0));
        MY = rand() % n + 1;
        cout << "您的身份是:" << player[MY].name << endl;
        Sleep(500);
        cout << "在" << player[MY].num << "号位上" << endl;
        system("pause");
        system("cls");
        player[MY].know = 2;
        print(1, 0);
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night();
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(2, 0);
        system("cls");
        print(2, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night2(2, 1);
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(3, 0);
        system("cls");
        print(3, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night2(3, 1);
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(4, 0);
        system("cls");
        print(4, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night2(4, 1);
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(5, 0);
        system("cls");
        print(5, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night2(5, 1);
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(6, 0);
        system("cls");
        print(6, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        cout << "即将进入夜晚";
        for (int i = 1; i <= 6; i++)
        {
            cout << ".";
            Sleep(500);
        }
        night2(6, 1);
        print1();
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        if (player[lieren].life == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        toupiao(7, 0);
        system("cls");
        print(7, 0);
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        else if (player[lieren].life == 0 && lr == 0)
        {
            panduanlieren();
        }
        if (game_over())
        {
            Sleep(1000);
            system("cls");
            cout << "游戏结束" << endl; printhhh();
            return 0;
        }
        while (1)
            system("pause");
        return 0;
    }

    2.俄罗斯方块

            代码来了!

                    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #include<time.h>
    #include<conio.h>
     
    #define MOD 28
    #define SIZE_N 19
    #define SIZE_M 12
     
    int cur_x,cur_y;
    int score,mark,next,map[SIZE_N][SIZE_M],Gamespeed=300;
     
    int shape[28][6]={
     {0,-1,0,-2,1,0}, {0,1,1,0,2,0}, {-1,0,0,1,0,2}, {0,-1,-1,0,-2,0},
     {0,-1,0,1,-1,0}, {0,1,1,0,-1,0}, {1,0,0,-1,0,1}, {1,0,-1,0,0,-1},
     {-1,1,0,1,1,0}, {0,-1,1,0,1,1}, {-1,0,0,-1,1,-1}, {-1,-1,-1,0,0,1},
     {-1,0,0,1,1,1}, {0,1,1,-1,1,0}, {-1,0,0,1,1,1}, {0,1,1,-1,1,0},
     {-1,0,0,-1,0,-2}, {-1,0,-2,0,0,1}, {0,1,0,2,1,0}, {0,-1,1,0,2,0},
     {0,1,1,0,1,1}, {0,-1,1,0,1,-1}, {-1,0,0,-1,-1,-1}, {-1,0,-1,1,0,1},
     {0,1,0,2,0,3}, {1,0,2,0,3,0}, {0,-1,0,-2,0,-3}, {-1,0,-2,0,-3,0}
    };
     
    void gotoxy(int x,int y){
     COORD c;
     c.X=x-1; c.Y=y-1;
     SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
    }
    void Gameover(){
     int i,j,flag=0;
     for(j=1;j<SIZE_M-1;j++){
     if(map[1][j]!=0){
      flag=1;break;
     }
     }
     if(flag==1){
     for(i=1;i<SIZE_N-1;i++){
      gotoxy(2,i+1);
      for(j=1;j<SIZE_M-1;j++){
      printf("□");
      }puts("");
     }
     gotoxy(7,9);
     printf("GAME OVER!");
     gotoxy(1,SIZE_N+1);
     exit(0);
     }
    }
    void ShowMap(int id){
     int i,j;
     gotoxy(1,1);
     if(id!=-1){
     for(i=0;i<SIZE_N;i++){
      for(j=0;j<SIZE_M;j++){
      if(i==0&&j==0 || i==0&&j==SIZE_M-1 || j==0&&i==SIZE_N-1 || j==SIZE_M-1&&i==SIZE_N-1)printf(" ");
      else if(i==0 || i==SIZE_N-1)printf("--");
      else if(j==0 || j==SIZE_M-1)printf("|");
      else if(map[i][j]==2) printf("■");
      else if(i==cur_x+shape[id][0] && j==cur_y+shape[id][1] ||
       i==cur_x+shape[id][2] && j==cur_y+shape[id][3] ||
       i==cur_x+shape[id][4] && j==cur_y+shape[id][5] ||
       i==cur_x && j==cur_y)
       printf("■");
      else if(map[i][j]==0) printf(" ");
      }
      if(i==1)printf(" 下一个 :");
      if(i==11)printf(" 等分 : %d",score);
      if(i==14)printf(" 速度 : %d",score/100+1);
      puts("");
     }
     }
     else {
     mark=1;
     for(i=0;i<SIZE_N;i++){
      for(j=0;j<SIZE_M;j++){
      if(i==0&&j==0 || i==0&&j==SIZE_M-1 || j==0&&i==SIZE_N-1 || j==SIZE_M-1&&i==SIZE_N-1)printf(" ");
      else if(i==0 || i==SIZE_N-1)printf("--");
      else if(j==0 || j==SIZE_M-1)printf("|");
      else if(map[i][j]==2) printf("■");
      else if(map[i][j]==0) printf(" ");
      }
      if(i==1)printf(" next:");
      if(i==11)printf(" score : %d",score);
      if(i==14)printf(" speed : %d",score/100+1);
      puts("");
     }
     }
     
     gotoxy(30,6); printf(" ");
     for(i=0;i<6;i=i+2){
     gotoxy(30+2*shape[id][i+1],6+shape[id][i]); printf(" ");
     }
     gotoxy(30,6); printf("■");
     for(i=0;i<6;i=i+2){
     gotoxy(30+2*shape[next][i+1],6+shape[next][i]); printf("■");
     }
     Sleep(Gamespeed);
    }
     
    void init(int id){
     int i,j;
     memset(map,0,sizeof(map));
     for(i=0;i<SIZE_N;i++){
     for(j=0;j<SIZE_M;j++)
      if(i==SIZE_N-1 || j==0 || j==SIZE_M-1)
      map[i][j]=-1;
     }
     cur_x=0; cur_y=5;
     ShowMap(id);
    }
     
    int judge_in(int x,int y,int id){
     int i;
     if(map[x][y]!=0)return 0;
     for(i=0;i<6;i=i+2){
     if(map[ x+shape[id][i] ][ y+shape[id][i+1] ]!=0)return 0;
     }return 1;
    }
     
    void fun_score(){
     int i,j,ii,jj;
     for(i=1;i<SIZE_N-1;i++){
     int flag=0;
     for(j=1;j<SIZE_M-1;j++){
      if(map[i][j]!=2){ flag=1;break; }
     }
     if(flag==0){
      int k=3;
      while(k--){
      gotoxy(2,i+1);
      for(ii=1;ii<SIZE_M-1;ii++){
       if(map[i][ii]==2){
       if(k%2==1)printf(" ");
       else printf("■");
       }
      }Sleep(100);
      }
      for(ii=i;ii>1;ii--){
      for(jj=1;jj<SIZE_M-1;jj++) map[ii][jj]=map[ii-1][jj];
      }
      ShowMap(-1);
      score+=10;
      if(score%100==0 && score!=0)Gamespeed-=50;
     }
     }
    }
     
    int main(){
     int i,id,set=1;
     
     srand(time(NULL));
     id=rand()%MOD; id=(id+MOD)%MOD;
     next=rand()%MOD; next=(next+MOD)%MOD;
     
     init(id);
     
     while(1){
    Here: mark=0;
     if(set==0){
      id=next;
      next=rand()%MOD; next=(next+MOD)%MOD;
      cur_x=0;cur_y=5;
      set=1;
     }
       
     while(!kbhit()){
      Gameover();
      if(judge_in(cur_x+1,cur_y,id)==1) cur_x++;
      else {
      map[cur_x][cur_y]=2;
      for(i=0;i<6;i=i+2)
       map[ cur_x+shape[id][i] ][ cur_y+shape[id][i+1] ]=2;
      fun_score();
      set=0;
      }
      if(mark!=1)ShowMap(id);
      goto Here;
     }
       
     char key;
     key=getch();
       
     if(key==72){
      int tmp=id;
      id++;
      if( id%4==0 && id!=0 )id=id-4;
      if(judge_in(cur_x,cur_y,id)!=1)id=tmp;
     }
     else if(key==80 && judge_in(cur_x+1,cur_y,id)==1)cur_x++;
     else if(key==75 && judge_in(cur_x,cur_y-1,id)==1)cur_y--;
     else if(key==77 && judge_in(cur_x,cur_y+1,id)==1)cur_y++;
     else if(key==27){gotoxy(1,SIZE_N+1);exit(0);}
     }
     getch();
     return 0;
    }

       3.五子棋

            按wsad移动,j选定

            #include<iostream>
    #include<string>
    #include<windows.h>
    #include<conio.h>
    using namespace std;
    int main()
    {
     int player=1;  //定义一个玩家,当1时为白方,2时为黑方
     //................................棋盘1..............................................
     int qiPan[19][19];  //1.声明一个19行19列的数组来存储棋盘 1
     for(int h=0;h<19;h++) //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
     {
     for(int l=0;l<19;l++)
     {
      qiPan[h][l]=0; //对当前元素进行初始化(赋值),默认为0值
     }
     }
     //...............................棋盘2................................................
     int qiPanTwo[19][19]; //声明一个19行19列的数组来存储棋盘 2
     for(int h=0;h<19;h++) //对数组进行遍历,所有元素进行初始化(赋值),默认为0值
     {
     for(int l=0;l<19;l++)
     {
      qiPanTwo[h][l]=0; //对当前元素进行初始化(赋值),默认为0值
     }
     }
     //...............................光标声明.............................................
     int X=9;   //2.声明并初始化光标的横纵坐标
     int Y=9;   
     qiPan[9][9]=8;
     //..............................显示...................................................
     for(int h=0;h<19;h++)
     {
      for(int l=0;l<19;l++)
      {
      if(qiPan[h][l]==8)
      {
       cout<<"╋";
      }
      else if(qiPanTwo[h][l]==0)
      {
       cout<<"·";
      }
      else if(qiPanTwo[h][l]==1)
      {
       cout<<"●";
      }
      else if(qiPanTwo[h][l]==2)
      {
       cout<<"○";
      }
      }
      cout<<endl;
     }
     //..............................输入控制...............................................
     while(true)
     {
     char xx=getch();  //控制台从键盘获得一个字符
     switch(xx)   //控制
     {
      case 'w':  //上
      Y=Y-1;  //使光标纵坐标-1
      qiPan[Y][X]=8; //讲光标写入棋盘
      qiPan[Y+1][X]=0; //使原本位置的值还原
      break;
      case 's':  //下
      Y=Y+1;
      qiPan[Y][X]=8;
      qiPan[Y-1][X]=0;
      break;
      case 'a':  //左
      X=X-1;
      qiPan[Y][X]=8;
      qiPan[Y][X+1]=0;
      break;
      case 'd':  //右
      X=X+1;
      qiPan[Y][X]=8;
      qiPan[Y][X-1]=0;
      break;
      case 'j':   //落子
      if(player==1)  //如果当前玩家为白色方时
      {
       qiPanTwo[Y][X]=1; //通过棋盘1中的光标位置更改棋盘2中对应元素的值为1,也就是白棋落子
       player=2;  //白棋落子后更换玩家   
      }
      else if(player==2)
      {
       qiPanTwo[Y][X]=2;
       player=1;   
      }
      break;    
     }
     //................................清屏操作................................................
     system("cls");  
     //...............................打印.....................................................
     for(int h=0;h<19;h++)
     {
      for(int l=0;l<19;l++)
      {
     
      if(qiPan[h][l]==8)
      {
       cout<<"╋";
      }
      else if(qiPanTwo[h][l]==0)
      {
       cout<<"·";
      }
      else if(qiPanTwo[h][l]==1)
      {
       cout<<"●";
      }
      else if(qiPanTwo[h][l]==2)
      {
       cout<<"○";
      }
      }
      cout<<endl;
     }
     //.........................游戏规则..............................................
     int shu=1,heng=1,pie=1,na=1;//横竖撇捺
     for(int i=1;i<=4;i++) //上
     {
      if(qiPanTwo[Y+i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      shu++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //下
     {
      if(qiPanTwo[Y-i][X]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      shu++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //左
     {
      if(qiPanTwo[Y][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      heng++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //右
     {
      if(qiPanTwo[Y][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      heng++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //左下
     {
      if(qiPanTwo[Y+i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      pie++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //右上
     {
      if(qiPanTwo[Y-i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      pie++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //右下
     {
      if(qiPanTwo[Y+i][X+i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      na++;
      else
      break;
     }
     for(int i=1;i<=4;i++) //左上
     {
      if(qiPanTwo[Y-i][X-i]==qiPanTwo[Y][X]&&qiPanTwo[Y][X]!=0)
      na++;
      else
      break;
     }
     if(shu==5||heng==5||pie==5||na==5)
     {
      if(qiPanTwo[Y][X]==1)
      {
       cout<<"白子获胜!";
       system("pause");
       break;
      }
      else
      {
       cout<<"黑子获胜!";
       system("pause");
       break;
      }
     }
     }
     return 0;
    }

    展开全文
  • 不说了,直接摆上源码 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<queue> #include<ctype.h> #define A ...
  • c/c++游戏源代码

    2021-05-23 10:06:58
    翻到开学之初写的一些小游戏,陆续给大家发出来,也便提高新手们的编程兴趣。(已详细注释)几个对应头文件需要注意一下,但不必太过恐慌,因为,,,很多,用的时候找需要的即可(在Dev,codeblocks,VC上都能运行)#...
  • 展开全部五子棋的代码:#include#include#include#include using namespace std;const int N=15; //15*15的棋盘const char ChessBoardflag = ' '; //棋盘标志const char flag1='o'; //玩家1或电脑的棋子...
  • C++扫雷小游戏(附赠源代码

    千次阅读 2021-07-16 21:32:06
    扫雷的实现方式及注意事项1.1 实现方式1.2 代码细节1.2.1 完成时间的计算1.2.2 地雷图的随机性1.2.3 关于游戏的合理性和流畅度1.2.3 键盘的操作...机会(二)游戏体验2.1 游戏完整源代码2.2 游戏画面2.3 关于游戏、作者...
  • 经典小游戏大集合(C++ 源码)

    千次阅读 2020-12-22 01:38:11
    【实例截图】【核心代码】经典小游戏大集合(C源码)└── 经典小游戏大集合(C++ 源码)└── 经典小游戏大集合├── BoxMan│ ├── BoxMan.aps│ ├── BoxMan.clw│ ├── BoxMan.cpp│ ├── BoxManDlg.cpp....
  • C/C++游戏及系统源代码,不适合0基础的同学,0基础的同学可参看小店内的其他宝贝,其内有使用说明书及注意要点,部分收集的是历年的论文,有更加详细的解读。 C++源代码 C/C++程序设计 C++代码源码小游戏管理系统 ...
  • /*分数输出函数*/ DELAY(char ch)/*调节游戏速度*/ { if(ch=='3') { delay(gamespeed); /*delay是延迟函数*/ delay(gamespeed); } else if(ch=='2') { delay(gamespeed); } } Menu()/*游戏开始菜单*/ { char ch; ...
  • NOTE:更新,源码及程序可以从百度网盘下载:下载文字RPG游戏NOTE:此游戏是很久之前的作品,由于某些原因不再提供更新,未来有可能提供新版本的游戏代码,敬请期待。NOTE:游戏里面的BUG还很多,所以代码只是供大家...
  • C++实现猜数小游戏源代码

    千次阅读 2020-12-22 13:56:06
    一个粉丝让我帮忙做一个小游戏: 安排: #include<bits/stdc++.h> #define random(x) (rand()%x) using namespace std; int a,b,i=1; int main(){ cout<<"******************************************...
  • 每一个学习软件工程的人,都很想自己写出游戏代码,我也不例外,但是,能写出一些小游戏代码,并不能说明你很厉害,而只能说明你对于这门语言你比较熟悉了。2048这个游戏,是一两年前很火的游戏,不过现在也没...
  • C++自作小游戏 走迷宫(源代码) 大家好,我做了一个走迷宫的c++源代码,适合初学者,可以交流交流,学习学习 可以拿走,收藏哦! 目前只有一种地图,还会改进,多多关照 实际操作: 按W向上,按S向下,按A向左,...
  • C++魂斗罗源代码

    2021-03-16 18:18:07
    【实例简介】C++语言编写的魂斗罗源代码,用visual C++打开【实例截图】【核心代码】51e8eeee-94ae-40e5-95da-770df4a75b42├── C鐗堥瓊鏂楃綏婧愮爜│ ├── contra_c│ │ ├── BGMS.dat│ │ ├── contra....
  • C++自作小游戏 推箱子(源代码) 大家好,我做了一个推箱子的c++源代码,适合初学者,可以交流交流,学习学习 可以拿走,收藏哦! 目前只有一种地图,还会改进,多多关照 实际操作: 按W向上,按S向下,按A向左,...
  • C++6.0 小游戏完整代码

    2020-12-22 01:38:17
    #include#include#include#includevoidgotoxy(intx,inty)//cursorangewuenschtepositionaufdembildschirmsetzen{CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;//variablendklarationHANDLEhConsoleOut;hConsol...
  • 玩家通过移动球杆到单一的桌球处碰撞桌球运动,当桌球于一定速度通过桌面右方的同样颜色的球洞后,则该球进洞,在桌面左边重新分配新球开始游戏。要求如下: 1游戏的初始界面如图,其中左边有一个体积较小的桌球,...
  • c++生命游戏源码

    2021-05-23 07:40:52
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//随机生成细胞的状态MapRand();...
  • C语言贪吃蛇游戏源代码/*Author : 柳印奇email : liuyinqi2012@Description : 蛇年来临创作一个与蛇有关的经典游戏《贪吃蛇》,与同学们分享蛇年美好的时光。欢迎交流与探讨,直接将代码粘贴到VC6.0的环境下即可运行...
  • 【实例简介】打飞机游戏【实例截图】自己玩去【核心代码】#include#include#include#include#includeusing namespace std;/*=============== all the structures ===============*/typedef struct Frame{COORD ...
  • C++围棋游戏

    2021-06-13 03:03:26
    【实例简介】尚未完善的围棋游戏。使用vs2010开发。具有围棋棋盘,棋子界面,已经完成了提子算法。有兴趣的朋友可以与我一起来研究。欢迎大家前来交流【实例截图】【核心代码】MyFirstMFC└── MyFirstMFC├── ...
  • C++坦克大战源代码

    2021-08-06 14:41:09
    源码 #include <iostream> #include <time.h> #include <windows.h> #define W 1 //上 #define S 2 //下 #define A 3 //左 #define D 4 //右 #define L 5 // 坦克有4条命 void HideCursor()...
  • 射击游戏C++代码

    2021-05-22 18:36:27
    附上找到的解析供参考 参考代码: #include #include #include #include #include #include using namespace std; int n; double dp[7][7][7][7][7][7]; double dfs(int *h)///从第一列到最后一列分别有多少个积木 { ...
  • 写了一个短一点的钓鱼小游戏,献上代码^_^: #include<bits/stdc++.h> #include<windows.h> using namespace std; int main() { system("color 4b"); srand(time(NULL)); system("cls"); char name...
  • c实现简单RPG对战游戏代码c++实现简单RPG对战游戏代码#include#include#includeenum propte {sw,ar,mg};class container//人物的小包裹,用来装东西的....目前只装两种物品~有兴趣的可以自己加点东西进去`嘿嘿~{...
  • 游戏讲解游戏概述资源加载游戏概述主要功能函数说明角色类:前期Al的简单实现:源代码下载: 游戏概述 此2D游戏是自己一行一行代码码出来的(参考的游戏也是自己以前做过或者实现的2D游戏),使用的easyx.h的库。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,470
精华内容 29,788
关键字:

c++游戏源码

c++ 订阅