C语言实现简单猜数字游戏

文章目录

  • 前言
  • 一、大致思路
  • 二、具体实现
  • 三.总结

前言

猜数字游戏,程序随机生成数字,玩家输入数字,程序提示玩家输入的数字与生成的随机数相比是猜大了,还是猜小了。直到猜中,游戏结束。


一、大致思路

1.产生随机数,同时注意随机数应该控制在一定的范围内,如果数字过大会难以猜中,影响游戏体验。
2.判断逻辑,因为大概率不会一次猜中所以应该采用循环的方式来实现判断是否猜中数字环节。
3.设计简易的菜单,提示玩家是否进入游戏。所以是应该至少进入游戏一次在决定是否开始游戏,可以采用do while循环来实现

二、具体实现

1.利用打印函数简单设计游戏菜单:

void meau()
{
	printf("******************\n");
	printf("*****1 play*******\n");
	printf("*****0 exit*******\n");

}

关于将开始开始游戏设置成0退出游戏设置成1这一点有个很明显的好处,先前分析过进入游戏采取do while 循环的方式,如果将输入选择数字 1或0设置成循环条件的话,很自然的过渡到输入1进入游戏直到玩完游戏退出,输入0跳出循环,刚好满足退出游戏的这一设定,整个大体逻辑就有了。因为进入循环后又要面临着选择,所以循环内部采用switch语句来实现选择逻辑。基于以上思考便有了以下的代码

int main()
{
	int input = 0;
	do
	{
		
		meau();
		scanf("%d", &input);
		switch (input) 
		{ case 1:
			game();
			break;
		 case 0:
			printf("退出游戏\n");
			break;
		 default:
			printf("输入错误,请重新输入\n");
			break;
		}

	} 
	while (input);

	return 0;





}

由于游戏主体猜数字逻辑较多,可以将其封装成game函数来设计它。关于这个游戏的实先首先是要生成随机数。可以利用rand函数来实现随机数的生成。但通过输入数据测试发现一个问题,每次生成的随机数都不随机C语言实现简单猜数字游戏_第1张图片
所以为了解决这问题,我们利用srand初始化随机数生成器,为了使得每次初始化的值都有所不同,可以用时间戳来生成不同的随机数。因为电脑的时间是随时变化的。如果将随机数生成放在game函数中的,当我们进入游戏每次间隔很短的话随机数可能会相同,因此可将随机数生成放在main函数中因为main每次只调用一次,srand调用一次就可以一直使用。

int main()
{
	srand((unsigned int)time(NULL));//设置随机数生成器
	.............................
	...............................
	..............................
}

有了随机数就只剩判断逻辑了,设置一个变量接收随机数,然后玩家猜测的的数字与该变量相比较。如果大了提示玩家输入的数字大了,反之亦然。如果相等提示玩家猜对了。由于猜数字大概率不是一次就对所以用循环实现,当猜对时除了提醒玩家猜对还应该跳出循环。为了避免随机数过大,将产生的随机数限定在100的范围内。将产生的随机数对100取余加1即可。
代码如下:

/rand生成随机数 0~32767
//返回一个0~32767;
void game()
{
	system("cls");//清理屏幕
	printf("恭喜进入游戏\n");
  //1.生成随机数
  // 2.猜数字
  //srand初始化随机数生成器
  //时间戳
 
    int ret = rand()%100+1;//0~100的数字
	while (1)
	{

		printf("请猜数字\n");
		int guess = 0;
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了\n");

		}
		else if (guess > ret)
		{
			printf("猜大了\n");

		}
		else
		{
			printf("恭喜猜对了\n");
			break;
		}
	}
}

三.总结

1.源码

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include
#include
#include
void meau()
{
	printf("******************\n");
	printf("*****1 play*******\n");
	printf("*****0 exit*******\n");

}

//rand生成随机数 0~32767
//返回一个0~32767;
void game()
{
	system("cls");//清理屏幕
	printf("恭喜进入游戏\n");
  //1.生成随机数
  // 2.猜数字
  //srand初始化随机数生成器
  //时间戳
 
    int ret = rand()%100+1;//0~100的数字
	while (1)
	{

		printf("请猜数字\n");
		int guess = 0;
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了\n");

		}
		else if (guess > ret)
		{
			printf("猜大了\n");

		}
		else
		{
			printf("恭喜猜对了\n");
			break;
		}
	}
}
int main()
{
	srand((unsigned int)time(NULL));//设置随机数生成器
	int input = 0;
	do
	{
		
		meau();
		scanf("%d", &input);
		switch (input) 
		{ case 1:
			game();
			break;
		 case 0:
			printf("退出游戏\n");
			break;
		 default:
			printf("输入错误,请重新输入\n");
			break;
		}

	} 
	while (input);

	return 0;

}

本人能力有限代码实现较为简单。以上便是我对猜数字游戏简单介绍,如有错误,欢迎指出!

你可能感兴趣的:(C语言,c语言,游戏,学习)