小游戏——猜数字
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("***********************************************\n");
printf("************ 1. play ***************\n");
printf("************ 0. exit ***************\n");
printf("***********************************************\n");
}
void game()
{
//猜数字游戏的实现:
//1.生成随机数
//rand 函数返回0~32767之间的一个随机数
//时间~时间戳
int ret = rand() % 100 + 1;//取余数加一,来限制随机数的范围
//printf("%d\n", ret);//检查产生的随机数ret
//2.猜数字
int guess = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d",&guess);
if (guess < ret)
{
system("cls");//清空屏幕
printf("猜小了\n");
}
else if (guess > ret)
{
system("cls");
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了!!!!\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));//产生的随机数是最难实现的,
int input = 0; //将时间戳返回值强制转化为unsigned int。
do //不需要频繁的设置随机数的起点,再深究就不懂了涉及stand的原理。
{
menu();//打印菜单
printf("请选择:->");
scanf("%d", &input);
switch (input)
{
case 1:
printf("猜数字\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
break;
}
} while (input);
return 0;
}
总结:
1.程序的主体,是由一个很简单的do while循环实现的,判断是否进行游戏。
2.游戏的主体是game()函数,函数内部还是用了一个简单的if else分支来判断三种情况下的输出。
3.关于随机数的产生,复杂程度远远超乎我的预料,我之前一直以为只需要一个简单的rand就可以生成随机数,天真了。