C语言实现猜数字游戏

简介: C语言实现猜数字游戏

实现大纲:

1.电脑随机生成一个数字

2.猜数字

(1):猜大了,提醒你继续猜

(2):猜小了,提醒你继续猜

(3):猜对了,提醒你:恭喜你!猜对了。并结束游戏

3.玩玩一把不过瘾可以继续玩,不用退出程序;

首先我们要定义一个变量和打印一个菜单告诉玩家该怎么选择,因为程序一开始运行就要进行打印和玩玩游戏后还可以继续进行,所以我们首选do while 循环来实现;

#include<stdio.h>
#include<time.h>
void mnue()
{
  printf("********************\n");
  printf("*****1.玩游戏  *****\n");
  printf("*****0.退出游戏*****\n");
  printf("********************\n");
}
int main()
{
  //打印菜单
  //1.玩游戏
  //0.退出游戏
  srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
    mnue();
    printf("请选择:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("猜数字游戏\n");
      game();
      break;
    case 0:
      printf("推出游戏\n");
      break;
    default:
      printf("选择错误,请重新选择\n");
    }
  } while (input);
  return 0;
}


e73d42278f074cd5947264d8a1e0d162.png


接下来我们就要进行游戏环节的实现,在C语言中rand函数可以生成0—32767的随机数;但是在使用中有很多需要注意的点;

#include<stdio.h>
#include<time.h>
void mnue()
{
  printf("********************\n");
  printf("*****1.玩游戏  *****\n");
  printf("*****0.退出游戏*****\n");
  printf("********************\n");
}
void game()
{
    //1.生成随机数
  int ret = rand();
  printf("%d\n", ret);
  //rand函数可以生成随机数 生成一个0—RAND_MAX的随机数 (0——32767)
    //2.猜数字
}
int main()
{
  //打印菜单
  //1.玩游戏
  //0.退出游戏
  //srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
    mnue();
    printf("请选择:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("猜数字游戏\n");
      game();
      break;
    case 0:
      printf("推出游戏\n");
      break;
    default:
      printf("选择错误,请重新选择\n");
    }
  } while (input);
  return 0;
}


我们试运行两次对会发现每次运行生成的随机数都是相同的

439cc4fb01ab47e6814a4ad1eb65420d.png

3de5c731f5d2483e8853869ddffacdac.png

出现这样的结果是因为rand函数在调用前要使用srand函数,而srand函数的参数必须为一个随机值,这样就出现了类似”先有鸡还是先有蛋“的问题,思考下我们不难发现现实生活中我们的时间总是在变化的,这样就有了时间戳这个名词;时间戳:每一个时刻可以转化为一个数字;恰好C语言中我们有time函数,但是srand函数的返回值必须为usinged int 而time函数的返回值为time_t,所以我们要将time函数的返回值强制转化为usigned int。

#include<stdio.h>
#include<time.h>
void mnue()
{
  printf("********************\n");
  printf("*****1.玩游戏  *****\n");
  printf("*****0.退出游戏*****\n");
  printf("********************\n");
}
time返回值 time_t
sand返回值 unsigned int 
void game()
{
  //  //1.生成随机数
  int ret = rand();//给sand传递一个随机值——时间戳 一个时刻可以转化一个数字  time函数可以返回一个时间戳
  printf("%d\n", ret);
  //  //rand函数可以生成随机数 生成一个0—RAND_MAX的随机数 (0——32767)
  //  //2.猜数字
}
int main()
{
  //打印菜单
  //1.玩游戏
  //0.退出游戏
  srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
    mnue();
    printf("请选择:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("猜数字游戏\n");
      game();
      break;
    case 0:
      printf("推出游戏\n");
      break;
    default:
      printf("选择错误,请重新选择\n");
    }
  } while (input);
  return 0;
}


c70625fe5a29443d8d05158ba9c54003.png

9f582d5436e34af3aa401ca480c0977a.png

这样rand配合着srand和rand函数就可以生成随机数;我们又发现rand函数生成的随机数范围有点大,有点不方便,我们只想要1—100的随机数,我们可以将生成的随机数进行取模,就可以生成0—99的随机数,在+1可以生成1—100的随机数;

让我们来看看完整代码

#include<stdio.h>
#include<time.h>
void mnue()
{
  printf("********************\n");
  printf("*****1.玩游戏  *****\n");
  printf("*****0.退出游戏*****\n");
  printf("********************\n");
}
time返回值 time_t
sand返回值 unsigned int 
void game()
{
  //  //1.生成随机数
  int guess = 0;
  int ret = rand()%100+1;
  //给sand传递一个随机值——时间戳 一个时刻可以转化一个数字  time函数可以返回一个时间戳
  //rand函数可以生成随机数 生成一个0—RAND_MAX的随机数 (0——32767)
  //2.猜数字
  while (1)
  {
    scanf("%d", &guess);
    if (guess > ret)
    {
      printf("猜大了\n");
    }
    else if (guess < ret)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("恭喜你猜对了\n");
      break;
    }
  }
}
int main()
{
  //打印菜单
  //1.玩游戏
  //0.退出游戏
  srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
    mnue();
    printf("请选择:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("猜数字游戏\n");
      game();
      break;
    case 0:
      printf("推出游戏\n");
      break;
    default:
      printf("选择错误,请重新选择\n");
    }
  } while (input);
  return 0;
}


64b24fbe43164bf795c1af3fffe5f171.png

相关文章
|
3天前
|
C语言
【C语言】猜数字小游戏的一步一步实现2
【C语言】猜数字小游戏的一步一步实现
|
3天前
|
算法 C语言
【C语言】猜数字小游戏的一步一步实现1
【C语言】猜数字小游戏的一步一步实现
|
3天前
|
算法 C语言 C++
【C语言实战项目】三子棋游戏
【C语言实战项目】三子棋游戏
33 1
|
3天前
|
程序员 C语言
【C语言实战项目】猜数字游戏
【C语言实战项目】猜数字游戏
31 0
【C语言实战项目】猜数字游戏
|
3天前
|
C语言
关于使用C语言编写一个简单的猜数字游戏
关于使用C语言编写一个简单的猜数字游戏
25 0
|
3天前
|
算法 C语言
【C语言】三子棋游戏实现代码
【C语言】三子棋游戏实现代码
【C语言】三子棋游戏实现代码
|
3天前
|
C语言
C语言-------扫雷游戏的代码实现
C语言-------扫雷游戏的代码实现
29 0
|
3天前
|
算法 C语言 C++
【C语言-扫雷游戏全功能详解】
【C语言-扫雷游戏全功能详解】
40 1
|
3天前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
35 0
|
3天前
|
C语言
C语言实战演练之游戏框架
C语言实战演练之游戏框架