视频演示:链接
一、猜数字小游戏的详细功能
首先会生成一个菜单,菜单内容: 选择‘1’是开始游戏,‘0’是退出游戏。
当我们玩完一局后还可以重新选择继续玩或者退出游戏,也就是可以反复玩。
玩完一局后清除当前的全部输出,重新打开菜单。
当然,生成的随机数也是要有取值范围的。我们这里生成的随机值范围为1~100。
我们猜的数字比生成的数字大的时候,会给出提示:猜大了;猜小了也会有相应提示:猜小了;当猜对的时候会提示:猜对了。
二、猜数字游戏的详解思路
我们可以用do-while()循环来控制猜数字游戏,可以实现反复玩的作用。
首先我们可以生成一个简单的菜单,自定义一个meau()函数。
再次通过swith语句来选择开始游戏或者退出游戏,当然输入不符时要有相应提示;
然后我们再实现猜数字的过程,自定义一个game()函数。
生成随机数用到rand()函数,头文件<stdlib.h>,而rand()函数生成的随机值范围为0~32767。我们要生成一个1~100的随机值——rand()%100+1。
要求每次生成的随机值不相同,我们这里要用到srand()函数,头文件<stdlib.h>。 srand()函数用来初始化rand()函数随机数生成的起点,只需要调用一次就可以,不用多次初始化。如果rand函数每次生成随机值时,srand函数都来初始化随机数起点的话,生成的随机数是连续的。
因srand()函数初始化rand()函数随机数生成的起点,要让起点不同,这里还要引用time()函数,time()函数引用了时间戳的概念,头文件<time.h>时间戳也就是计算机从最开始到现在的时间,以秒为单位,是随时变化的。
每次猜对后,在重新开始游戏前需要清楚当前的输入,用到system()函数,头文件<stdlib.h>.也就是清屏——system(“cls”)。
do { }while();
三、猜数字小游戏代码实现
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> //猜数字游戏 void meau() { printf("***********************\n"); printf("**** 1->play ****\n"); printf("**** 0->exit ****\n"); printf("***********************\n"); } void game() { int ret = rand()%100+1; //生成一个随机值,头文件<stdlib.h>,这里除余+1的意思是生成1~100的随机值 int n = 0; while (1) { printf("请输入所猜的数字:>"); scanf("%d", &n); if (ret > n) printf("猜小了\n"); else if (ret < n) printf("猜大了\n"); else { printf("猜对了\n"); break; } } } int main() { srand((unsigned int)time(NULL)); int input = 0; do { meau(); //打印菜单 printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game(); Sleep(1000); system("cls"); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,请重新选择。\n"); break; } } while (input); return 0; }
注意,我们上面代码中的input巧妙的同时控制了switch语句的先择和do-while的判断条件。这里需要深刻的理解一下。
time函数的使用:time(指针)函数引入的是时间戳,是一直变化的。头文件<time.h>,而time函数中的指针可以为空指针。
综上就是我们的猜数字游戏的思路和代码的实现了。
四、总结
- 了解并且掌握rand()函数、srand()函数、time()函数,可以从cplusplus上查阅了解。
- 思路在这里很重要,要提前想好一个整体思路,再逐步实现相应的代码块。
- 熟练掌握switch语句。