C语言猜数字游戏

简介: 思路:1.电脑产生一个随机数2.猜数字:a.猜大了 b.猜小了 c.猜中了分析:菜单函数:游戏函数:1.产生随机数:2.而srand函数:game函数源码:源码:运行结果截图:

 目录

思路:

1.电脑产生一个随机数

2.猜数字:a.猜大了     b.猜小了    c.猜中了

分析:

菜单函数:

游戏函数:

1.产生随机数:

2.而srand函数:

game函数源码:

源码:

运行结果截图:


思路:

1.电脑产生一个随机数

2.猜数字:a.猜大了     b.猜小了    c.猜中了

分析:

菜单函数:

void menu()
{
  printf("########################\n");
  printf("########1.play#########\n");
  printf("########0.Exit#########\n");
}

image.gif

游戏函数:

1.产生随机数:

a.需要调用rand函数,rand()%100+1表示的是产生一个在1至100的随机数。

原因:任意一个数对100取余数结果必小于100,在加上1则是产生100以内的随机数。

如果对rand函数的概念不理解,可以查一下:

image.gif编辑

b.由上面这个图知道rand随机的范围是0到RAND_MAX,RAND_MAX是7fff(十六进制),转化为十进制是32767,但是如果你只是这样设计的话,你将会发现: 运行这个程序产生随机值后,关闭再运行,会发现两次运行的结果对应的位置随机相同!!!

如下图:

image.gif编辑

c.如果每一轮对应位置的随机值都相同的话,可能与我们的预期不相同,因此我们需要再修改一下!!!那修改什么呢?答案在上上个图:

image.gif编辑

就是最后一句话:

Use the srand function to seed the pseudorandom-number generator before calling rand.

意思:调用rand函数前要调用srand函数进行产生随机数生成器。

2.而srand函数:

Sets a random starting point.设置一个随机的起点。

调用它是:srand(unsigned int seed)这里要放一个时刻变化量,否则产生的随机值是不变的。

image.gif编辑

而什么是时刻可以变化的呢?答案不言而喻,时间呗。

那怎么输入一个时间呢?那么我们需要理解一个给概念:时间戳

image.gif编辑

在C语言中有一个函数可以输出时间戳:time函数

image.gif编辑

由此调用scrand函数是这样的:    srand((unsigned int)time(NULL));

而且这个调用要写在主函数,而不是game函数,因为如果输入过快,则导致两次随机值相同:

image.gif编辑

game函数源码:

void game()
{
  int guess = 0;
  int ret = rand() % 100 + 1;
  printf("%d\n", ret);
  while (1)
  {
    printf("guess the number:");
    scanf("%d", &guess);
      if (guess > ret)
      {
        printf("guess a bigger!\n");
      }
      else if (guess < ret)
      {
        printf("guess a litter!\n");
      }
      else
      {
        printf("Find!\n");
        break;
      }
  }
}

image.gif

源码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void menu()
{
  printf("########################\n");
  printf("########1.play#########\n");
  printf("########0.Exit#########\n");
}
void game()
{
  int guess = 0;
  int ret = rand() % 100 + 1;
  printf("%d\n", ret);
  while (1)
  {
    printf("guess the number:");
    scanf("%d", &guess);
      if (guess > ret)
      {
        printf("guess a bigger!\n");
      }
      else if (guess < ret)
      {
        printf("guess a litter!\n");
      }
      else
      {
        printf("Find!\n");
        break;
      }
  }
}
int main(void)
{
  int input = 0;
  srand((unsigned int)time(NULL));
  do
  {
    menu();
    printf("please choose :->");
    scanf("%d", &input);
    switch (input)
    {
    case 1:game();
      break;
    case 2:printf("EXIT\n");
      break;
    defalut: printf("Choose wrong! again choose!\n");
      break;
    }   
  } while (input);
  return 0;
}

image.gif

运行结果截图:

image.gif编辑


目录
相关文章
|
1月前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
70 8
|
2月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
123 0
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
38 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语言】实现猜数字游戏(分支语句与循环语句的运用)