码迷,mamicode.com
首页 > 编程语言 > 详细

真心话大冒险C++版本

时间:2020-06-22 23:24:06      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:memset   好用   etc   彩色   nio   有趣的   inf   有意思   getc   

Hi~

又到了给大家分享知识的时候,之前写的博客都是清一色的题解博客,可能许多小伙伴们对次毫无兴趣,今天我们来整点有意思的东西

那就是<<真心话大冒险>>,hhhhhhh,接下来先让我们看看这个游戏的整个框架吧,然后再来逐一分析。

完整代码如下:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<conio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<cmath>
#include<queue>
#include<algorithm>
#define random(x) (rand()%x)

using namespace std;
struct node
{
    int rating;
    string name;
} gamecase[100];
int s, sizez, sized, randnumber = 40, gamenumber, loc[100];//randnumber表示的是每个的惩罚的个数
double x, y;
string DMX[45] = { "做一个大家都满意的鬼脸", "向一位异性表白3分钟", "与一位异性十指相扣,对视10秒", "坐在异性大腿上坚持10秒", "选两位异性用嘴唇传纸牌", "对外大喊我是猪", "对喂花生米", "女生坐男生小腿上,男生做仰卧起坐", "喝咸味的饮料", "和左边第一个异性换穿上衣", "把右边第一个异性横抱起来", "亲左数第二个异性的额头", "找一男生把腿架他肩膀上让他捶腿", "选一个男生一边捶他的胸一边说:你好讨厌哦", "选一位异性,互摸嘴唇", "隔纸巾接吻", "跳肚皮舞", "亲吻一分钟墙壁", "表演便秘的样子", "给最近的人擦鞋", "给最近的人擦嘴巴", "对陌生人挤眉弄眼", "大喊“燃烧吧小宇宙”", "唱青藏高原最后一句", "表演大猩猩捶胸呐喊", "你真的好讨厌,好讨厌", "做一个大家都满意的鬼脸", "先大笑五秒,再大哭五秒", "学超级名模走秀绕场一周", "对最靠近自己的异性唱首歌", "抱起右手边的人,保持五秒", "原地转十圈然后靠一个人身上", "右手跨过后脑勺从左边摸右眼", "选择一名异性向她/他深情表白", "挤出护手霜,帮最近的异性涂", "想办法让指定的一名异性兴奋起来", "双手揪耳朵说“我错了”并做蛙跳5个", "男生做十五下俯卧撑,女生原地跳十次", "大喊“我是人见人爱、花见花开的小萝莉”", "学动物叫(指定一个动物如:骆驼、蛇等)", "用手纸当围巾围脖子上,并保持到下轮结束", "舔下嘴唇跟正对面的玩家说“你看起来真可口”" };
string ZXH[45] = { "你有没有钟意的人?是谁?", "你想和在场的哪一位玩大冒险?", "每个月的开销是多少?花到哪去了?", "你是处女、处男吗?", "你说过几次“我爱你”?", "你会选择爱还是被爱?", "如果让你拥有一种超能力,你愿意拥有什么呢?", "如果能预知未来,你最不希望看见的是什么?", "当你被我点名的时候是什么心情?", "哭得最伤心的是哪一次?为什么?", "如果有一天自己觉得自己的某一次选择是错的,可是现在已经再也无法重新来,那该怎么办?", "你最怕的事情或东西是什么(说出三件)。", "理想中的另一半是什么样子?", "你有恨过谁吗?", "对你而言,爱情和友情哪个比较重要?", "如果时间能倒流你希望回到哪一时间,为什么?", "每天睡觉前都会想起的人是谁?", "近一个星期内最让你开心的事。", "最害怕的三件事物。", "和异性发生过最暧昧的事情。", "如何向喜欢的人表白?", "我在你眼里什么样?", "你觉得自我最郁闷的外号是什么。", "你最近一次做春梦是什么样貌的。", "你的初吻年龄。", "你最不开心的时候会有什么表现?", "和恋人的身体接触到哪一步了。", "目前最大的愿望?", "童年最有趣的一次经历。", "爱情事业和家庭,你怎么排序?", "最喜欢的三种食物或饮品。", "肯德基或麦当劳,你选哪一个?", "你在生活中有什么比较特殊的癖好?", "你最想要的5样东西", "你有恨过谁吗?", "我和你恋人同时约你,你会陪谁?", "喜欢看什么动画片?", "最珍爱的人是你右手的哪一个手指?", "到目前为止你做过最疯狂的事是?", "如果跟你喜欢的人约会,碰到前任的男(女)朋友,会有什么表现?" };
void Setcolor(unsigned short ForeColor = 2, unsigned short BackGroundColor = 0)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hCon, ForeColor % 16 | BackGroundColor % 16 * 16);
}
bool cmp(struct node a, struct node b)
{
    return a.rating > b.rating;
}
void love()
{
    s = 0;
    Setcolor(15, 0);
    for (x = 1.3; x >= -1.1; x -= 0.1)
    {
        for (y = -2; y <= 1.4; y += 0.053)
        {
            if (pow(x * x + y * y - 1, 3) - x * x * x * y * y <= 0)
            {
                Setcolor(0, rand() % 6 + 10);
                printf(" ");
                Sleep(2);
            }
            else
            {
                Setcolor(0, 0);
                printf(" ");
            }
        }
        printf("\n");
    }
    Sleep(1500);
}
void printlen(int n)
{
    for (int i = 0; i < n; ++i)
    {
        cout << *;
    }
    cout << \n;
}
void printspace(int n)
{
    for (int i = 0; i < n; ++i)
        cout << " ";
}
void quit()
{
    system("cls");
    printspace(5);
    printf("再见啦,记得再找我玩哟\t(づ ̄3 ̄)づ╭?~\n");
    Sleep(1000);
}
void MainDOS()
{
    printspace(5);
    printlen(50);
    printspace(5);
    printf("**         welcome to 真心话大冒险 ^_^          **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**              游戏规则如下:                  **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**你有两个选择,一个是真心话,另一个就是大冒险哦**\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**             那么请按R开始游戏叭!            **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**              按Q可以退出游戏哟!             **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printlen(50);
    puts("\n\n\n");
    printspace(30);
    printf("开发者:Mangata--请关注微信公众号哦:代码小帮手\n");//这里可以随便改成你的名字
}
void playDOS()
{
    system("cls");
    printspace(5);
    printf("  O(∩_∩)O~~   欢迎来到真心话大冒险 (づ ̄3 ̄)づ╭?~\n\n");
    printspace(5);
    printf("╔*☆***◎***◇***☆* 游戏模式 *☆***◇***◎***☆*╗\n");
    printspace(5);
    printf("|★|                                          |★|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("|★|         1.单人模式                       |★|\n");
    printspace(5);
    printf("|☆|         2.多人模式                       |☆|\n");
    printspace(5);
    printf("|★|         3.退出游戏                       |★|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("╚*☆***◎***◇****☆****★****☆****◇***◎***☆*╝\n\n");
    printspace(5);
    printf("主人请选择你想要玩的游戏哦:");
}
void gameDOS1()
{
    system("cls");
    printspace(5);
    printf("☆☆☆☆☆   真心话请按1   ☆☆☆☆☆\n");
    printspace(5);
    printf("★★                            ★★\n");
    printspace(5);
    printf("☆☆☆☆☆   大冒险请按2   ☆☆☆☆☆\n");
    printspace(5);
    printf("★★                            ★★\n");
    printspace(5);
    printf("☆☆☆☆☆  退出游戏请按3  ☆☆☆☆☆\n");
}
void randomgame()
{

    char temp;
    putchar(\n);
    gameDOS1();
    putchar(\n);
    printspace(5);
    printf("主人选择真心话还是大冒险呢,真心话请按1,大冒险请按2哟\n");
    while (temp = _getch())
    {
        if (temp == 1)
        {
            printspace(5);
            cout << "主人抽中的真心话:" << ZXH[random(randnumber)] << endl;
            break;
        }
        else if (temp == 2)
        {
            printspace(5);
            cout << "主人抽中的大冒险:" << DMX[random(randnumber)] << endl;
            break;
        }
        else if (temp == 3)
        {
            quit();
            love();
            exit(0);
        }
        else//处理错误输入
        {
            printf("主人你输错啦,请再输入叭");
            Sleep(1000);
        }
        system("cls");
        gameDOS1();
    }
    printspace(5);
    printf("请主人按任意键继续哦");
    _getch();
    system("cls");
}
void gameDOS2(int number, int lun)
{
    system("cls");
    printspace(5);
    printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    puts(" ");
    printspace(5);
    printf("★★              %d人游戏第%d轮                ★★\n", number, lun);
    puts(" ");
    printspace(5);
    printf("★★            下面的人将接受惩罚:          ★★\n");
    printspace(5);
    int k = 0;
    memset(loc, 0, sizeof(loc));//清空人员地址数组
    queue<int> p;
    printspace(5);
    printf("恭喜序号为:");
    while (k < gamenumber / 2)//筛选出总人数一半的人进行惩罚
    {
        int temp = random(gamenumber + 1);//筛选出随机数
        while (!temp)//防止0的出现,因为人数是从1开始计数的
        {
            temp = random(gamenumber + 1);
        }
        if (!loc[temp])//防止已经被抽到了的玩家再次被抽到
        {
            printspace(5);
            printf("%d", temp);
            k++;
            loc[temp]++;//被抽到的人相应的数组就+1
            p.push(temp);//将抽到的玩家按照先后顺序进入队列
        }
    }
    printf("被惩罚\n");
    putchar(\n);
    printspace(5);
    printf("恭喜你们哟,快点接受惩罚吧  O(∩_∩)O\n");
    for (int i = 1; i <= gamenumber; ++i)//未被抽到的人进行加分操作
    {
        if (!loc[i])
        {
            gamecase[i].rating += 5;
        }
    }
    printspace(5);
    printf("请按任意键继续哦");
    _getch();
    for (int i = 0; i < gamenumber / 2; ++i)//对被抽到的人进行惩罚
    {
        system("cls");
        printspace(5);
        printf("请%d号玩家接受惩罚:\n", p.front());
        p.pop();
        printspace(5);
        printf("请按任意键进入惩罚环节\n");
        _getch();
        randomgame();
        printspace(5);
        if (i == gamenumber / 2 - 1)
            printf("请按任意键结束本轮所有惩罚");
        else
            printf("请按任意键进行下一个惩罚\n");
        _getch();
    }
}
void gameokDOS()//结算界面函数
{
    system("cls");
    sort(gamecase + 1, gamecase + 1 + gamenumber, cmp);
    printspace(5);
    printf("主人,又到了排名清算界面了呢,看看你排在第几名叭!\n");
    for (int i = 1; i <= gamenumber; ++i)
    {
        printspace(5);
        printf("第%d名\trating=%d\t", i, gamecase[i].rating);
        cout << gamecase[i].name << endl;
    }
    putchar(\n);
    printspace(5);
    cout << gamecase[1].name << "是冠军" << "\tohhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!" << endl;
    printspace(5);
    printf("好啦,主人看完排名请按任意键回到菜单哟!");
    _getch();
    memset(gamecase, 0, sizeof(gamecase));//清理游戏数据
}

int main(void)
{

    srand((int)time(NULL));//随机种子
    char choice;//游戏是否开始选择
    MainDOS();
    while (choice = _getch())
    {
        if (choice == Q || choice == q)
        {
            quit();
            love();
            return 0;
        }
        else if (choice == R || choice == r)
        {
            char ch;
            system("cls");
            printspace(5);
            printf("游戏加载中ing......请主人稍等哟\n");
            Sleep(1000);
            playDOS();
            while (ch = _getch())
            {
                if (ch == 1)
                {
                    system("cls");
                    gameDOS1();
                    char temp;
                    int len = 1;
                    while (temp = _getch())
                    {
                        system("cls");
                        if (temp == 3)
                        {
                            quit();
                            love();
                            return 0;
                        }
                        else if (temp == 1)
                        {
                            printspace(5);
                            printf("☆☆                  第%d轮                   ☆☆\n", len++);
                            putchar(\n);
                            printspace(5);
                            printf("☆☆              你选择的真心话               ☆☆\n");
                            putchar(\n);
                            printspace(5);
                            cout << "主人抽中的:" << ZXH[random(randnumber)] << endl;
                        }
                        else if (temp == 2)
                        {
                            printspace(5);
                            printf("☆☆                  第%d轮                   ☆☆\n", len++);
                            putchar(\n);
                            printspace(5);
                            printf("☆☆              你选择的大冒险               ☆☆\n");
                            putchar(\n);
                            printspace(5);
                            cout << "主人抽中的:" << DMX[random(randnumber)] << endl;
                        }
                        printf("\n\n");
                        printspace(5);
                        char t;
                        printf("主人请按任意键继续哟!(づ ̄3 ̄)づ╭?~,按Q就可以返回游戏选择界面哦\n");
                        t = _getch();
                        if (t == Q || t == q)
                            break;
                        system("cls");
                        gameDOS1();
                    }
                }
                else if (ch == 2)
                {
                    system("cls");
                    printspace(5);
                    printf("游戏介绍: 主人你很幸运哟,多人游戏模式是由xxx开发的最新版本\n");
                    putchar(\n);
                    printspace(5);
                    printf("游戏玩的人数的三倍就是游戏的轮数,也就是说两个人进行6轮\n");
                    putchar(\n);
                    printspace(5);
                    printf("每一轮系统会抽出一半的人数,作为接受惩罚的人\n");
                    putchar(\n);
                    printspace(5);
                    printf("而每次没有收到惩罚的人都会得到5积分的加成,游戏结束将会列出积分排行榜\n");
                    putchar(\n);
                    printspace(5);
                    printf("★★主人你要选的多人模式是几个人呢?请在下方输入人数哦,记得按回车哟★★\n");
                    printspace(5);
                    cin >> gamenumber;//人数输入
                    printf("\n\n");
                    printspace(5);
                    printf("主人请分别输入玩家的名字哟,方便待会积分排行榜,可以输入中文名哦\n");
                    printspace(5);
                    printf("主人每输入一个名字请按回车哟,不然我会当成一个人的名字的\n");
                    for (int i = 1; i <= gamenumber; ++i) //存储玩家的名字
                    {
                        printspace(5);
                        cin >> gamecase[i].name;
                    }
                    printspace(5);
                    printf("游戏加载中请主人稍等......");
                    Sleep(1500);
                    for (int i = 1; i <= gamenumber * 3; ++i) //游戏轮回
                    {
                        gameDOS2(gamenumber, i); //调用多人游戏界面
                    }
                    gameokDOS();//调用游戏结束排名清理函数
                    system("cls");
                    printspace(5);
                    printf("本轮游戏结束了哟,正在清理游戏数据,请主人稍等哦\n");
                    Sleep(1500);
                }
                else if (ch == 3)//退出语句
                {
                    quit();
                    love();
                    return 0;
                }
                else//处理输入的其他不相关字符
                {
                    system("cls");
                    printf("主人,我看不懂你的输入呀,请再输入一遍叭\n");
                    Sleep(1500);
                }
                playDOS();//再次调用界面函数,处理不相关字符的再次输入。
            }
        }
        else//处理错误输入
        {
            system("cls");
            printf("唔,你按错了哟主人!再来一次叭");
            Sleep(1500);
        }
        system("cls");
        MainDOS();//调用主界面
    }
    getchar();
    return 0;
}  

  是不是觉得很简单呢?

首先来看第一个函数:

void Setcolor(unsigned short ForeColor = 2, unsigned short BackGroundColor = 0)
{
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hCon, ForeColor % 16 | BackGroundColor % 16 * 16);
}

这个东西,看不懂的不用管,知道这个是调控制台背景色的就行,感兴趣的可以去百度这个Setcolor()函数的定义用法。

 

bool cmp(struct node a, struct node b)
{
    return a.rating > b.rating;
}

这个是为了游戏结束计算各位玩家的rating值用的cmp,感兴趣的可以看看这我的一篇博客:

https://www.cnblogs.com/YHH520/p/12253671.html,比较入门的cmp用法。

 

void love()
{
    s = 0;
    Setcolor(15, 0);
    for (x = 1.3; x >= -1.1; x -= 0.1)
    {
        for (y = -2; y <= 1.4; y += 0.053)
        {
            if (pow(x * x + y * y - 1, 3) - x * x * x * y * y <= 0)
            {
                Setcolor(0, rand() % 6 + 10);
                printf(" ");
                Sleep(2);
            }
            else
            {
                Setcolor(0, 0);
                printf(" ");
            }
        }
        printf("\n");
    }
    Sleep(1500);
}

这个是为了生成爱心的函数,利用的其实就是数学知识,心形函数的画法,感兴趣的可以收藏一下哦,里面的Setcolor是为了生成彩色的爱心?。

效果如图:

技术图片

 

 

 

 

void printlen(int n)
{
    for (int i = 0; i < n; ++i)
    {
        cout << *;
    }
    cout << \n;
}

这个函数就是输出n和*,本来是像用*画界面的,不过后面找到了更好看的?。

 

void printspace(int n)
{
    for (int i = 0; i < n; ++i)
        cout << " ";
}

这个函数是为了打出一定的空格。

 

void quit()
{
    system("cls");
    printspace(5);
    printf("再见啦,记得再找我玩哟\t(づ ̄3 ̄)づ╭?~\n");
    Sleep(1000);
}

游戏退出函数。

 

void MainDOS()
{
    printspace(5);
    printlen(50);
    printspace(5);
    printf("**         welcome to 真心话大冒险 ^_^          **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**              游戏规则如下:                  **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**你有两个选择,一个是真心话,另一个就是大冒险哦**\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**             那么请按R开始游戏叭!            **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printf("**              按Q可以退出游戏哟!             **\n");
    printspace(5);
    printf("**");
    printspace(46);
    printf("**\n");
    printspace(5);
    printlen(50);
    puts("\n\n\n");
    printspace(30);
    printf("开发者:Mangata--请关注微信公众号哦:代码小帮手\n");//这里可以随便改成你的名字
}

这是第一个界面,也就是游戏的主界面,其实这个完全看个人的风格,可塑性比较强,每个人的界面风格可以是不同的 (只要不太非主流hhhh)

效果如图:

技术图片

 

 

 

 

void playDOS()
{
    system("cls");
    printspace(5);
    printf("  O(∩_∩)O~~   欢迎来到真心话大冒险 (づ ̄3 ̄)づ╭?~\n\n");
    printspace(5);
    printf("╔*☆***◎***◇***☆* 游戏模式 *☆***◇***◎***☆*╗\n");
    printspace(5);
    printf("|★|                                          |★|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("|★|         1.单人模式                       |★|\n");
    printspace(5);
    printf("|☆|         2.多人模式                       |☆|\n");
    printspace(5);
    printf("|★|         3.退出游戏                       |★|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("|☆|                                          |☆|\n");
    printspace(5);
    printf("╚*☆***◎***◇****☆****★****☆****◇***◎***☆*╝\n\n");
    printspace(5);
    printf("主人请选择你想要玩的游戏哦:");
}

这是选择游戏的界面,比较单一,就是把这个界面打出来这个同样是可以DIY的,大家能改成自己喜欢的界面^^

效果如图:

技术图片

 

 

 

 

void gameDOS1()
{
    system("cls");
    printspace(5);
    printf("☆☆☆☆☆   真心话请按1   ☆☆☆☆☆\n");
    printspace(5);
    printf("★★                            ★★\n");
    printspace(5);
    printf("☆☆☆☆☆   大冒险请按2   ☆☆☆☆☆\n");
    printspace(5);
    printf("★★                            ★★\n");
    printspace(5);
    printf("☆☆☆☆☆  退出游戏请按3  ☆☆☆☆☆\n");
}

这个同上。

效果图:

技术图片

 

 

 

 

void randomgame()
{

    char temp;
    putchar(\n);
    gameDOS1();
    putchar(\n);
    printspace(5);
    printf("主人选择真心话还是大冒险呢,真心话请按1,大冒险请按2哟\n");
    while (temp = _getch())
    {
        if (temp == 1)
        {
            printspace(5);
            cout << "主人抽中的真心话:" << ZXH[random(randnumber)] << endl;
            break;
        }
        else if (temp == 2)
        {
            printspace(5);
            cout << "主人抽中的大冒险:" << DMX[random(randnumber)] << endl;
            break;
        }
        else if (temp == 3)
        {
            quit();
            love();
            exit(0);
        }
        else//处理错误输入
        {
            printf("主人你输错啦,请再输入叭");
            Sleep(1000);
        }
        system("cls");
        gameDOS1();
    }
    printspace(5);
    printf("请主人按任意键继续哦");
    _getch();
    system("cls");
}
void gameDOS2(int number, int lun)
{
    system("cls");
    printspace(5);
    printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    puts(" ");
    printspace(5);
    printf("★★              %d人游戏第%d轮                ★★\n", number, lun);
    puts(" ");
    printspace(5);
    printf("★★            下面的人将接受惩罚:          ★★\n");
    printspace(5);
    int k = 0;
    memset(loc, 0, sizeof(loc));//清空人员地址数组
    queue<int> p;
    printspace(5);
    printf("恭喜序号为:");
    while (k < gamenumber / 2)//筛选出总人数一半的人进行惩罚
    {
        int temp = random(gamenumber + 1);//筛选出随机数
        while (!temp)//防止0的出现,因为人数是从1开始计数的
        {
            temp = random(gamenumber + 1);
        }
        if (!loc[temp])//防止已经被抽到了的玩家再次被抽到
        {
            printspace(5);
            printf("%d", temp);
            k++;
            loc[temp]++;//被抽到的人相应的数组就+1
            p.push(temp);//将抽到的玩家按照先后顺序进入队列
        }
    }
    printf("被惩罚\n");
    putchar(\n);
    printspace(5);
    printf("恭喜你们哟,快点接受惩罚吧  O(∩_∩)O\n");
    for (int i = 1; i <= gamenumber; ++i)//未被抽到的人进行加分操作
    {
        if (!loc[i])
        {
            gamecase[i].rating += 5;
        }
    }
    printspace(5);
    printf("请按任意键继续哦");
    _getch();
    for (int i = 0; i < gamenumber / 2; ++i)//对被抽到的人进行惩罚
    {
        system("cls");
        printspace(5);
        printf("请%d号玩家接受惩罚:\n", p.front());
        p.pop();
        printspace(5);
        printf("请按任意键进入惩罚环节\n");
        _getch();
        randomgame();
        printspace(5);
        if (i == gamenumber / 2 - 1)
            printf("请按任意键结束本轮所有惩罚");
        else
            printf("请按任意键进行下一个惩罚\n");
        _getch();
    }
}

这两个函数我放在一起,因为这两个函数就是为了多人游戏准备的

第一个randomgame()函数是处理接受惩罚的界面用while防止错误的输入。

第二个函数是打印游戏的轮数以及被抽中惩罚的人的序号,具体细节有注释。

void gameokDOS()//结算界面函数
{
    system("cls");
    sort(gamecase + 1, gamecase + 1 + gamenumber, cmp);
    printspace(5);
    printf("主人,又到了排名清算界面了呢,看看你排在第几名叭!\n");
    for (int i = 1; i <= gamenumber; ++i)
    {
        printspace(5);
        printf("第%d名\trating=%d\t", i, gamecase[i].rating);
        cout << gamecase[i].name << endl;
    }
    putchar(\n);
    printspace(5);
    cout << gamecase[1].name << "是冠军" << "\tohhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!" << endl;
    printspace(5);
    printf("好啦,主人看完排名请按任意键回到菜单哟!");
    _getch();
    memset(gamecase, 0, sizeof(gamecase));//清理游戏数据
}

这个函数是为了游戏结算分数,用一个sort把rating比较搞的排在前面,然后输出第一名??,memset是为了清空多人游戏的信息,为了下一轮游戏做准备。

 

函数就是这么点,游戏的设计思路也很简单,以随机数为主,利用srand((int)time(NULL))作为随机种子保证被惩罚的人的随机性,然后通过各种界面函数的调用构成了这个游戏的大框架。

觉得好用的话请点个赞顺便关注微信公众号:代码小帮手 

谢谢啦!下次再见啦

 技术图片

 

真心话大冒险C++版本

标签:memset   好用   etc   彩色   nio   有趣的   inf   有意思   getc   

原文地址:https://www.cnblogs.com/YHH520/p/13179417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!