前言: 经历了前段时间的学习,我已经对C语言有了大概的了解,C语言的基础知识我也掌握了一些,现在将学到的知识应用起来,完成了这个集分支、循环语句,函数的知识为一体的猜数字小游戏,现特意将所思所想分享给大家,希望对大家带来一些帮助。
这里特意将帅气的赤井和睿智的柯南献给大 家,希望大家可以和他们一样NB!!!
1. 游戏的简单框架
猜数字游戏的主框架是放在main函数内的登录游戏的部分,我们为了能够多次玩游戏,应该要使该部分置于循环语句中,而这里又有一个妙处,那就是运用do while循环语句。根据该语句的特性,先执行再判断,那么最妙的地方就在判断部分。
我们可以先设计一个登录界面,这里设计一个menu()函数来完成这项功能。界面能够在游戏开始前显示当输入的值为1时,进入游戏;当输入的值为0时,退出游戏。
代码表示为:
接下来玩家就要选择是否进入游戏了,而这个选择的值则可以体现出循环判断部分的妙处,那就是将输入的选择值直接作为循环的判断条件.这样做是因为输入值选择是否进入游戏时有三种情况:
(1) 输入1,进入游戏
(2) 输入0,退出游戏
(3) 输入其他值,显示输入错误,重新输入
显然,在do while语句中的判断条件中,只有出现情况(2)时才会终止循环(0为假),不再游戏。而情况(1)和(3)会使循环继续进行,这样就能够很好地满足多次游戏的需求。
考虑完这些后要考虑的就是输入选择值后会产生哪些状态。那我们要用if else语句吗?其实,在这里使用分支语句switch又起到了一个简化的作用,可以简便而快速的执行输入值后的状态.
根据以上分析,可以得到这个游戏主体的代码:
这个代码中,我们还未理解的无非就是输入1后游戏执行的函数了,接下来我会将该函数执行的主体具体分析一下。
2. 游戏执行的主体
对于这个猜数字游戏而言,最重要的就是main函数内调用的game()函数了,它会单独执行游戏过程,使达到玩猜数字游戏的效果。
我们要想编写好这个游戏执行的程序,就应该了解猜数字游戏的基本思路:
(1) 电脑产生一个随机值(这里为了方便完成猜数字游戏的过程,特将随机值定在1~100内)
(2) 玩家输入想猜的数字
(3) 如果猜错了,电脑要给玩家提示,使玩家持续地猜,直至猜对为止
(4) 电脑的提示与判断(猜大了就显示猜大了,猜小了显示猜小了,猜对了显示猜对了)
根据这四条基本思路,我们就可以开始着手编写代码了。而完成这四条思路最大的障碍无非是第一条中产生1~100中的随机数了,这也是我要具体分析的地方。
随机数的产生:
C语言中有一个库函数rand()是专门用来产生随机数的,而使用rand()之前要先使用另一个库函数srand(),它是用来设置随机数种子的,其参数为无符号整型(unsigned int),而什么作为参数时会产生最随机的数呢,当然是时间了。所以这里我们可以运用一个库函数time(),而他的参数可以放个空指针(NULL),这样就可以准备好要产生一个随机数了。
然后就是rand()函数的应用了
由rand()函数的相关说明也可以知道,其产生随机数范围较大,而这并不满足我们的要求,因此就要采取相关措施来缩小到我们需要值的范围。
上图就很好地介绍了缩值的方法,所以要产生一个1~100的随机数,进行以下两步就好了。
注: rand()函数与srand()函数的使用需要引用头文件<stdlib.h>
其他步骤按照游戏的基本思路应该不难写出相关代码,这里就不一一赘述了,不知道了可以直接见下面完整的代码,自己好好分析一下,这样执行游戏的函数就编写完成了。
放张图让各位放松下哈,别嫌弃哟
3. 执行游戏及完整代码展示
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//猜数字小游戏(系统产生1~100的随机数)
#include <time.h>
#include <stdlib.h>
void menu()
{
printf("*****welcome******\n");
printf("******1.play******\n");
printf("******0.exit******\n");
printf("******************\n");
}
void game()
{
int guess = 0;
srand((unsigned)time(NULL));
int i = rand() % 100 + 1;//产生一个1~100的随机数
while (1)
{
printf("请猜数:>");
scanf("%d", &guess);
if (guess > i)
{
printf("猜大了\n");
}
else if (guess < i)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
menu();
int input = 0;
do
{
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
这次的分享到这里就结束了,如有错误和需要改进的地方,还望多多指正,再见了各位,好好期待我下次更优秀的文章哟。