用C语言实现猜数字小游戏(超级无敌详细版!)


前言

嗨,亲爱的读者们!我是艾老虎尤,今天我们将探讨一款经典游戏——猜数字!
无论你是一位年轻的编程新手,还是一位经验丰富的代码大师,这篇博客都将为你带来乐趣和启发。

我们将从头开始创建一个简单的猜数字游戏,使用C语言编写代码。无需担心,即使你是个新手,我们将提供易于理解的指导,带你一步一步完成这个项目。同时,如果你是个经验丰富的开发者,也可以在游戏的基础上添加自己的创意和改进。


一、游戏规则:

  1. 程序会生成1到100的随机数
  2. 猜大了,程序会告诉你猜大了,继续猜。
    猜小了,程序会告诉你猜小了,继续猜。
    猜对了,程序会告诉你猜对了

二、编程步骤

1.目录

首先我们需要一个目录,提示玩家如何开始游戏,我们先从main函数开始,利用do while循环和一个自定义函数把目录编辑出来,再使用switch语句选择是开始游戏还是退出游戏,我们再定义一个变量,是输入值,如果选择1,就开始游戏,如果选择0,就退出游戏,如果既不是0也不是1,就重新选择。

代码如下(示例):

#include <stdio.h>

void dirictory()//目录
{
	printf("******************\n");
	printf("***   1.play   ***\n");
	printf("***   0.exit   ***\n");
	printf("******************\n");

}

int main()
{
	int input = 0;
	do
	{
		dirictory();
		printf("请选择:>");
		scanf("%d", &input);

		switch (input)
		{
		case 1:
			printf("猜数字游戏开始!\n");
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			printf("选择错误,请重新选择!\n");
		}
	} while (input);

	return 0;
}

效果演示
在这里插入图片描述

这里有三个点要注意:
第一,我们使用了库函数scanfprintf,所以我们要包含头文件#include<stdio.h>
第二,这里就非常巧妙的一个点就是input既可以当作do while循环的判断部分,也可以当作switch语句的整形常量表达式,如果input是0,则退出do while循环,如果是0,在switch语句中则选择退出游戏。
第三,input要定义在mian函数里面,不能`定义在do while或者是switch里面,因为定义在里面的话,在while循环判断部分,这个变量是不能使用的。

2.猜数字游戏逻辑实现

接下来我们就来写一个game函数来实现猜数字游戏的整个逻辑。

代码如下(示例):

void game()
{
	//实现猜数字游戏的整个逻辑
}

int main()
{
	int input = 0;
	do
	{
		dirictory();
		printf("请选择:>");
		scanf("%d", &input);

		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			printf("选择错误,请重新选择!\n");
		}
	} while (input);

	return 0;
}

2.1 生成随机数

首先我们需要在逻辑中完成生成随机数,C语言中有一个库函数叫rand,是专门用来生成随机数的,点击生成随机数即可跳转到函数的介绍,rand函数返回的是一个整形,是0到RAND_MAX之间的一个随机数。
使用这个函数要包含头文件#include<stdlib.h>

在这里插入图片描述

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

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

}

void game()
{
	//实现猜数字游戏的整个逻辑
	//1.生成随机数
	int ret = rand();
	printf("%d\n", ret);//返回的值放到ret里面我们打印看看
}

int main()
{
	int input = 0;
	do
	{
		dirictory();
		printf("请选择:>");
		scanf("%d", &input);

		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			printf("选择错误,请重新选择!\n");
		}
	} while (input);

	return 0;
}

效果展示
在这里插入图片描述
可这样就会有一个问题,如果再运行一遍程序,他生成的随机数是一样的,可以复制我的代码多运行即便看看效果。

如果每次生成的数字是一样的,那这个游戏就没啥好玩的,我们要生成的是随机数,实际上rand函数在使用前要使用srand函数,来设置随机数的生成器,srand需要一个整形参数,假设我们给它一个0

在这里插入图片描述
效果演示
在这里插入图片描述

但是我们又发现每次生成的数字是一样的,因为srand函数参数固定了,我们需要一个随机数,这里我们就要用到另外一个知识,叫做时间戳

2.2 时间戳

时间戳就是这个时间点到1975年一月一日之间的一个时间差值,单位是秒。

在这里插入图片描述

这里想使用时间戳的话,我们要使用time函数

在这里插入图片描述

time函数返回的是一个整形,只不过被重命名成time_t了,他需要一个指针,我们传一个空指针NULL
然后把参数给函数srand
这里要包含头文件#include<time.h>

效果展示
在这里插入图片描述

我们发现,如果按的很快的话,随机生成的数字会非常相近,甚至相同,原因是srand函数只需要调用一次就行,我们把它放到main函数里面即可。

效果展示:
在这里插入图片描述

题目的要求是生成1到100的数字,可是我们生成的数字太大了,想要解决这个问题,我们直接%100+1即可,因为任何数%100+1只能是1到100的数字,假设1234%100+1=35

效果展示:
在这里插入图片描述

到这里我们的生成随机数部分的代码已经完成了,就可以继续下一步了。


3.猜数字

这里就比较简单了,我们ret是随机值,我们只需要输入一个值然后用循环和它比较即可。

完整代码

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

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

}

void game()
{
	int num = 0;
	//实现猜数字游戏的整个逻辑
	//1.生成随机数
	
	int ret = rand()%100+1;

	//2.猜数字
	while (1)
	{
		printf("请开始猜数字游戏!");
		scanf("%d", &num);
		if (ret > num)
		{
			printf("您猜的数字太小了\n");
		}
		else if (ret < num)
		{
			printf("您猜的数字太大了\n");
		}

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

int main()
{
	int input = 0;
	srand(time(NULL));
	do
	{
		dirictory();
		printf("请选择:>");
		scanf("%d", &input);

		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!\n");
			break;
		default:
			printf("选择错误,请重新选择!\n");
		}
	} while (input);

	return 0;
}

运行效果:
在这里插入图片描述


总结

在本博客中,我们成功地创建了一个有趣的猜数字游戏,并用C语言编写了相应的代码。我们一起探讨了如何生成随机数字、接受用户输入、检查猜测是否正确系统。通过这个项目,你不仅学到了如何编写代码来实现一个小游戏,还加深了对基本编程概念的理解,如条件语句和循环。

这个游戏是一个很好的起点,你可以在此基础上进一步扩展和改进,例如增加难度级别、美化用户界面或与朋友分享。不管你是想练习编程技能还是寻找一些有趣的挑战,这个猜数字游戏都是一个很好的选择。

希望你在本博客中有所收获,也希望你能在未来的项目中充分发挥你的创造力和编程技能。谢谢你的阅读,愿你在编程世界中获得更多的成功和乐趣!

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值