逻辑是:电脑随机输出值 ,我们来猜 ,猜大了 告诉我们猜大了 ,猜小了 告诉我们猜小了
1.先在主函数里用do while 来实现至少一次游戏
void menu()
{
printf("=============================\n");
printf("|| 1.play ||\n");
printf("|| 1.exit ||\n");
printf("=============================\n");
}
int main()
{
int input;
do
{
menu();
printf("请选择:\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
play();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
}
假如输入1,猜对数字后,break跳出循环 ,进入while(input),再次选择input, 若选择0退出游戏,若选择其他数字再次进入do while 循环
2,电脑生成随机值,用到rand函数
在cplusplus查到可知:
RAND_MAX转到定义得:(记得加头文件)
即随机数范围0~RAND_MAX 0-32767
1,0版
两次调试结果一样
即在使用rand函数前还需调用srand
通过以上调整可以发现·: srand参数随机,电脑也会给个随机值
即想到时间戳
即电脑此时此刻运行代码的时间和计算机起始时间的差值 即调用time函数
参数为指针,不想用这个参数 直接空指针就可以了 我们现在只想要他的返回值
类型为 time_t 转到定义
参数类型为unsigned int ,即time的返回类型是unsigned int ,强制转换
又因为
我们发现几次随机值是一样的 则srand只需调用一次最好 放在rand前面即可
最终代码
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("=============================\n");
printf("|| 1.play ||\n");
printf("|| 1.exit ||\n");
printf("=============================\n");
}
//rand生成一个随机数 0-RAND_MAX 0-32767
void play()
{
int guess;
int ret = rand()%100+1;
while (1)
{
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
} else {
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input;
srand((unsigned int)time(NULL));//设置随机数生成器
do
{
menu();
printf("请选择:\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("开始游戏\n");
play();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
}