如何用c语言实现猜数字游戏?

说到猜数字游戏,相信每位码人都再熟悉不过了。大家还记得最开始接触的c语言猜数字游戏是怎么实现的呢?是否也是下图这样自导自演式的游戏呢?

这是当时学校的老师带着我们写的猜数字游戏,自己设置数字去猜,没什么意义。

但这次要写的猜数字游戏可不是这样的,而是编译器随机产生一个数字,然后去猜,这样的玩法才是真正的猜数字游戏。

猜数字游戏基本逻辑包括:

1.进入游戏菜单,选择进入游戏或者退出游戏。

2.选择进入游戏后,调用实现游戏的函数,开始猜数字,猜大了或猜小了,编译器进行提示,直至猜对。

3.猜对了,跳出游戏,回到菜单选择,继续或退出游戏。

下面一 一实现:

1.进入游戏菜单,调用menu函数打印菜单

2.1进入游戏,先看目前的运行状态

2.2 继续进行菜单选择的内容,选择1进入游戏,选择0退出游戏,用switch()语句实现。游戏可以玩多次,因此把switch语句放在循环里进行,这里使用do while()循环语句:

2.3继续写game函数,完成猜数字游戏 ,此时涉及到一个问题,在输入所猜的数字之前,编译器需要先产生一个随机数。这里用rand()实现随机数的生成,需要包含头文件为<stdlib.h>

2.4此时,猜数字游戏已经基本实现了。但还存在一个问题,rand() 产生的是伪随机数字,每次执行时是相同的; 若要不同, 在主函数里,用函数 srand() 初始化它,srand() 用来设置 rand() 产生随机数的随机数种子,可以利用时钟作为随机数的种子--srand((unsigned int)(time(NULL)) ,这样每次运行产生的随机数就会不同,因为每一次运行程序的时间是不同的。

srand需要包括的头文件<stdlib.h>,   时钟需要包括头文件<time.h>

3. 猜数字游戏已经实现了,下面来看效果:

第一次:产生的随机数是62

第二次:产生的随机数是69

 

 并且产生的随机数范围也是可以改动的。若rand()%100改为rand()%1000,则随机数范围在1--1000

 

对于rand和srand的具体讲解,可以参考 fttps://www.runoob.com/w3cnote/cpp-rand-srand.html 

猜数字游戏总代码:

#include<stdio.h>

#include<stdlib.h>
#include<time.h>
void menu()
{
    printf("*********************************\n");
    printf("********    1.play      *********\n");
    printf("********    0.exit      *********\n");
    printf("*********************************\n");
}
void game()
{
    int guess = 0;
    //num是编译器随机生成的随机数,rand()可产生随机数
    //rand()产生随机数的范围为0--32767
    //若把随机数范围控制在1--100,让产生的随机数%100+1即可
    int num = rand()%100+1;//将产生的随机数控制在1--100
    while (1)
    {
        scanf("%d", &guess);
        if (guess > num)
        {
            printf("猜大了!\n");
        }
        else if (guess < num)
        {
            printf("猜小了!\n");
        }
        else
        {
            printf("猜对了!\n");
            break;
        }
    }
}
int main()
{
    int input = 0;
    srand((unsigned int)time(NULL));//设置 rand() 产生随机数时的随机数种子,利用时钟作为随机数的种子
    do
    {
        menu();//打印菜单
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
               printf("进入游戏,请猜数字:");
               game();//调用game函数实现猜数字游戏
               break;
        case 0:
               printf("退出游戏!\n");
               break;
        default:
               printf("选择错误,请重新选择:\n");
               break;
        }
            
    } while (input);//输入的若是0,退出游戏,循环结束
}

总结:

真正的猜数字游戏的核心在于编译器产生随机数,并且每次运行所产生的随机数不同,需要用到函数rand和srand,rand用来产生随机数,srand用来初始化rand随机数种子,把时钟作为随机数种子,每次运行程序的时间不同,从而每次产生的随机数是不同的。

整篇就到这里了,本人初学C语言,若该文章有什么问题,欢迎大佬们留言给予建议!谢谢大家的阅览!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值