C语言程序设计:猜数字小游戏

一、游戏介绍

该游戏由程序随机生成一个0~100的一个数字,并且每一次重新开启游戏之后所生成的数字不重复。玩家一共有五次猜数字的机会,每一次猜测数字之后,程序都会告知数字的范围,直到猜到数字或超过猜数字的次数。

二、游戏玩法

 1、游戏随机生成一个0~99的数字,用户通过输入数字来进行猜测,每一次重新开始游戏后目标数字不会重复。

 2、玩家一共有5次猜数字的机会(猜数字的机会可以更改),若没有猜中,程序会进行判断,若大于目标数字则提示太大了,若小于目标数字则提示太了。

 3、在规定的次数内猜中数字,则游戏胜利。

三、编程思路

        3.1 游戏菜单函数
void menu()
{
	printf("****************请选择***************\n");
	printf("*************** 1.Play **************\n");
	printf("*************** 0.Exit **************\n");
	printf("********你将拥有5次猜数字的机会******\n");
	printf("***********数字范围是0~100***********\n");
}
        3.2 game函数设计
void game()
{
	int i = 1;
	int guess = 0;
	//生成1个随机数
	int  ret = rand() % 100 + 1;//rand函数的作用是随机生成一个数字  %100取到的数字是0—99
	//2.猜数字
	printf("请猜数字:");
	while (1)
	{
		scanf("%d", &guess);
		if (guess == ret)
		{
			printf("恭喜你!猜对啦!\n");
			break;
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
			i++;
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
			i++;
		}
		if (i > 5)  //设置猜数机会的次数
		{
			printf("猜数机会用完啦,重新开一局吧\n");
			break;
		}
	}
}

由于需要多次输入数据,所以我们直接使用死循环,当用户才对数字或超出猜数字的次数时break跳出循环。rand()函数的作用时随机生成一个数字,这里为了把范围控制在0~100,我们把rand生成的随机数进行%100取余,由于取余的范围只会在0~99,所以我们还需要+1。i的作用时用来统计猜数字的次数。

四、main函数主体

int main()
{
	srand((unsigned int)time(NULL));  //time表示获取一个时间戳  因为srand内部必须是一个unsigend int所以进行了
                                      //一次强制转换,srand的作用是设置一个随机数的起点
	int input = 0;
	do
	{
		menu(); 
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			printf("猜数字\n");
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:								//当输入其它的数字时,则打印选择错误
			printf("选择错误,请重新选择!\n");
		}
	} while (input);//如果为真则继续循环 如果为假则退出循环
	return 0;
}

srand函数的作用是设置rand函数随机生成数字的起点,time函数是获取一个时间戳(时间戳是一个随时都在改变的数字,所以这也是随机生成一个目标数字的核心)

需要包含头#include<time.h>。由于玩家可能会多次进行游戏,所以我们把游戏的选择放在do while语句里面,当用户选择0时,while(0)为假,结束循环。

五、游戏结果展示

以上便是游戏结果的展示,为了展现出游戏结果,我把猜数字的次数改了一下哈哈哈哈,猜半天没猜出是什么数字。

六、写在最后

这个属于非常精简的猜数字代码了,大家可以丰富出更多的功能,此程序的唯一难点便在于如何生成随机数字,这里便运用到了time()获取一个时间戳的方法来获取一个随机数字。博主写的文章次数不多,会存在很多的瑕疵,如果有什么缺点欢迎大家在评论在评论区指点。最后,求一个三连。

 求三连!!!!!!

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值