一、菜单的样式
关于菜单的样式其实可以自己进行DIY,在这里只是一个示范。如下代码,按“1”开始游戏,看“0”退出游戏。我们将其定义为一个函数,不需要返回类型故此返回类型为void.
void menu()
{
printf("**************************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("**************************\n");
}
二、猜数字游戏的主体--可以不断生成随机数字的函数
首先,猜数字我们总得有一个范围,在这里博主以1-100为例子。在这里介绍一个函数:rand()。它可以为我们生成一个随机的数字。此函数需要提前包含头文件“<stdlib.h>”。因为我们的范围是1-100,可以将其取与100的模,这样就可以得到0-99的数字,我们加上1即可调整范围。添加While循环即可重复进行猜数字的操作啦。将其包装成一个函数。
void game()
{
int num = 0;
int ret = rand()%100+1;
printf("%d\n", ret);
while (1)
{
printf("请猜数字:>");
scanf("%d", &num);
if (num < ret)
{
printf("猜小了\n");
}
else if (num > ret)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
三、主函数的编写
但由于随机数的生成每一次都是一样的。比如这一次是2 9 11 442 下一次重新开始游戏依旧是2 9 11 ......这会让游戏体验打折扣。试想一下,如果你玩猜数字,每一次的随机数都是一样的,那还要什么一样呢。但是我们注意到,rand函数生成的随机数和srand函数中括号的数字有关。只要我们保证数字每时每刻都在变化且不相同,即可保证随机数的完全随机。届时,我们可以运用时间戳。即time()函数,调用此函数需要包含头文件“<time.h>”。它的返回类型是计算机当前的时间(1970年1月1日00:00:00到当前时刻的秒数)。这样我们就可以做到每时每刻都可以得到一个完全变化且不相同的数字了。
最后,由上文的菜单我们可以知道由1进行游戏,0退出游戏,因此我们可以通过switch来实现进行游戏的与否。故此主函数如下文。
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("重新输入\n");
break;
}
}
while (input);
return 0;
}
四、代码全视
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**************************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("**************************\n");
}
void game()
{
int num = 0;
int ret = rand()%100+1;
printf("%d\n", ret);
while (1)
{
printf("请猜数字:>");
scanf("%d", &num);
if (num < ret)
{
printf("猜小了\n");
}
else if (num > ret)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("重新输入\n");
break;
}
} while (input);
return 0;
}
8295

被折叠的 条评论
为什么被折叠?



