关于菜单的样式其实可以自己进行DIY,在这里只是一个示范。如下代码,按“1”开始游戏,看“0”退出游戏。我们将其定义为一个函数,不需要返回类型故此返回类型为void.
void menu()
{
printf("**************************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("**************************\n");
}
首先,猜数字我们总得有一个范围,在这里博主以1-100为例子。在这里介绍一个函数:rand()。它可以为我们生成一个随机的数字。此函数需要提前包含头文件“
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()函数,调用此函数需要包含头文件“
最后,由上文的菜单我们可以知道由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
#include
#include
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;
}