C语言实现猜数字游戏详解
文章目录
一、游戏介绍
1.先由计算机生成一个1~100的随机数
2.玩家进行猜数字,计算机会根据猜测数字的大小给予大了或小了的反馈,玩家根据反馈更改自己数值,直至猜对或次数用完。
二、游戏前的准备
1.生成随机数
1.1 rand函数
rand函数可以生成随机数,其函数原型如下:
int rand(void);
rand函数需要包含头文件<stdlib.h>,会产生一个随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。
但需要注意的是,rand函数生成的是伪随机数。
代码如下(示例):
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
}
虽然产生了随机数,但是可以看到第一次和第二次生成的随机数完全相同,接下来我们引入随机数生成种子的概念。
1.2 srand函数
rand函数⽣成随机数的默认种⼦是1。如果要⽣成不同的随机数,就要让种⼦是变化的。
srand函数用来初始化随机数的生成器,要包含头文件<stdlib.h>,原型如下:
void srand (unsigned int seed);
程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就会发生变化。
那如何让随机数种子发生变化呢?
1.3time函数
time函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒。原型如下:
time_t time (time_t* timer);
time函数要包含头文件<time.h>。
2.设置随机数的范围
如果要生成 a~b 范围的随机数,方法如下:
a + rand()%(b-a+1);
⽣成随机数的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//使⽤time函数的返回值设置种⼦
//因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换
srand((unsigned int)time(NULL));
printf("%d\n", rand());
return 0;
}
三、游戏实现
参考代码如下:
1.打印菜单函数
void menu()
{
printf("**************************\n");
printf("********* 1.Game**********\n");
printf("********* 0.Exit**********\n");
printf("**************************\n");
}
2.游戏函数
void game()
{
int number = rand() % 100 + 1;
int guess = 0;//存放玩家猜测的数字
int count = 6;//用来纪录剩余猜测机会
while (count)
{
printf("你还有%d次机会\n", count);
scanf("%d", &guess);
//反馈所猜数字的大小
if (guess > number)
{
printf("猜大了,往小了猜!\n");
}
else if (guess < number)
{
printf("猜小了,往大了猜!\n");
}
else
{
printf("哎,你他娘的还真是个天才!!!\n");
break;
}
count--;
}
if (count == 0)
{
printf("你个笨蛋,这么多次都猜不对?\n");
printf("正确值是:%d\n", number);
}
}
3.主体函数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand((unsigned int)time(NULL));//设置随机数的生成起点
int input = 0;
do
{
//打印菜单
menu();
printf("请选择:");
scanf("%d", &input);
//输入1,表示开始游戏。
//输入0,表示结束游戏。
//输入其他数字,则无效,重新输入。
switch (input)
{
case 1:
printf("1——100猜数游戏现在开始\n");
game();//开始玩游戏。
break;
case 0:
printf("退出游戏!!\n");
break;
default:
printf("请输入正确指令,否则你的电脑将会爆炸!!!\n");
break;
}
} while (input);
return 0;
}
4.运行结果
总结
本文对用C语言编写猜数字游戏进行了详细介绍,包括如何生成随机数,如何得到变化的随机数生成种子,最后给出了游戏的完整代码。相信通过自己编程小游戏,可以对学过的知识进行巩固,还可以提升成就感,增加对编程的兴趣。