玩转C语言—猜数字小游戏

玩转C语言—猜数字小游戏,第1张

玩转C语言—猜数字小游戏

游戏规则:电脑会随机产生一个1~100的数字,玩家猜数字,如果玩家猜小了,电脑会提示猜小了。猜大了,电脑会提示猜大了。猜对了,电脑会告诉你:恭喜你,猜对了。

代码实现: 1.打印菜单:

当我们游戏运行起来的时候,至少先要看见菜单,所以我们首先要做的就是打印菜单。其次游戏要重复玩,所以我们用do....while语句来实现。

#include 
void menu()
{
	printf("******************************************n");
	printf("*********       1.play        ************n");
	printf("*********       2.exit        ************n");
	printf("******************************************n");
}

int main()
{
	do
	{
		//打印菜单
		menu();
	} while();
	return 0;
}
2.根据菜单选择:
#include 
void menu()
{
	printf("******************************************n");
	printf("*********       1.play        ************n");
	printf("*********       0.exit        ************n");
	printf("******************************************n");
}

int main()
{
	int input = 0;
	do
	{
		//打印菜单
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("猜数字n");
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("选择错误n");
			break;
		}
	} while(input);
	return 0;
}
3.猜数字的实现:

当我们输入1时进入游戏开始进行猜数字,下面我们来看一下如何用代码实现:

必备知识:

C语言中生成随机数的方法:rand函数

下面我们来看一下RAND_MAX有多大:

 我们可以看到RAND_MAX代表的数字为0x7fff,转换为十进制为32767.

⭐:需要注意的是调用rand函数之前需要用srand函数来设置随机数生成器,且设置一次就可以。

 下面我们来看一下srand函数:

当srand函数里面的参数在不断发生变化时,rand返回的值才会不断的发生变化。我们知道时间在不断的发生变化,而每一个时间都对应一个数字,而我们获得的数字叫做时间戳。那我们如何获取时间戳呢?此时我们需要time函数,下面我们来看一下time函数: 

 我们可以将空指针(NULL)传入time函数里面:time(NULL).

下面我们来探究一下time_t是什么:

 我们可以看到time_t不过是__time64_ttypedef重命名过来的,而__time64_t又是64位整型typedef重命名过来的,所以time函数的返回类型为64位整型。但srand要的参数类型为无符号整型,此时我们只需要强制类型转换即可。

rand函数返回的值的范围为0~32767,而我们要产生的数字范围为0~100,所以我们要把rand返回的值%100再+1.

void game()
{
	int guess = 0;
	//生成随机数
	int r = rand()%100+1;  //0~99->1~100
	//猜数字
	while (1)
	{
		printf("猜数字:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了n");
		}
		else if (guess > r)
		{
			printf("猜大了n");
		}
		else
		{
			printf("恭喜你,猜对了!n");
			break;//猜对跳出循环。
		}
	}
}

 :因为随机数生成器只能设置一次,所以将它放入到了主函数中。 

4.完整代码呈现:
#include 
#include 
#include 
void menu()
{
	printf("******************************************n");
	printf("*********       1.play        ************n");
	printf("*********       0.exit        ************n");
	printf("******************************************n");
}
void game()
{
	int guess = 0;
	//生成随机数
	int r = rand()%100+1;  //0~99->1~100
	//猜数字
	while (1)
	{
		printf("猜数字:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了n");
		}
		else if (guess > r)
		{
			printf("猜大了n");
		}
		else
		{
			printf("恭喜你,猜对了!n");
			break;//猜对跳出循环。
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL)); //时间-设置随机数的生成器
	do
	{
		//打印菜单
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("选择错误n");
			break;
		}
	} while(input);
	return 0;
}

 今天的猜数字游戏就到这里,大家赶紧试着上手去敲一敲感受一下代码带来的快乐吧✌。

 

 

 

 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存