猜数字游戏的实现

给大家分享一下一个有意思的游戏:猜数字游戏。

一.简单介绍游戏

先简单介绍一下这个游戏的规则:比如在1~100的数字内,随便挑选一个数字为“炸弹”,玩家轮流说出自己所猜想的数字,不断的缩小猜数字的范围,直到玩家说出带有“炸弹”数字,即视为游戏结束。

二.游戏内容实现

1.游戏的全貌(游戏的外皮)

为了更好的去实现这个游戏,这里需要使用srand()来生成随机数,但srand()生成随机数需要一个“种子”,这个“种子”是需要时刻变化的。这时大家可能会有疑问:“我都要随机数了?又需要一个时刻变化的种子?”这时,time函数就起到至为关键的作用了,time函数可以获取当前的系统时间,返回的结果是一个time_t类型,实际也就是一个大整数,而这个整数是随着时间变化的。由此,就成功生成随机数了!

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//执行随机数的生成
	                                //这里time()的返回值形式的time_t,而srand需要的形式是unsigned int,所以这里强制转换一下
	do
	{
		menu();//调用目录函数,用来提示玩家选择
		printf("请选择功能:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();//这里调用game()函数,进行游戏内部的实现
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入:\n");
			break;
		}
	} while (input);
	return 0;

}

2.游戏功能的实现(游戏的内脏)

这里就是实现游戏功能的地方了,其实最主要就是要清楚生成的随机数的范围(控制在1~100)。想玩大的可以自己调。

目录函数

void menu()
{
	printf("*********************\n");
	printf("***    1.玩游戏    ***\n");
	printf("***    0.不玩了    ***\n");
	printf("*********************\n");
}

 游戏函数

void game()
{
	int Guessnum = 0;
	int ret = rand() % 100 + 1;//这里由于生成的随机数范围在0~32767(在有些编译器上这个RAND_MAX可能不一样,但大部分编译器是相同的)所以要%100+1
	int lim = 5;
	while (lim)
	{
		printf("你现在还有%d次机会\n", lim);
		printf("请输入要猜测的数字:\n");
		scanf("%d", &Guessnum);
		if (Guessnum < ret)
		{
			printf("猜小了\n");
		}
		else if (Guessnum > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜,猜对了,数字是%d\n", ret);
			break;
		}
		lim--;
	}
	if (lim == 0)
	{
		printf("抱歉,机会用完了,你输了,正确值是%d\n",ret);
	}
}

3.头文件的添加(游戏的头颅)

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

stdio.h就不必多说了吧,输入输出的必要头文件。

time.h是time()的头文件。

stdlib 是srand()的头文件。

三.游戏的整体代码

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void game()
{
	int Guessnum = 0;
	int ret = rand() % 100 + 1;//这里由于生成的随机数范围在0~32767(在有些编译器上这个RAND_MAX可能不一样,但大部分编译器是相同的)所以要%100+1
	int lim = 5;
	while (lim)
	{
		printf("你现在还有%d次机会\n", lim);
		printf("请输入要猜测的数字:\n");
		scanf("%d", &Guessnum);
		if (Guessnum < ret)
		{
			printf("猜小了\n");
		}
		else if (Guessnum > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜,猜对了,数字是%d\n", ret);
			break;
		}
		lim--;
	}
	if (lim == 0)
	{
		printf("抱歉,机会用完了,你输了,正确值是%d\n",ret);
	}
}
void menu()
{
	printf("*********************\n");
	printf("***    1.玩游戏    ***\n");
	printf("***    0.不玩了    ***\n");
	printf("*********************\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//执行随机数的生成
	                                //这里time()的返回值形式的time_t,而srand需要的形式是unsigned int,所以这里强制转换一下
	do
	{
		menu();//调用目录函数,用来提示玩家选择
		printf("请选择功能:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();//这里调用game()函数,进行游戏的实现
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入:\n");
			break;
		}
	} while (input);
	return 0;

}

最后,感谢大家的驻留观看。希望大家在新的一年里节节攀升,永远开心,欧耶~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值