游戏的条件:
1:随机生成1~100之间的数字
2:可以反馈,如果猜小了就反馈小了,如果猜大了就反馈大了,直到正确为止
3:自行决定是否结束
可以学到的内容:
1:初步认识时间戳的运用
2:初步认识循环怎样嵌套
3:初步理解do while循环
3:锻炼写代码的逻辑能力
4:部分函数
正文:
1.首先想要直接进入游戏,可以使用do while循环,因为它是先执行,后判断(先进入游戏,再决定玩不玩)
void menu() {
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.over ******\n");
printf("********************\n");
}
//1为真,0为假
int main() {
int input = 0;
do {
menu();//游戏菜单
printf("请选择:");
scanf("%d", &input);
//输入数字0结束 1开始 2...(重新选择)
//游戏框架
switch (input) {
case 0:
printf("退出游戏\n");
break;
case 1:
printf("猜数字\n");
break;
default:
printf("选择错误,请重新选择 !\n");
break;
}
} while (input);
return 0;
}
一个框架,但是游戏的实现还没写
2.
游戏开始需要先有一个能随机生成数字的函数
C语言提供了一个 rand 函数
功能:
返回值:
头文件:
总结:头文件<stdlib.h> ; 类型:int ; 参数:void ; 返回值:0到32767
#include<stdlib.h>
void game() {
//1.生成一个随机数
int ret=rand();
printf("%d\n", ret);
}
//1为真,0为假
int main() {
int input = 0;
do {
menu();//游戏菜单
printf("请选择:");
scanf("%d", &input);
//输入数字0结束 1开始 2...(未知)
//游戏框架
switch (input) {
case 0:
game();
break;
case 1:
game();
break;
default:
printf("选择错误,请重新选择 !\n");
break;
}
} while (input);
return 0;
}
测试1: 测试2:
两次的结果都一样,说明有问题
重新看一下rand函数的简介
在此示例中,随机种子被初始化为表示当前时间(调用)的值,以便在每次运行程序时生成不同的值
总结:这个函数生成的数可以随着时间的变化而改变,但是需要引用另一个time函数和srand函数
再调用srand函数
还未解决,所以还是需要time函数
新的框架
void menu() {
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.over ******\n");
printf("********************\n");
}
#include<time.h>
#include<stdlib.h>
void game() {
//srand((unsigned int)time(NULL));
//不能放在这里,如果放这里,游戏开始一次就调用一次,数字会很接近
//只需要调用一次,放在主函数里面就够了
//1.生成一个随机数
int ret=rand()%100+1;
//任何数%100 都是0~99之间,再加1,就是1到100
//printf("%d\n", ret);
// ↑ 写游戏主体前要屏蔽
}
//1为真,0为假
int main() {
int input = 0;
srand((unsigned int)time(NULL));
do {
menu();//游戏菜单
printf("请选择:");
scanf("%d", &input);
//输入数字0结束 1开始 2...(未知)
//游戏框架
switch (input) {
case 0:
game();
break;
case 1:
game();
break;
default:
printf("选择错误,请重新选择 !\n");
break;
}
} while (input);
return 0;
}
游戏整体:
void menu() {
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.over ******\n");
printf("********************\n");
}
#include<time.h>
#include<stdlib.h>
//2.猜数字
void game() {
//srand((unsigned int)time(NULL));
//不能放在这里,如果放这里,游戏开始一次就调用一次,数字会很接近
//只需要调用一次,放在主函数里面就够了
int guess = 0;
//1.生成一个随机数
int ret=rand()%100+1;//随机数的生成,不能在循环里,不然猜一次就生成一次,永远猜不对
//任何数%100 都是0~99之间,再加1,就是1到100
//printf("%d\n", ret);
// ↑ 写游戏主体前要屏蔽,不然就会显示数字了
while (1) {
printf("猜数字 !\n");// 一定要放在循环里面,不然只会执行一次
scanf("%d", &guess);// 一定要放在循环里面,不然只会执行一次
if (guess < ret) { //区分好大和小
printf("猜小了\n");
}
else if (guess > ret) { //区分好大和小
printf("猜大了\n");
}
else {
printf("猜对了\n");
break;
}
}
}
//1为真,0为假
int main() {
int input = 0;
srand((unsigned int)time(NULL));
do {
menu();//游戏菜单
printf("请选择:");
scanf("%d", &input);
//输入数字0结束 1开始 2...(未知)
//游戏框架
switch (input) {
case 0:
game();
break;
case 1:
game();//跳转到猜数字游戏的主体中
break;
default:
printf("选择错误,请重新选择 !\n");
break;
}
} while (input);
return 0;
}