项目简介
初学者 学完C语言初阶,了解各种语法后实现的第一个小游戏 比较简单易懂有利于提起兴趣 和后续项目实现
首先打印菜单让人了解
void meau()
{
printf("##########################\n");
printf("######1. play #######\n");
printf("######2. exit #######\n");
printf("##########################\n");
}
打印菜单记得换行
然后让用户选择 并且输入 此时用Switch语句根据选择不同 而产生不同结果 因为可能要进行多次就可以进行(并且至少进行一次就采用do while )循环代码如下
do {
meau();
scanf_s("%d", &input);
switch (input)
{
case 1:game();
break;
case 0:printf("退出\n");
break;
default:
printf("输入错误 重新输入\n");
break;
}
} while (input);
刚好就用0 和1 确定要进行哪一步操作 然后开始进入函数内部部分
首先要生成一个随机数 1到100之间 此时用rand 和srand 来生成 引用头文件《stdlib.h》
这是整个项目最有技术性的一点;
有关srand 和rand 有关介绍
srand和rand函数是C/C++语言中用于生成随机数的函数。srand函数用于给rand函数设定种子,而rand函数则用于生成随机数。下面是它们的使用方法:
- srand函数的使用方法: srand函数用于给rand函数设定种子,参数seed是rand函数的种子,用来初始化rand函数的起始值。一般情况下,我们可以使用时间函数time来获取当前时间作为种子,以保证每次运行程序时生成的随机数都不同。例如:
srand(time(NULL)); //使用当前时间作为种子
- rand函数的使用方法: rand函数用于生成随机数,它返回一个介于0和RAND_MAX(通常是32767)之间的随机整数。例如:
int num = rand(); //生成一个随机整数
如果我们想要生成一个指定范围内的随机整数,可以使用取模运算符%来实现。例如,要生成一个1到100之间的随机整数,可以使用以下代码:
int num = rand() % 100 + 1; //生成一个1到100之间的随机整数
需要注意的是,如果在调用rand函数之前没有调用过srand函数,那么每次程序运行时生成的随机数都是一样的。因此,在使用rand函数之前,一定要先调用srand函数来设定种子。
有关随机数的实现
在上文介绍中已经明确说明了 其使用方法
本题生成1到100的随机数如下代码
int input = 0;
srand((unsigned int)time(NULL));
注意要点是此部分只能放在主函数中进行一次 如果种子设定不同 那么每次rand产生的数都不同 无法实现数字的比较;
顾综合以上知识
进行如下代码
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void meau()
{
printf("##########################\n");
printf("######1. play #######\n");
printf("######2. exit #######\n");
printf("##########################\n");
}
void game()
{
int ret=rand()%100+1;//生成随机数 1到100;
//猜数字rand 和srand使用时间戳 来随机 srand种子只执行一次
while(1)
{
printf("请猜数字\n");
int guess = 0;
scanf_s("%d", &guess);
if (guess > ret)
{
printf("猜大了 再次输入\n");
}
else if (guess < ret)
{
printf("猜小了 再次输入\n");
}
if (guess == ret)
{
printf("猜对了 恭喜你\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do {
meau();
scanf_s("%d", &input);
switch (input)
{
case 1:game();
break;
case 0:printf("退出\n");
break;
default:
printf("输入错误 重新输入\n");
break;
}
} while (input);
}