趣味C语言之猜数字游戏

今天为大家带来C语言猜数字小游戏

话不多说,首先确定我们的逻辑框架

1.电脑生成一个1~100的数字

2.猜数字

猜大了,就告诉猜大了

猜小了,就告诉猜小了

猜对了,就结束

好,我们在日常玩游戏,一开始都会出现一个菜单,选择开始游戏或者退出游戏

菜单如图:

函数的名称为menu,内容也很明了,输入1就是开始游戏,输入0就是离开游戏。

所以我们用switch来选择1或0

因为游戏是可以反复进行的,所以我们要使用循环,那么问题来了,要用什么循环呢,如果我们想要一运行代码,就显示游戏菜单,用 do while 循环。

如图:

在电脑内部申请一块空间,创立input,然后输入input,如果intput=1,case1开始游戏,如果input=0,case 0退出游戏,输入的是其他的数就提醒重新输入。

以上是游戏执行的基本框架,还差游戏本身,当case1执行后,游戏就得运行起来了,所以关于游戏执行部分的代码,我们用一个game()函数来写。

在case1后边把那句printf函数替换成game();

在game()函数中

第一步,生成随机数。

怎么生成呢?这里给大家介绍一个库函数rand()

他就是专门用来生成随机数的,从图片里可以得知,rand生成0~32767之间的数字。

把rand()放在game()函数里,让我们运行一下代码

确实是生成随机数了,但是!!如果我们这时候重新来一次运行代码,你会发现一件事,就是第二次生成的随机数,和第一次一模一样。无论试多少次都是一样的。这怎么办呢

注意读这句话

在使用rand前,要使用srand函数来设置随机数的生成,srand是生成随机数的种子

srand()括号里如果放的是一个一成不变数那么生成的随机数永远都是一个,里边是1的话,生成随机数是45,里边是2随机数是60,所以要想srand生成随机数传给rand,srand()里边也得是随机数。

这就迷惑了,无限套娃了嘛这不是,要想获得随机数们就得先传进去一个随机的数。怎么解决?当然有办法!

问:无论什么时候都不会发生停止得东西试什么?

是时间。时间永远在变化。电脑里有一个东西叫做时间戳(新概念要记住),他是一直变化的一个东西,把他放在srand里,srand(时间戳)

时间戳在代码里怎么表示?

如图,里边就是时间戳引用了time函数,也是库函数,用它的时候要有头文件#include<time.h>

好,现在随机数的问题解决了

接下来就是我们该猜一猜了。

创立一个整形变量guess,存储我们猜的数,输入

然后进行判定

猜大了,就告诉猜大了

猜小了,就告诉猜小了

猜对了,就结束

代码实现:

讲解:

rand%100+1是什么意思呢,前面我们提到过,rand函数生成的是0~32767之间的数字,我们想要的是1~100之间的数字,所以%100+1范围就变成了1~100。

完整代码:

#include<stdio.h>
void menu()
{
    printf("*****************\n");
    printf("***** 1.play ****\n");
    printf("***** 0.exit ****\n");
    printf("*****************\n");
}
void game()
{
   //生成随机数
   int ret=rand()%100+1;
   int guess;
   while(1)
   {
       printf("请输入数字:");
       scanf("%d",&guess);
            if(ret>guess)
       {
           printf("猜小了\n");
       }
       else if(ret<guess)
       {
           printf("猜大了\n");
       }
       else
       {
           printf("恭喜你猜对了!\n");
           break;
       }
   }

}
int main()
{
    //设置随机数生成器
      srand((unsigned int)time(NULL));
    int input=0;
    do
    {
      menu();
      printf("是否开始游戏\n");
      scanf("%d",&input);
      switch(input)
      {
        case 1:
        game();
        break;
        case 0:
        printf("退出游戏!\n");
        break;
        default:
        printf("输入错误,请重新输入!");
        break;
      }
    }while(input);

    return 0;
}

运行结果

还有什么不懂的请在评论区发言。

有兴趣的伙伴可以去我的gitee提取更多有趣代码。

https://gitee.com/two-moon-rock/first-bloodf.git

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贰月磐石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值