用C语言实现猜数字游戏的代码

一.随机数的生成
二.猜数字游戏的实现
1.构思
     : 如何产生指定范围的随机数
     :  利用分支,循环的知识点
2. rand函数
    2.1):  C语言提供了一种产生随机数的函数——rand,rand函数会返回一个伪随机数,这个随机数的范围在   0~RAND_MAX之间,RAND_MAX的大小是依赖编译器实现的,但大部分编译器上是32767
    2.2)  :  rand函数调用需引入头文件:#include
    2.3)
#include
#include
int main()
{
    printf("%d\n", rand());//调用rand函数
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());

    return 0;
}

第一次运行结果
用C语言实现猜数字游戏的代码_第1张图片
第二次运行结果
用C语言实现猜数字游戏的代码_第2张图片
解释:其实每次程序运行结果都是一样的,原因是——rand函数生成的随机数是伪随机数,而伪随机数并不是真正的随机数,rand默认的生成随机数的种子是1. 所以要想让程序每次运行结果不同,就需改变种子的值。
2.4): srand 是用来初始化随机数的生成器

srand 原型
void srand(unsigned int seed);

程序在调用rand函数前先调用srand函数,借助srand函数的参数来设置生成rand 函数的随机数的种子
2.5): time

time 函数原型
time_t time (time_t*  timmer);

time 函数的调用需引入头文件 #include
当 time 的参数(timer) 是NULL , time 函数返回的这个时间差叫做时间戳

#include
#include
#include

int main()
{
    srand((unsigned int)time(NULL));
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());
    printf("%d\n", rand());

    return 0;
}

每次运行结果

用C语言实现猜数字游戏的代码_第3张图片
用C语言实现猜数字游戏的代码_第4张图片
2.6)设置随机数的范围

生成0~99 之间的随机数
rand()%100;
//  %100 的余数是0~99 
生成0~100 之间的随机数
rand()%100 +1;
//  %100 的余数是0~99 +1,对应的范围是1~100

综上,要产生 a~b这个范围的随机数

a + rand() % (b - a) + 1;
3.猜数字游戏的实现
主函数对应的内容:
 
int main()
{
    srand((unsigned int)time(NULL));
    int input = 0;//表示:玩家输入的数字
    do
    {
        menu();//调用菜单
        printf("请选择:");
        scanf("%d", &input);//键盘输入
        switch (input)
        {
        case 1:
            game();//调用game函数
            break;
        case 0:
            printf("游戏结束");
            break;
        default :
            printf("输入错误,请重新输入");
        }while(input)
    }
    return 0;
}
game 函数对应的内容
void game()
{
    int r = rand() % 100 + 1;//产生1~100之间的随机数
    int guess = 0;//表示每次 玩家猜的数字
    while (1)
    {
        printf("请输入要猜的数字\n");
        scanf("%d",&guess);
        if (r > guess)
        {
            printf("猜小了\n");
        }
        else if (r < guess)
        {
            printf("猜大了\n");
        }
        else
        {
            printf("Good! 猜对了\n");
        }
    }

}
menu对应的内容
void menu()
{
    printf("************************\n");
    printf("****** 1.play     ******\n");
    printf("*****  0.exit     ******\n");
    printf("************************\n");
}
完整代码
#include
#include
#include
void menu()
{
    printf("************************\n");
    printf("****** 1.play     ******\n");
    printf("*****  0.exit     ******\n");
    printf("************************\n");
}
void game()
{
    int r = rand() % 100 + 1;//产生1~100之间的随机数
    int guess = 0;//表示每次 玩家猜的数字
    while (1)
    {
        printf("请输入要猜的数字\n");
        scanf("%d",&guess);
        if (r > guess)
        {
            printf("猜小了\n");
        }
        else if (r < guess)
        {
            printf("猜大了\n");
        }
        else
        {
            printf("Good! 猜对了\n");
        }
    }

}

int main()
{
    srand((unsigned int)time(NULL));
    int input = 0;//表示:玩家输入的数字
    do
    {
        menu();//调用菜单
        printf("请选择:\n");
        scanf("%d", &input);//键盘输入
        switch (input)
        {
        case 1:
            game();//调用game函数
            break;
        case 0:
            printf("游戏结束\n");
            break;
        default :
            printf("输入错误,请重新输入\n");
        }
    } while (input);
    return 0;
}

限制猜的次数,比如五次猜不出即失败

#include
#include
#include
void menu()
{
    printf("************************\n");
    printf("****** 1.play     ******\n");
    printf("*****  0.exit     ******\n");
    printf("************************\n");
}
void game()
{
    int r = rand() % 100 + 1;//产生1~100之间的随机数
    int guess = 0;//表示每次 玩家猜的数字
    int count = 5;
    while (count)
    {
        printf("你还有%d次机会\n", count);
        count--;
        printf("请输入要猜的数字\n");
        scanf("%d",&guess);
        if (r > guess)
        {
            printf("猜小了\n");
        }
        else if (r < guess)
        {
            printf("猜大了\n");
        }
        else
        {
            printf("Good! 猜对了\n");
        }
    }
    if (count == 0)
    {
        printf("你失败了,正确数是 %d\n", r);
    }

}

int main()
{
    srand((unsigned int)time(NULL));
    int input = 0;//表示:玩家输入的数字
    do
    {
        menu();//调用菜单
        printf("请选择:\n");
        scanf("%d", &input);//键盘输入
        switch (input)
        {
        case 1:
            game();//调用game函数
            break;
        case 0:
            printf("游戏结束\n");
            break;
        default :
            printf("输入错误,请重新输入\n");
        }
    } while (input);
    return 0;
}

你可能感兴趣的:(c语言,游戏,开发语言)