#define _CRT_SECURE_NO_WARNINGS 1
# include<stdio.h>
#include<Windows.h>
#include<time.h>
#include<stdlib.h>
void menu() {
printf("*****欢迎来到猜数字游戏界面*****\n");
printf("*****1.play*********0.exit.*****\n");
printf("********************************\n");
}
void game() {
int ret = 0;
//rand生成随机数,但只能是固定的一个随机数
//rand的范围在0~32767之间,%100后取到余数(两位),最大的余数可以为99,所以范围就变成了0——99,+1后是:1-100
ret = rand() % 100+ 1;//给予猜数字的范围(1-100)
//若是想范围在:1000——9999的话 可以为(0-8999)+1000
int guess = 0;
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;
//想要使rand随机的生成一个随机数就要用到srand函数。
//srand设置随机数的起点,但这个起点得是随机的,所以用到了时间戳
srand((unsigned int) time(NULL));//time--时间戳(与系统从1970-0-0至今的时间,时时刻刻在变化),增强随机数的随机性(使系统在输出随机数的时候能保持随机性)
do {
menu();//菜单
printf("请输入你的选择:>\n");
scanf("%d", &input);
switch (input) {
case 1:
game();
break;
case 0:
printf("即将退出程序!\n");
Sleep(1000);
exit(0);//终止游戏
break;
default:
printf("输入的选择有误,请重新输入!\n");
break;
}
} while (input);
return 0;
}
猜数字游戏的关键核心在于猜,所以用到了rand函数与srand函数,这两个函数的用法与我上篇文章讲到的井字棋游戏 用法相同,都是为了让系统产生的随机数能够更加随机性的产生,时间戳是关键语句:
srand((unsigned int) time(NULL))
而rand函数能够设置系统产生数字的范围,我们在每次输入的数字中可以通过二分查找的算法思维去判断数字所在的具体范围。若是觉得设置猜数字的范围过小的话,调大即可。
而其他方面就是用到了大部分游戏都会用到的do..while循环语句,它是先执行一次循环体再进行判断是否继续下一次循环;想要一直玩的话,就把判断条件设置成永真。
讲解就到这里,如果觉得有用的话就点个关注走一走吧!