猜数字小游戏

简介: 猜数字小游戏

今天我们用我们之前学得知识做个小游戏,下面开始我们的学习。

目标

我们要猜数字为1到100之间的数

输入数大时,提示你猜大了

输入数小时,提示你猜小了

上面是我们要实现的结果

步骤1

我们先要开始生成一个菜单

#include<stdio.h>
void menu()
{
  printf("******************\n");
  printf("******1.play******\n");
  printf("******0.exit******\n");
  printf("******************\n");
  printf("******************\n");
}
int main()
{
  menu();
  return 0;
}

可以看到我们设置了一个基本的菜单,现在我们要做的就是完成设置一个循环来实现我们的猜数字小游戏,猜数字这个小游戏需要用到do while这个循环,下面我们加入循环来进行操作。

#include<stdio.h>
void menu()
{
  printf("******************\n");
  printf("******1.play******\n");
  printf("******0.exit******\n");
  printf("******************\n");
  printf("******************\n");
}
int main()
{
  int input;
  do
  {
      menu();
      printf("请选择数字>");
      scanf("%d", &input);
    switch (input)//输入几就是进入case几
    {
    case 1:
    {
      printf("进入游戏\n");//这里的代码要改
    }
    case 0:
    {
      printf("退出游戏\n");
      break;
    }
    default:
    {
      printf("请重新选择\n");
      break;//因为输入的是0和1,当输入其他数字的时候就退出
    }
    }
  } while (input);//因为输入1的时候就进入,,可以实现玩多次的效果
  return 0;
}

下面我们开始写猜数字函数的代码

要实现猜数字,首先要生成一个1-100的随机数,然后玩家进行猜数字,如果猜大了输出猜大了,反之猜小了

现在我们要先认识一下上面rand函数

参数是void,说明函数没有参数

这是rand需要包含的头文件

我们可以看到rand函数返回一个随机数,范围是0-RAND_MAX,让我们来看一下RAND_MAX的范围

这是16进制转换为10进制,可以范围是0-32767

void game()
{
  int ret = rand();
  printf("%d\n", ret);
}

这是我们游戏生成随机数的代码,看下面的两次结果

我们可以看到上的结果是一样的,所以这里又存在问题了,如果玩家多玩几次就找到规律,游戏就失去意义。

我们有发现在这里有个srand函数,我们现在研究一下

void game()
{
  srand(1);
  int ret = rand();
  printf("%d\n", ret);
}

void game()
{
  srand(2);
  int ret = rand();
  printf("%d\n", ret);
}

我们可以看大当输入不同的数字的时候,产生随机数才会变,这样我们要一个随机数又要输入一个随机数,这不是个更麻烦,所以我们要改进,引进时间戳这个概念

时间戳顾名思义是表示时间的概念,时间戳的单位是秒,每时每刻都在变,单位是秒。

所以我们得加上time函数来每时每刻改变

time函数需要一个指针,但是设计随机数的时候不需要,我们就可以给一个空指针(NULL),其实time_t是long long 经过重命名的值,我们在使用time函数的时候参数是unsigned int的值。

void game()
{
  srand((unsigned int)time(NULL));
  int ret = rand();
  printf("%d\n", ret);
}

但是这样又会出现问题,如果我们输入快的时候,会发现输入值是一样的,所以我们可以把他放在主函数里,这里就避免这个问题。

解决了上面的问题,我们现在要学怎么样生成一个1-100的函数

int ret = rand()%100+1;

取余数之后是0到99的数,加上1的时候就变成1-100的随机数了

猜数字代码实现

void game()
{
  int ret = rand()%100+1;
  int k = 0;
  while (1)
  {
    printf("猜数字>");
    scanf("%d", &k);
    if (k > ret)
    {
      printf("猜大了\n");
    }
    else if (k < ret)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("猜对了\n");
      break;
    }
  }
}

完整代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void menu()
{
  printf("******************\n");
  printf("******1.play******\n");
  printf("******0.exit******\n");
  printf("******************\n");
  printf("******************\n");
}
void game()
{
  int ret = rand()%100+1;
  int k = 0;
  while (1)
  {
    printf("猜数字>");
    scanf("%d", &k);
    if (k > ret)
    {
      printf("猜大了\n");
    }
    else if (k < ret)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("猜对了\n");
      break;
    }
  }
}
int main()
{
  int input=0;
  srand((unsigned int)time(NULL));
  do
  {
    menu();
    printf("请选择数字>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
    {
      game();
      break;
    }
    case 0:
    {
      printf("退出游戏\n");
      break;
    }
    default:
    {
      printf("请重新选择\n");
      break;
    }
    }
  } while (input);
  return 0;
}

上面就是我们的猜数字代码,大家可以尝试着自己写一下

今天的分享到这里就结束了,我会继续更新分享,希望大家多多支持,我们一起进步吧,谢谢大家!!!


相关文章
|
6月前
|
存储 算法 编译器
捣蛋小游戏——猜数字
捣蛋小游戏——猜数字
|
6月前
|
C语言
史上最简单的C语言猜数字小游戏(1—100随机数)
史上最简单的C语言猜数字小游戏(1—100随机数)
|
6月前
L1-056 猜数字
L1-056 猜数字
34 0
猜数字小游戏
猜数字小游戏
62 0
|
6月前
|
BI
猜数字
猜数字
37 0
|
存储 C语言
你也能做的简单版猜数字游戏(和优化版猜数字)
你也能做的简单版猜数字游戏(和优化版猜数字)
|
Java C语言
用C语言写一个猜数字小游戏
用C语言写一个猜数字小游戏
64 0
|
C++
你猜我猜不猜 (猜数字游戏) 快来小玩一把叭
你猜我猜不猜 (猜数字游戏) 快来小玩一把叭
106 0
猜数字小游戏(加强版)它来了
猜数字小游戏(加强版)它来了
85 0
|
存储 Java
Java实现猜数字小游戏
Java实现猜数字小游戏
69 0