目录
前言:猜数字游戏顾名思义就是给出一个在规定范围内的数字,根据提示对其值进行猜测。这里我们将用C语言来对猜数字逻辑进行实现。
一、猜数字游戏相关功能
1.游戏应该具有游戏菜单。
2.猜数字,那就得有一个随机数,且随机数应该在指定范围内生成。
3.猜测要有对猜测值相关提示,若没有提示就是瞎猜没有游戏意义。
4.应该具有游戏成绩评估,增强游戏趣味性。
5.相应惩罚......(这里不添加,因为我已经被好友拉黑)。
二、相应游戏功能代码实现
1、游戏菜单
void menu()
{
printf("****** <猜数字> ******\n");
printf("***** 1.play 1 *****\n");
printf("***** 2.exit 0 *****\n");
printf("**(猜猜1~100的数字)**\n");
}
由于是简单程序,有没有必要整一个高级的游戏菜单了,四个printf函数打印打印就搞定。
1.主要内容就打印游戏名、游戏选项、游戏内容提示
2.使用“ * ”来美化界面
3.因为不需要返回任何值,函数返回类型为void
ps.可根据逻辑自行改变至自己满意。
2、随机数的生成
这里随机数的生成我们使用rand、srand函数来搞定
srand((unsigned int)time(NULL));
int ret = rand();
对于srand函数与rand函数的使用,这里给出资料链接查看,后面我会专门写一篇博客来详细说明。
srand:srand - C++ Reference (cplusplus.com)。
rand:rand - C++ Reference (cplusplus.com)。
首先使用srand函数配合时间戳(后面博客详细说明)初始化随机数,这样用rand函数来生成的伪随机数才能真正意义上算得上随机数(随机性更强)。
rand函数生成的随机数如何使其范围在我们所想要的范围内(1~100)呢?我们可以取模+1的方式获得,因为大于100就会被舍去,最大取到99,+1保证能取到100,这样一来,一个值在1~100间是随机数就取好了。
3、数值猜测提示
我们可以使用if else语句来进行选择结构的实现。
那么t++是啥呢?这里的t用于记录猜数次数,++操作符完成自增操作,若不理解详见:
C语言++操作符前置、后置的区别(++操作符的副作用?)-优快云博客
4、游戏评估
对于猜数字游戏的游戏评估,最能代表的就是猜测次数,于是我们可以定义一个变量来记录猜测次数,然后对其数值进行分级即可。
void pfm(int x)
{
printf("总共输入;>%d\n", x);
if (x <= 5)
{
printf("小东西还挺机灵的!\n");
}
else if (x > 5 && x <= 10)
{
printf("再接再励!\n");
}
else
{
printf("太菜了,别玩了!\n");
}
}
这里将猜测次数作为评估函数的参数,利用if else语句构成选择结构进行评估。
三、游戏框架
1.源文件、头文件
这里创建三个文件,game.h用于对游戏功能函数的声明汇集,game.c文件用于游戏功能函数的汇集,ximiemie0525.c用于游戏大框架的逻辑程序。
具体代码实现见代码段注释。
2.游戏大框架
即ximiemie0525.c内容
#include"game.h"
int main()
{
srand((unsigned int)time(NULL));//初始化随机数生成
int input = 0;
do
{
menu();//菜单函数
printf("请输入选择:>");
scanf("%d", &input);
if (input == 1)
{
int t = guess_game();//猜字游戏函数
pfm(t);//游戏表现评估函数
break;
}
else
{
if(input!=0)
printf("无效输入!\n");
}
}while(input);
return 0;
}
3.游戏功能函数汇集
即game.c内容
#include "game.h"
int guess_game()
{
int t = 0;//记录猜数次数
int x = 0;
int y = rand() % 100 + 1;//获得一个随1~100间的随机数
while (1)
{
printf("我猜:>");
scanf("%d", &x);
if (x < y)
{
printf("猜小了...\n");
t++;
}
else if (x > y)
{
printf("猜大了...\n");
t++;
}
else
{
printf("恭喜你,猜对了!\n");
t++;
break;
}
}
return t;
}
void menu()
{
printf("****** <猜数字> ******\n");
printf("***** 1.play 1 *****\n");
printf("***** 2.exit 0 *****\n");
printf("**(猜猜1~100的数字)**\n");
}
void pfm(int x)
{
printf("总共输入;>%d\n", x);
if (x <= 5)
{
printf("小东西还挺机灵的!\n");
}
else if (x > 5 && x <= 10)
{
printf("再接再励!\n");
}
else
{
printf("太菜了,别玩了!\n");
}
}
4.游戏功能函数声明汇集
即game.h内容
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int guess_game();//猜数字
void menu();//游戏菜单
void pfm(int x);//游戏评估
ps.
如果对if else语句有什么不理解,可以看此博客:C语言if、switch语句构成的选择结构详解(悬空else问题、case与default顺序问题)-优快云博客
如果对do while语句有什么不理解,可以看此博客:
C语言while、do while、for语句构成的循环结构详解(含break、continue语句)-优快云博客
四、游戏运行展示
游戏运行:
游戏退出:
错误输入:
源码请访问gitee:猜数字2.0/猜字2.0 · 围着羊村跑两圈/xuexi_c_project - 码云 - 开源中国 (gitee.com)。