#define _CRT_SECURE_NO_WARNINGS 1
# include
#include
#include
#include
void menu() {
printf("*****欢迎来到猜数字游戏界面*****\n");
printf("*****1.play*********0.exit.*****\n");
printf("********************************\n");
}
void game() {
int ret = 0;
//rand生成随机数,但只能是固定的一个随机数
//rand的范围在0~32767之间,0后取到余数(两位),最大的余数可以为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((无符号整数)时间(NULL))
rand 函数可以设置系统生成的数字的范围。我们可以用二分查找算法的思维来确定每个输入数字中数字的具体范围。如果你认为猜数字的范围太小,你可以增加它。
在其他方面,使用了大多数游戏中使用的 do..while 循环语句。它执行一次循环体,然后判断是否继续下一个循环;如果您想一直玩,请将判断条件设置为 always true 。
解说就到这里了数字游戏设计,如果觉得有用游戏角色,请关注并去走走!