目录
🥝功能需求:
通过一个菜单提示你选择相应的选项, 选择你是否玩,不玩则推出程序, 玩则进行猜 1~100 的数字, 若猜数字不正确则提示猜数字是大了或者小了, 直到猜中数字则结束本局, 此时可以选择退出或者选择再来一局。
🍉实现过程:
🍓设计背景:
猜数字游戏 1. 电脑随机生成一个数字 (1~100) 2. 玩家猜数字 玩家猜小了,就告知猜小了 玩家猜大了,就告知猜大了 直到猜对为止 3. 游戏可以一直玩
🍓菜单:
🍑菜单栏:
void menu() { printf("********************\n"); printf("****** 1.play ******\n"); printf("****** 0.exit ******\n"); printf("********************\n"); }
🍑菜单选项:
根据菜单模型的提示进行设计:
通过一个循环:
(每次玩不玩都要打印一次菜单进行提示,这时候各位客官应该想到的是使用 do...while 循环语句比较好吧)
打印出菜单提示:
当你根据菜单提示选择时,可以使用 switch、case语句来实现,
选择 1 则开始游戏并给出提示,
选择 0 则退出游戏并给出提示,
选择其他则提示选择错误请重新选择
代码实现:
do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择!\n"); break; } } while (input);
🍓游戏设计板块:🍑随机数的生成:
有客官说到,我用算法造出来一个随机数不行嘛?答案是不可以的,为什么呢,你造出来的是不是就不是未知的了,就成了先有鸡先有蛋的问题了,所以这里我们引用到rand()函数
使用 rand() 函数实现一个随机值,其为库函数需要使用头文件 #include<stdlib.h> ,C 标准库手册中提示使用 rand() 库函数前需要使用 srand() 库函数(其头文件与rand()相同),srand() 库函数的大小为 0 ~ 32767 ,
用时间戳来设置随机数的生成起始点,即 time() 使用头文件 #include<time.h> ,具体情况参照 C 标准库手册。
- 这里%+1使其输出的任何一个数的范围在1~100之间
- 把 srand() 库函数放到main函数内,使每次玩一局游戏时,数字不会因循环而改变,并且最主要的是主函数只执行一次,代表未知数只创建一次。
代码实现
void game() { int guess = 0; //1. 生成一个随机数 int ret = rand() % 100 + 1; //printf("%d\n", ret); //2. 猜数字 while (1) { printf("猜数字:>\n"); scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else { printf("恭喜你,猜对了\n"); break; } } }
🥑代码实现 :
🍓代码
#define _CRT_SECURE_NO_WARNINGS 1 // //猜数字游戏 //1. 电脑随机生成一个数字 (1~100) //2. 玩家猜数字 // 玩家猜小了,就告知猜小了 // 玩家猜大了,就告知猜大了 // 直到猜对为止 //3. 游戏可以一直玩 // #include<stdio.h> #include<stdlib.h> #include<time.h> void menu() { printf("********************\n"); printf("****** 1.play ******\n"); printf("****** 0.exit ******\n"); printf("********************\n"); } //RAND_MAX //rand 函数返回的随机数的范围是(0~32767) //猜数字游戏的实现 void game() { int guess = 0; //1. 生成一个随机数 int ret = rand() % 100 + 1; //printf("%d\n", ret); //2. 猜数字 while (1) { printf("猜数字:>\n"); scanf("%d", &guess); if (guess < ret) { printf("猜小了\n"); } else if (guess > ret) { printf("猜大了\n"); } else { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择!\n"); break; } } while (input); return 0; }
🍓效果展示
(江湖游历在外,还要多多仰仗各位衣食父母,方便的话点个赞,点个关注呗,谢谢你嘞,客官慢走)🌹🌹🌹