C语言趣味小游戏----猜数字小游戏

一:猜数字游戏的雏形

部分代码如下,这下面的代码只是一个初步的框架,还不能正式的进行猜数字游戏,因为我还没有将猜数字的代码写进去,这里我先给大家解释一下是下面代码的大致意思

首先呢这个猜数字游戏我们要运用do while循环以及switch语句来初步的进行我们的猜数字游戏,当然我们可以不用do while循环,可以用while循环还有就是 for循环,但是这里我推荐大家用do while循环,因为会更加的好理解以及使用

现在我分别拆开代码来和大家一一介绍

cpp 复制代码
int main()
{
	int input =  0 ;
	do
	{
		printf("*********************\n");
		printf("******  1.play ******\n");
		printf("******  2.exit ******\n");
		printf("*********************\n");

		printf("请选择选项:");
		scanf("%d", &input);

		switch(input)
		{
		case 1:
			printf("游戏开始,请输入数字\n");
			break;//这里的break是跳出switch循环的
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}

	} while (input);
	return 0;
}

这个代码呢,比较简单们就是单纯的将我们输入的值存放在input里面去,其是大家这个变量是可以随便取的,这里input的中文是输入的意思,所以推荐大家用这个变量,这样更加好理解

cpp 复制代码
int input =  0 ;

这块部分的代码就是我们的界面,比较好理解,这里我就不仔细给大家讲了

cpp 复制代码
	printf("*********************\n");
		printf("******  1.play ******\n");
		printf("******  2.exit ******\n");
		printf("*********************\n");

		printf("请选择选项:");
		scanf("%d", &input);

界面如下

这里呢是switch语句的代码介绍

switch语句就是把我们会出现的所有情况都一一可以列举出来,这里我们的猜数字游戏的界面我们只有三种情况,在上面那个代码就是1.play 2.exit,这个界面就是这两种情况,当然第三种情况就是我们不输入1或者2,输入了其他的输入值,那么我们的default这个情况了

注意:这里的break是跳出switch语句,不是do while循环,大家注意一下

cpp 复制代码
switch(input)
{
case 1:
	printf("游戏开始,请输入数字\n");
	break;//这里的break是跳出switch循环的
case 2:
	printf("退出游戏\n");
	break;
default:
	printf("输入错误,请重新输入\n");
	break;
}

输入1的情况

输入2的情况

输入其他值的情况

二:分装一个函数

上面那个代码我还没有正式的将猜数字游戏的代码写进去

我们来简化一下上面的代码,此时我们要用到一个概念---封装一个函数

1.我们发现了两个函数,一个是menu()一个是game(),其实这个函数名字是可以随便取得,这里我为了好理解,就这样取的变量,menu就是菜单的意思,打开我们的猜数字游戏的界面,game就是游戏嘛,大家应该理解

cpp 复制代码
int main()
{ 
	//下面这个代码是生成变化的(种子)
	srand((unsigned int)time(NULL));

	int input = 0;
	do
	{
		menu();//把上面那群代码封装到menu函数里面,这样就更加美观了

		printf("请选择选项:");
		scanf("%d", &input);

		switch (input)
		{
		case 1://选择1游戏开始
			game();//这里需要写许多代码,同样我们直接封装代码
			break;//这里的break是跳出switch循环的
		case 2:
			printf("傻逼,游戏结束了\n");//选择2游戏结束
			break;
		default://输入不是1或者2的情况
			printf("输入错误,请重新输入\n");
			break;
		}

	} while (input);
	return 0;
}

下面这个代码是生成变化的(种子),这里由于编译器不认识time是整型函数,因此我们要强行转变为整型,也就在前面加上了 unsigned int(整型函数)

cpp 复制代码
srand((unsigned int)time(NULL));

下面这就是我们要将游戏界面封装进去的函数

cpp 复制代码
	menu();

具体的封装代码如下,此时我们就已经将我们的游戏界面的代码封装进去了

cpp 复制代码
void menu()//封装下面的代码,这里的函数类型,我们默认为void
{
	printf("*********************\n");
	printf("******  1.开始游戏 ******\n");
	printf("******  2.退出游戏 ******\n");
	printf("*********************\n");
}

这个是函数的原型,我们直接给它定义为void默认的函数的意思

cpp 复制代码
void menu()

2.这里还有一个game()函数的代码的封装,代码如下

cpp 复制代码
void game()//封装猜数字游戏的代码,这里的函数类型,我们默认为void
{
	int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)

	int count = 5;//设置只有5次猜数字的机会

	int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面
	while (count)
	{
		printf("你拥有%d次机会\n",count);
		printf("游戏开始,请输入数字\n");
		scanf("%d", &guess);
		if (guess > r)
		{
			printf("猜大了\n");
		}
		else if (guess < r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("傻逼终于猜对了,正确数字是  %d\n",r);
			break;//结束while循环
		}
		count--;//每次猜错,会减少一次机会
	}
	if (count == 0)//次数为0,游戏结束
	{
		printf("没有机会了,说明你还得练,小老弟\n");
	}

}

封装猜数字游戏的代码,这里的函数类型,我们默认为void

cpp 复制代码
void game()

