0
点赞
收藏
分享

微信扫一扫

简单的猜数字游戏的实现

左手梦圆 2022-04-18 阅读 68

猜数字游戏的实现

设计一个猜数字游戏:
1.要猜的数字范围是1~100
2.用户可以选择重复选择,直到用户不想玩该游戏

大体思路

  • 用户必须登录一次,最多可以登录三次。故可采用do while循环,将猜的部分放在do中。
  • 用户选择之前得打印菜单,给出选择到底是玩还是不玩,还是其他情况。故将这部分可采用switch语句,以便实现不同的分支。
    • 选择玩,则进入游戏部分,将这部分封装成一个函数选择不玩,跳出do while循环选择其他的值,再给机会进行选择

代码的模拟实现

1.大体的代码的实现(初步确定一个轮廓)

#include <stdio.h>

void menu()
{
    printf("******************\n");
    printf("******0.exit******\n");
    printf("******1.play******\n");
    printf("******************\n");
}

int main()
{
    int input = 0;
    do 
    {
        menu();
        scanf("%d", &input);
        switch (input)
        {
            case 0:
                printf("结束游戏!\n");
                break;
            case 1:
                printf("开始游戏!\n");
                break;
            default:
                printf("选择错误,请重新选择!\n");
                break;
		}
    } while (input);
    return 0;
}
  • 上述代码利用到的很巧妙的一点是将input的值放入while中
    • 在C语言中0表示的是假,非0表示的是真
    • 一旦用户选择0之后,跳出循环来到while中,因为input=0的,所以并不会继续执行do while循环,而是来到return的前面!

运行截图
在这里插入图片描述

  • 大体上代码的实现已经完成!下面是细节的实现!

2.精细代码的实现

  • 在这部分,将实现的是猜数字游戏的重点部分
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void menu()
{
    printf("******************\n");
    printf("******0.exit******\n");
    printf("******1.play******\n");
    printf("******************\n");
}

void game()
{
    int guess = 0;
    int ret = rand() % 100 + 1;//产生一个1~100的随机数
    while (1)
    {
        printf("请输入一个你猜的数字!\n");
        scanf("%d", &guess);//输入的数必须要放在循环内,不然容易导致死循环
        if (guess > ret)
        {
            printf("猜大了!\n");
        }
        else if (guess < ret)
        {
            printf("猜小了!\n");
        }
        else
        {
            printf("猜对了!\n");
            break;//一旦猜对就跳出循环,游戏结束。
        }
    }
}

int main()
{
    int input = 0;
    srand((unsigned int)time(NULL));//给rand设置一个起点
    do
    {
        menu();
        scanf("%d", &input);
        switch (input)
        {
        case 0:
            printf("退出游戏\n");
            break;
        case 1:
            game();//封装一个游戏函数
            break;
        default:
            printf("选择错误,请重新选择!\n");
            break;
        }
    } while (input);
    return 0;
}
  • 几点重要问题的说明
  1. 要猜一个数,首先得给定一个数,下面会说明有关函数的使用!
  2. 要输入一个要猜的数,且与随机数相比较!这个输入的数必须要放入循环内,否则一旦输入一个非0的值,就会导致死循环

rand函数

函数的描述

函数的作用:Generates a pseudorandom number.--生成一个随机数
需要引用的头文件:#include <stdlib.h>
返回值的范围是:0~RAND_MAX(32767)
需要配合srand函数使用

函数的组成

int rand(void);

函数的返回值是int
函数无参

srand函数

函数的描述

函数的作用:设置一个随机数起点
需要引用的头文件:#include <stdlib.h>

函数的组成

void srand(unsigned int seed);

函数无返回值
参数是无符号整型
  • 众所周知的是,时间是不断变化的;因此,我们可以利用时间戳来设置srand的参数

time函数

函数的描述

函数的作用:Time返回以秒为单位的时间,没有错误返回。
需要引用的头文件:#include <time.h>

函数的组成

time_t time(time_t *timer);

time_t的类型实际上是一个长整型:long long
返回值是time_t
函数的参数是一个指针
  • 通过上述函数基本功能的了解:可以很好的解释srand((unsigned int)time(NULL)); 以及rand() % 100 + 1; 两个语句的作用!
  1. rand函数返回的是0~32767中的一个随机值,将其%100得到的是0 ~ 99的数,加上1之后的范围就是1~100。
  2. rand函数的使用得设置一个起点,且这个起点只用设置一次就行!
  3. srand中的参数是一个无符号整型,又因为必须是随机的,故使用时间戳作为参数!但是,时间戳返回值是长整型,故将其强制类型转化为unsigned int。time中的参数是指针,故使用空指针(NULL)作为其参数。

3.写到这,猜数字游戏已经全部完成!下面让我们来试试看,简单的猜数字游戏吧!

运行截图

在这里插入图片描述

举报

相关推荐

0 条评论