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

相关文章
|
1月前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
71 8
|
2月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
124 0
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
40 2
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
100 1
|
2月前
|
编译器 C语言
猜数字游戏实现#C语言
猜数字游戏实现#C语言
91 1
|
2月前
|
存储 C语言
揭秘C语言:泊舟的猜数字游戏
揭秘C语言:泊舟的猜数字游戏
|
2月前
|
C语言 开发者
C语言实现猜数字小游戏(详细教程)
C语言实现猜数字小游戏(详细教程)
|
2月前
|
存储 算法 安全
C语言实现扫雷游戏
C语言实现扫雷游戏
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)