文章目录
前言
1.游戏描述
电脑随机生成一个1-100的数字,玩家来猜。玩家可以根据自己需要,设置每次猜的次数。如果在设置的次数内猜对了,则提示你猜对了,否则提示猜错了。
2.代码实现
2.1打印菜单
我们在玩游戏前,都是先打印菜单,在进行选择。所以此处选择do-while循环
#include<stdio.h>
void menu()
{
printf("***********************\n");
printf("*** 1.play 0.exit ***\n");
printf("***********************\n");
}
int main()
{
do
{
menu();
} while (1);
return 0;
}
效果展示:
2.2构建基础框架
int main()
{
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
printf("玩游戏\n");
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择:\n");
}
} while (input);
return 0;
}
效果展示:
2.3玩游戏
既然我们要玩猜数字游戏,那么我们选择1后,不能就打印一个玩游戏吧,因此下面来真正实现猜数字游戏。
2.3.1生成随机数
2.3.1.1rand()
种子要变化,我们再让种子是一个随机值不就行了嘛
NO,大漏特漏
如果这样的话,就死循环了
2.3.1.2srand()
刚才在文档中提到的一个srand是什么呢?
那电脑上什么东西是一直变化的呢?——时间
2.3.1.3time()
如果是这样,我们就可以这样写代码:
这样我们发现数字就随机起来了,那我们的代码接下来可就好写咯。
我们需要的随机数是1-100之间的,所以我们可以这样写代码:
2.3.2game()
生成随机数
void game()
{
srand((unsigned int)time(NULL));
int random_number = rand() % 100 + 1;
printf("%d\n", random_number);
}
效果如下:
但是如果你是老司机,手速比较快的话,生成的随机数会相同,如下:
这是为什么呢?
因为当我们运行一次game(),就会调用一次srand(),这样在较短时间内调用,就会产生相同的数字。
因此,srand函数不需要频繁调用的,⼀次运⾏的程序中调用⼀次就够了。
所以,我们可以将其放在main()中
void game()
{
int random_number = rand() % 100 + 1;
int number = 0;
while (1)
{
printf("请猜数字:");
scanf("%d", &number);
if (number > random_number)
{
printf("您猜大了\n");
}
else if (number < random_number)
{
printf("您猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
2.4自己设定猜的次数
用户自己输入次数,如果未在设置的次数中猜对,则提示失败
代码变动地方如下:
switch (input)
{
case 1:
printf("你感觉你几次就能猜对呢?\n");
scanf("%d", &count);
game(count);
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择:\n");
}
void game(int count)
{
int random_number = rand() % 100 + 1;
int number = 0;
while (count)
{
printf("请猜数字:");
scanf("%d", &number);
if (number > random_number)
{
printf("您猜大了\n");
}
else if (number < random_number)
{
printf("您猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
count--;
}
if (count == 0)
{
printf("你未在规定的次数内猜对,有点高估自己了,还得练哦\n");
}
}
效果如下:
3.完整代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("***********************\n");
printf("*** 1.play 0.exit ***\n");
printf("***********************\n");
}
void game(int count)
{
int random_number = rand() % 100 + 1;
int number = 0;
while (count)
{
printf("请猜数字:");
scanf("%d", &number);
if (number > random_number)
{
printf("您猜大了\n");
}
else if (number < random_number)
{
printf("您猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
count--;
}
if (count == 0)
{
printf("你未在规定的次数内猜对,有点高估自己了,还得练哦\n");
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
int count = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
printf("你感觉你几次就能猜对呢?\n");
scanf("%d", &count);
game(count);
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择:\n");
}
} while (input);
return 0;
}
本次分享就到这里啦,感谢您的观看