游戏:猜数字
电脑将生成一个1到100以内的随机数
玩家将猜那个随机数的大小是多少
若猜的数要大于随机数时将提示猜大了
猜的数要小于随机数时将提示猜小了
直到猜对为止,游戏结束
可选择再来一盘或退出游戏
猜数字游戏(C语言)
代码实现:
一,首先选择开始游戏或退出游戏

建立一个菜单
让玩家可以选择开始或退出
猜数字游戏(C语言)
假设玩家选择1.play则游戏开始
若玩家选择0.exit则退出游戏
选择开始:
猜数字游戏(C语言)
利用do while循环使代码至少执行一次
防止玩家输入除1.0以外的其他值后游戏出现bug
当玩家输入除1.0以外的其他值后会提示输入错误将重新选择
当玩家选择1时提示玩家游戏开始
当玩家选择0时提示玩家游戏结束,退出游戏

二,实现游戏game()函数
电脑将利用时间戳随机生成一个会变化的随机数
猜数字游戏(C语言)
C语言中提供了一个函数专门用来生成随机数
rand();
此函数将随机生成一个0-32767之间的一个数
猜数字游戏(C语言)
int rand(void)
rand 函数使用时不需要传递参数;但是会返回一个int类型的随机值
并且由于引用的是库函数所以需要引有文件 #include<stdlib.h>
猜数字游戏(C语言)
用变量ret接收rand函数的返回值,这个返回值就是这个随机数
注意:
生成随机数每次游戏生成的随机数将相同
猜数字游戏(C语言)
在调用rand这个函数之前要先调用srand函数
猜数字游戏(C语言)
猜数字游戏(C语言)
void srand(unsigned int seed);用来设置一系列的随机数
需要传递一个无符号的整形设置
不会产生返回值
如果随便输入一个不变的数字的话,每次游戏生成随机数都将不变
猜数字游戏(C语言)
猜数字游戏(C语言)
猜数字游戏(C语言)
猜数字游戏(C语言)
所以srand里面需要设置一个随机值
时间每秒都在变化
所以使用时间戳来设置随机值
猜数字游戏(C语言)
猜数字游戏(C语言)
猜数字游戏(C语言)
使用time_t time(time_t timer);函数获取计算机时间
不过它是以time_t的形式返回的
time_t本质上是一个长整形
需要传递(time_t
timer)的是timer的地址
需要引头文件#include<time.h>
猜数字游戏(C语言)
将time函数的返回值强制类型转化为unsigned int
NULL为空指针
猜数字游戏(C语言)
注意:不要每次都设置时间起止点,时间相近时,生成的随机数也相近
猜数字游戏(C语言)
所以只需要在开始游戏的时候设置一次随机数的时间起点就可以了
猜数字游戏(C语言)
生成的随机数有点太大了
建议生成一个1-100之间的随机数
猜数字游戏(C语言)
将生成的随机数模上100,那么这个随机数将在1-99之间,然后再加1,将这个随机数设置在1-100之间了
猜数字游戏(C语言)
玩家开始猜数字
猜数字游戏(C语言)
如果玩家输入的数字比随机数大,电脑将提示猜大了,然后接着猜
如果玩家输入的数字比随机数小,电脑将提示猜小了,然后接着猜
如果玩家输入的数字与随机数相同,将不需要继续猜了,要退出循环,游戏结束
来到main函数switch 中的case1:game();语句 的后面,break;跳出switch
来到do while()循环处,重新开始选择游戏的继续或结束,
可以选择继续游戏或退出游戏
代码
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("############################\n");
printf("#### 1.play 0.exit ######\n");
printf("############################\n");
}
void game()
{
//生成一个随机数
int ret = 0;
//拿时间戳来设置来设置随机数
//time_t time(time_t,*timer)
//time_t
//srand(unsigned int (time_t(NULL))
ret = rand()%100+1;//生成了100以内的随机数
//printf("%d\n", ret);
//2.开始猜数字
int guss = 0;
while ( 1 )
{
printf("请猜数字:");
scanf("%d", &guss);
if (guss > ret)
{
printf("猜大了\n");
}
else if (guss < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜,猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();//菜单
printf("请输入(1/0):");
scanf("%d", &input);
switch (input)
{
case 0:
{
printf("退出游戏\n");
break;
}
case 1:
{
game();//猜数字游戏
break;
}
default:
{
printf("选择错误\n");
break;
}
}
} while (input);
return 0;
}