一、目录
一、明确思路。
要想实现猜数字的小游戏,我们需要使电脑自动产生一个随机数,此时再c语言当中我们就需要引入rand()这个函数,但我们需知rand()函数产生的随机数是伪随机数,不是真的随机数,于是我们就需要引入srand()这个函数,srand()函数的类型我们一般定义为unsigned int ,再srand()函数中,我们需要引入一个一直在变化的种子,我们可以让这个种子为时间(time),时间是一直在变化的
srand ((unsigned int)time(NULL));
需注意:使用srand()函数以及time()函数需要包含头文件:
#include<stdlib.h>
#include<time.h>
至此,我们就可以让编译器产生一个随机数了。
之后便是主函数,Game函数,菜单(Menu)函数的编写。
二、主函数的编写。
在刚开始时,我们要先给玩游戏的人一个选项,看他是需要开始游戏还是退出游戏,所以此时我们可以自己编写一个菜单函数来美化这一个过程(Menu菜单函数)的编写,详情见《标题三》。此时我们让玩家输入相对应的数字。
int i = 0;
printf("请输入数字:");
scanf("%d", &i);
我们玩游戏肯定不能只玩一次,所以我们在主函数的这里需要引入一个do while循环,玩家可以自行选择是继续游戏还是退出游戏。所以主函数的整个过程是套用在do while循环里面的。当玩家输入i的值之后,我们又进入switch循环里面,当输入的是1,我们开始玩游戏。输入的是0,我们退出游戏。输入其他数字,我们打印出数字输入错误,请重新输入。(需要注意的是,许多初学者老是对switch的执行不熟悉,如果不加入break,在符合一个条件之后,仍然会执行下一个语句,所以我们在符合一个条件之后,就需要加入一个break来打破循环。)到这里我们主函数的代码的思路就十分清楚了,主函数的代码如下:
int main()
{
srand((unsigned int)time(NULL));
int i = 0;
do
{
menu();
printf("请输入数字:");
scanf("%d", &i);
switch (i)
{
case 1:
{
game();
break;
}
case 0:
{
printf("退出游戏\n");
break;
}
default:
printf("输入错误数字,请重新输入:\n");
}
} while (i);
return 0;
}
三、菜单(Menu)函数的编写
注意菜单函数是我们用来美化玩家使用的体验的,该函数并不是很复杂,只需要几句简单的printf 语句即可,此函数也不需要返回任何值,所以我们用void,使函数不返回值。完整代码如下:
void menu()
{
printf("********************\n");
printf("*****1.开始游戏*****\n");
printf("*****0.退出游戏*****\n");
printf("********************\n");
}
四、Game函数的编写
在Guess函数的编写中,我们要明确,我们想让电脑随机产生的数在什么范围,一般猜数字都是让随机数产生在1—100之间,所以我们可以定义r来存放随机数,一个公式生成a—b的随机数:a+rand()%(b-a+1),所以生成1—100的随机数的代码便是:
int r = rand() % 100 + 1;
接下来,我们定义guess变量,使其代表玩家输入的值,我们让guess与r进行对比,若r=guess,就打印猜对了,若r<guess,我们就打印猜大了,若r>guess,就打印猜小了(注意不要将大小弄反,不然永远也猜不对)。因为大部分人不可能1次就猜对,所以为了增加游戏的可玩性,我们需要加入一个循环,来使玩家能够进行多次猜数字,所以我们引入while函数来进行循环。引入count进行计数,使玩家明白还有多少次猜数字的机会,若最后一次都没有猜对,就打印失败了,正确数字是**。完整代码如下:
void game()
{
int guess = 0;
int r = rand() % 100 + 1;
int count = 7;//规定猜数字的次数
while (count)
{
printf("你还有%d次机会\n", count);
printf("请输入你猜的数字:");
scanf("%d", &guess);
if (guess < r)
{
printf("猜小了\n");
}
else if (guess > r)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
count--;
}
if (count == 0)
printf("失败了,正确的数字是%d\n", r);
}
至此,我们猜数字小游戏就全部结束了,完整代码如下,可供参考:
//猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
void menu()
{
printf("********************\n");
printf("*****1.开始游戏*****\n");
printf("*****0.退出游戏*****\n");
printf("********************\n");
}
void game()
{
int guess = 0;
int r = rand() % 100 + 1;
int count = 7;//规定猜数字的次数
while (count)
{
printf("你还有%d次机会\n", count);
printf("请输入你猜的数字:");
scanf("%d", &guess);
if (guess < r)
{
printf("猜小了\n");
}
else if (guess > r)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
count--;
}
if (count == 0)
printf("失败了,正确的数字是%d\n", r);
}
int main()
{
srand((unsigned int)time(NULL));
int i = 0;
do
{
menu();
printf("请输入数字:");
scanf("%d", &i);
switch (i)
{
case 1:
{
game();
break;
}
case 0:
{
printf("退出游戏\n");
break;
}
default:
printf("输入错误数字,请重新输入:\n");
}
} while (i);
return 0;
}
五、总结
猜数字小游戏只要明确好思路,能够自己编写出产生随机数的代码,再套用几个循环便可解决了。
此小游戏还可以进行拓展,欢迎大家能够拓展之后,在评论区进行交流。以上内容有不足的地方也往各位进行指点,谢谢!