学习C语言有一段时间,很有必要,用一个小游戏输出一下自己所学
1. 根据菜单提示选择功能
2.输入猜想的数字进行对比
3.程序提示正确,跳出循环
4.程序提示错误,终止循环
1.生成一个游戏菜单,选择功能
2.将这些内容放进循环中不断参与游戏
3.产生一个随机值,输入猜想数字
4.不断对比,进行大小提示,猜中跳出循环,猜错随机值不变,输入循环
游戏菜单
void menu()
{
printf("########################\n");
printf("########################\n");
printf("#### 0.exit ####\n");
printf("#### 1.play ####\n");
printf("########################\n");
printf("########################\n");
}
游戏功能的实现
void game()
{
int guess = 0;
//1.生成一个随机数
int ret = rand()%100+1;
//printf("%d\n",ret);
//2.猜数字
while (1)
{
printf("猜数字:>");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
关于随机值的实现
随机值使用,我们采用函数rand()
但该函数有个弊端,每次开始游戏,与上一次运行游戏产生的随机值相同,此时我们要用到一个函数srand()对其进行初始化
此时我们有一个时间戳概念:指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据
srand参数为无符号类型,对time进行强制类型转换,time后不需要参数,所以在函数中填入空指针(NULL)
循环参与游戏
int main()
{
int input = 0;
//1.随机数
srand((unsigned int)time(NULL));
do
{
menu();
scanf("%d",&input);
if (input == 0)
{
printf("退出游戏\n");
break;
}
else if (input == 1)
{
printf("进入游戏\n");
game();
}
else
{
printf("输入错误请重新进入游戏\n");
}
} while (input);
return 0;
}
游戏过程