这里是我们设置的随机数的范围,将1-100的随机数存放到 r 变量里面(生成1-100的随机数)

cpp 复制代码
int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)

设置猜数字的玩法,将我们猜的数字,存放在guess变量里面

cpp 复制代码
int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面

设置只有5次猜数字的机会,其实我们可以不用这条件的,设置这是为了增加游戏的难度,更加好玩一些

cpp 复制代码
	int count = 5;//设置只有5次猜数字的机会

每次猜错,会减少一次机会,和上面的代码相辅相成

cpp 复制代码
count--;//每次猜错,会减少一次机会

次数为0,游戏结束

cpp 复制代码
if (count == 0)//次数为0,游戏结束

这个代码是我们给游戏设置的规则,如果我们的guess也就是我们输入的数字大于我们的r也就是随机数的话,我们就会给玩家提示你猜大了,同样的,我们猜小,系统就会提示我们猜小了,同样的猜对了也就是下面的那句话,大家可以自己设置的,可以不用和我的一样

注意:break;结束的是while循环,跳出去的不是我们的主函数啊,大家要搞清它的技术原理

cpp 复制代码
        if (guess > r)
		{
			printf("猜大了\n");
		}
		else if (guess < r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("傻逼终于猜对了,正确数字是  %d\n",r);
			break;//结束while循环

三:猜数字游戏的完整代码

下面就是将我们上面一一拆开讲的代码全部放置在了一起,给大家好好看看

cpp 复制代码
void menu()//封装下面的代码,这里的函数类型,我们默认为void
{
	printf("*********************\n");
	printf("******  1.开始游戏 ******\n");
	printf("******  2.退出游戏 ******\n");
	printf("*********************\n");
}

void game()//封装猜数字游戏的代码,这里的函数类型,我们默认为void
{
	int r = rand() % 100 + 1;//将1-100的随机数存放到  r  变量里面(生成1-100的随机数)

	int count = 5;//设置只有5次猜数字的机会

	int guess = 0;//设置猜数字的玩法,将我们猜的数字,存放在guess变量里面
	while (count)
	{
		printf("你拥有%d次机会\n",count);
		printf("游戏开始,请输入数字\n");
		scanf("%d", &guess);
		if (guess > r)
		{
			printf("猜大了\n");
		}
		else if (guess < r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("傻逼终于猜对了,正确数字是  %d\n",r);
			break;//结束while循环
		}
		count--;//每次猜错,会减少一次机会
	}
	if (count == 0)//次数为0,游戏结束
	{
		printf("没有机会了,说明你还得练,小老弟\n");
	}

}

int main()
{ 
	//下面这个代码是生成变化的(种子)
	srand((unsigned int)time(NULL));//这里由于编译器不认识time是整型函数,因此我们要强行转变为整型,也就在前面加上了   unsigned int(整型函数)

	int input = 0;
	do
	{
		menu();//把上面那群代码封装到menu函数里面,这样就更加美观了

		printf("请选择选项:");
		scanf("%d", &input);

		switch (input)
		{
		case 1://选择1游戏开始
			game();//这里需要写许多代码,同样我们直接封装代码
			break;//这里的break是跳出switch循环的
		case 2:
			printf("傻逼,游戏结束了\n");//选择2游戏结束
			break;
		default://输入不是1或者2的情况
			printf("输入错误,请重新输入\n");
			break;
		}

	} while (input);
	return 0;
}

我们正式开始游戏

我们首先运行一下代码,然后就是这个界面

让我们来输入1开始我们的猜数字游戏!!

输入1,这里我们有五次机会去猜数字

我们猜个20,发现小了

这里的五次机会全部用完了,可惜了没有猜中,其实我们可以设置的随机数范围小,这样就更加容易了

好了,以上就是我们的全部猜数字游戏的仔细讲解,希望大家能够喜欢这个游戏!!!!!

相关推荐
大飞pkz2 小时前
【设计模式】迭代器模式
开发语言·设计模式·c#·迭代器模式
Vahala0623-孔勇2 小时前
Redisson分布式锁源码深度解析:RedLock算法、看门狗机制,以及虚拟线程下的锁重入陷阱与解决
java·开发语言·分布式
Coision.2 小时前
Linux C: 函数
java·c语言·算法
杜小暑3 小时前
数据结构之双向链表
c语言·数据结构·后端·算法·链表·动态内存管理
青瓦梦滋3 小时前
【数据结构】哈希——位图与布隆过滤器
开发语言·数据结构·c++·哈希算法
铅笔侠_小龙虾3 小时前
JVM深入研究--JHSDB (jvm 分析工具)
java·开发语言·jvm
AndrewHZ3 小时前
【3D图像技术讨论】3A游戏场景重建实战指南:从数据采集到实时渲染的开源方案
人工智能·算法·游戏·3d·开源·llm·colmap
南棱笑笑生3 小时前
20250931在RK3399的Buildroot【linux-6.1】下关闭camera_engine_rkisp
开发语言·后端·scala·rockchip
christine-rr3 小时前
【25软考网工】第五章(11)【补充】网络互联设备
开发语言·网络·计算机网络·php·网络工程师·软考