快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

【C语言】-猜数游戏-简单版-创新互联

    • 🍑游戏内容概述

玩家需要在1-100之间猜一个数,每猜一次程序就会提示一次是猜大了或猜小了,直至猜中为止

成都创新互联专注于企业营销型网站、网站重做改版、额尔古纳网站定制设计、自适应品牌网站建设、H5技术成都商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为额尔古纳等各大城市提供网站开发制作服务。
    • 🍎各板块描述

(1)简单主界面

玩家需通过输入1或0来选择是否进行游戏,通过简单的输出函数printf即可实现主界面的打印

代码如下:

void menu()
{
    printf("************\n");
    printf("*  1.Play  *\n");
    printf("*  0.Exit  *\n");
    printf("************\n");
    printf("intput to choose:\n");
}

(2)游戏实现

游戏的实现可分为两部分,随机数的生成与猜数环节

  • 随机数的生成:

这里需要借助三个函数来实现,分别是:

rand()——生成的随机数,头文件为

srand()——随机数的生成器,需和rand()函数配套使用,头文件为

time()——时间戳函数,需要一个不断变化的数来作为生成随机数的来源,头文件为

代码如下:

srand((unsigned int)time(NULL));
    int random_num = rand() % 100 + 1;

其中函数用法简单解释:

对srand():

由其定义可看出其返回值为空,其参数为unsigne int型(seed可以理解为随机数的来源),故在调用该函数时需要给它传一个unsigne int型的值

对time():

首先,其中的返回与参数类型time_t通过编译器(VS2022)的转到定义查看可知其本质上是int型:

故当我们将其作为srand函数的参数时需对其进行强制类型转化为unsigned int型

其次,time函数的参数为指针变量,但其实我们不需要传具体的参数,故直接传一个空指针NULL

对rand():

可以看出,我们需先在rand()之前使用srand()来生成随机数,随机数生成完毕后rand()返回的就是生成的随机数,故可直接用它进行赋值,整合起来也就有了上面那两行代码

(PS:以上关于函数的声明、定义及使用方法等均来自MSDN)

  • 猜数环节:

循环输入猜的数,和随机数进行对比,直至猜中跳出循环

代码如下:

int guess_num = 0;
    while (1)
    {
        scanf("%d", &guess_num);
        if (guess_num< random_num)
            printf("Bigger\n");
        else if (guess_num >random_num)
            printf("Smaller\n");
        else if (guess_num == random_num)
        {
            printf("Bingo!\n");
            break;
        }
    }
  • 整合起来放到一个game()函数中:

代码如下:

void game()
{
    srand((unsigned int)time(NULL));
    int random_num = rand() % 100 + 1;
    //随机生成1-100之间的数

    printf("Start Guessing!\n");
    int guess_num = 0;
    while (1)
    {
        scanf("%d", &guess_num);
        if (guess_num< random_num)
            printf("Bigger\n");
        else if (guess_num >random_num)
            printf("Smaller\n");
        else if (guess_num == random_num)
        {
            printf("Bingo!\n");
            break;
        }
    }
}

(3)逻辑连接

在前两步的基础上进行主函数的编写:我们需要先打印一次菜单,随后进行选择是否进行游戏,故选择采用do while的循环语句。在循环中,若输入1则执行(2)中实现的game()函数;若输入0则退出循环,结束游戏(程序);若输入了其他数,则提示输入非法并重新输入

代码如下:

int input = 0;
    do
    {
        menu();
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
        case 0:
            break;
        default:
            printf("Input error! Please input again\n");
        }
    } while (input);
    • 🍅完整代码

完整的代码如下:

#include#include#include//功能描述:
//1.    输入1和0选择是否进行游戏
//2.    生成随机数
//3.    每次猜数后给予相应反馈——猜大、猜小、猜中

//打印菜单
void menu()
{
    printf("************\n");
    printf("*  1.Play  *\n");
    printf("*  0.Exit  *\n");
    printf("************\n");
    printf("intput to choose:\n");
}
//游戏实现
void game()
{
    srand((unsigned int)time(NULL));
    int random_num = rand() % 100 + 1;
    //随机生成1-100之间的数

    printf("Start Guessing!\n");
    int guess_num = 0;
    while (1)
    {
        scanf("%d", &guess_num);
        if (guess_num< random_num)
            printf("Bigger\n");
        else if (guess_num >random_num)
            printf("Smaller\n");
        else if (guess_num == random_num)
        {
            printf("Bingo!\n");
            break;
        }
    }
}
int main()
{
    int input = 0;
    do
    {
        menu();
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
        case 0:
            break;
        default:
            printf("Input error! Please input again\n");
        }
    } while (input);
    
    return 0;
}

运行结果:

    • 🥦趣味拓展

在上述的基础上还可以创建一个变量来限定猜的次数,若在指定的次数内没猜对则可执行一些“惩罚”,比如关机什么的😂,大家还有什么好玩的建议可以留个评论呀~😁

看完觉得有觉得帮助的话不妨点赞收藏鼓励一下,有疑问或看不懂的地方或有可优化的部分还恳请朋友们留个评论,多多指点,谢谢朋友们!🌹🌹🌹

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:【C语言】-猜数游戏-简单版-创新互联
文章出自:http://6mz.cn/article/dosesc.html

其他资讯