最近看到了一个挺有趣的代码,在这里分享一下:先输入一个1-100的数字,然后程序会打印这个数字与生成的随机数相比是猜大了还是猜小了,直到猜出数字或者猜完五次机会为止。
要如何实现这个代码呢?步骤大致可以分为两个:
1.系统生成随机数;
2.键盘输入数字,系统提示大或小
接下来会在VS2022上以C语言代码的形式来实现这一效果
一、设置菜单目录
作为一个游戏,一个浅显易懂的菜单目录是必不可少的,大致将菜单分为两个功能,1是开始猜数字游戏,2是退出游戏;
以函数的形式创建菜单menu使主体main()函数代码不会显得太臃肿;
void menu()
{
printf("********************\n");
printf("***** 1.猜数字 *****\n");
printf("***** 0.退出 *******\n");
printf("********************\n");
}
二、建立代码整体框架
在开始编写游戏内容时,可以建立一个大概的游戏主题框架,即菜单的功能,使思路一直清晰明了;
int main()
{
int input = 0;
srand((unsigned int)time(NULL)); //以时间戳的形式,为随机数rand添加种子
do //使函数在最初运行时直接运行,使用do...while循环
{
menu(); //引用菜单函数
printf("请选择\n");
scanf("%d", &input); //输入数字input
switch(input)
{
case 0:
printf("退出猜数字\n");
break;
case 1:
game(); //引用游戏主体函数
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input); //若input为0则结束循环,若为非0则回到switch(input)继续循环
return 0;
}
三、创建猜数字游戏主体函数
以函数的形式编写猜数字游戏主体程序,整体流程分为,先用rand函数生成一个随机数,再通过scanf函数输入一个数字开始猜数字;
void game()
{
int count = 5;
int guess = 0;
printf("输入一位1-100数字\n");
int Num = rand() % 100 + 1; //生成一个1-100随机数
while (count) //当count为0时退出循环
{
scanf("%d", &guess);
if (guess > Num) //判断大小
{
printf("猜大了\n");
}
else if (guess < Num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
count--;
if (count <= 5 && count !=0)
printf("你还有%d次机会\n",count);
else
printf("5次机会用完,你以失败,正确数字为%d\n",Num);
}
}
四、猜数字游戏整体实现效果
整体代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<math.h>
//猜数字
//1.随机生成一个1-100的数字
//2.键盘输入数字,系统提示大或小
void menu()
{
printf("********************\n");
printf("***** 1.猜数字 *****\n");
printf("***** 0.退出 *******\n");
printf("********************\n");
}
void game()
{
int count = 5;
int guess = 0;
printf("输入一位1-100数字\n");
int Num = rand() % 100 + 1; //生成一个1-100随机数
while (count) //当count为0时退出循环
{
scanf("%d", &guess);
if (guess > Num) //判断大小
{
printf("猜大了\n");
}
else if (guess < Num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
count--;
if (count <= 5 && count !=0)
printf("你还有%d次机会\n",count);
else
printf("5次机会用完,你以失败,正确数字为%d\n",Num);
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL)); //以时间戳的形式,为随机数rand添加种子
do //使函数在最初运行时直接运行,使用do...while循环
{
menu();
printf("请选择\n");
scanf("%d", &input); //输入数字input
switch(input)
{
case 0:
printf("退出猜数字\n");
break;
case 1:
game();
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input); //若input为0则结束循环,若为非0则回到switch(input)继续循环
return 0;
}
实施效果如图所示: