初始界面 猜数字界面 结束界面
猜数字开始前,我们需要生成一个数字,并且每次游戏的数字都不能重复或可预测。
那么,这里我们就需要生成随机数。
怎么生成随机数呢?小江下面会介绍
生成随机数界面
其次,猜的过程中需要给出提示,那我们就需要包含if()语句等的循环来实现。
猜数字游戏比较简单,这里一个文件就够了。
1.test.c //文件中写游戏的逻辑实现和运行实现
这里,小江推荐二分法猜数字哦!这样,有次数限制时,更方便哦。
1 int rand (void);
1 #include
2 #include
3 int main()
4 {
5 printf("%d\n", rand());
6 printf("%d\n", rand());
7 printf("%d\n", rand());
8 printf("%d\n", rand());
9 printf("%d\n", rand());
10 return 0;
11 }
第一次运行结果 第二次运行结果
1 void srand (unsigned int seed);
1 time_t time (time_t* timer);
时间戳
//VS2022 上time_t类型的说明
#ifndef _CRT_NO_TIME_T
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t;
#else
typedef __time64_t time_t;
#endif
#endif
typedef long __time32_t;
typedef __int64 __time64_t;
1 time(NULL);//调⽤time函数返回时间戳,这⾥没有接收返回值
那么我们就可以让生成随机数的代码生成如下:
#include
#include
#include
int main()
{
//使⽤time函数的返回值设置种⼦
//因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换
srand((unsigned int)time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
第一次运行结果 第二次运行结果
1 rand() %100;//余数的范围是0~99
如果我们要生成1~100之间的随机数,方法如下:
1 rand() %100+1;//%100余数的范围是0~99,0~99的数字+1,范围是1~100
如果我们要生成100~200之间的随机数,方法如下:
1 100 + rand()%(200-100+1)
2 //%101余数的范围是0~100,加100后就是100~200
1 a + rand()%(b-a+1)
到这里,我们所有的准备工作和相关知识点已经结束了。下面,就是猜数字游戏的实现了。
#define _CRT_SECURE_NO_WARNINGS 1
//保证scanf()可以正常运行,否则vs2022报错或警告
//运行需要的头文件
#include
#include//rand函数
#include//time函数
int main()
{
srand((unsigned int)time(NULL));//放在main函数中,只用调用一次
int input = 0;
do
{
menu();//先初步调用menu(),之后再写代码
printf("Please input 1 or 0 :");
scanf("%d", &input);
switch (input)//选择
{
case 1:
game();//先初步调用game(),之后再写代码
break;
case 0:
printf("退出游戏");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);//do while()循环———>游戏可循环多次
return 0;
}
void menu()
{
printf("*******************\n");
printf("*******1.Play******\n");
printf("*******0.Exit******\n");
printf("*******************\n");
}
void game()
{
int i = 1 + rand() % (100 - 1 + 1);//设置随机数范围1~100
int guess = 0;
while (1)//循环多次输入数字
{
printf("请猜数字:");
scanf("%d", &guess);
//循环if语句进行提示,直到猜对
if (guess > i)
printf("猜大了\n");
else if (guess < i)
printf("猜小了\n");
else
{
printf("猜对了\n");
break;
}
}
}
#define _CRT_SECURE_NO_WARNINGS 1
//保证scanf()可以正常运行,否则vs2022报错或警告
//运行需要的头文件
#include
#include//rand函数
#include//time函数
void menu()
{
printf("*******************\n");
printf("*******1.Play******\n");
printf("*******0.Exit******\n");
printf("*******************\n");
}
void game()
{
int i = 1 + rand() % (100 - 1 + 1);//设置随机数范围1~100
int guess = 0;
while (1)//循环多次输入数字
{
printf("请猜数字:");
scanf("%d", &guess);
//循环if语句进行提示,直到猜对
if (guess > i)
printf("猜大了\n");
else if (guess < i)
printf("猜小了\n");
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));//放在main函数中,只用调用一次
int input = 0;
do
{
menu();//先初步调用menu(),之后再写代码
printf("Please input 1 or 0 :");
scanf("%d", &input);
switch (input)//选择
{
case 1:
game();//先初步调用game(),之后再写代码
break;
case 0:
printf("退出游戏");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);//do while()循环———>游戏可循环多次
return 0;
}
void game()
{
int i = 1 + rand() % (100 - 1 + 1);//设置随机数范围1~100
int guess = 0;
int count = 5;//设置次数限制
while (1)//循环多次输入数字
{
printf("\n你还有%d次机会\n", count);
count--;//如果5次之内猜对,游戏结束;如果直到5次机会全部用完,无论成功与否,结束游戏
printf("请猜数字:");
scanf("%d", &guess);
//循环if语句进行提示,直到猜对
if (guess > i)
printf("猜大了\n");
else if (guess < i)
printf("猜小了\n");
else
{
printf("猜对了\n");
break;
}
}
if (count == 0)
{
printf("你失败了,正确值是:%d\n", i);//5次机会用完
}
}
这样就实现了次数限制了。
PS:小江目前是个新手小白,这个猜数字游戏也只是最初级的,肯定还有一些功能需要完善,欢迎大家在评论区讨论哦!有问题也可以讨论的!