猜数字小游戏

文章目录

  • 前言
  • 一、猜数字游戏规则
  • 二、实现过程
  • 三、编程思路

  • 总结


前言

随着C语言学习的不断深入,我们较为深入地了解到了分支语句和循环语句的语法和使用方法。本次的猜数字游戏就是对于这两种语句的灵活使用。


一、猜数字游戏规则

由电脑生成一个1-100的数字,玩家向电脑中输入一个范围内的数字,如若较电脑所给出的数字大则提示“猜大了”,若小于则提示“猜小了”,若等于则提示“猜对了”,并开启下一轮游戏。


二、实现过程

1.引入库

代码如下:

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

void menu()
{
	printf("********************\n");
	printf("*****  1.play  *****\n");
	printf("*****  0.exit  *****\n");
	printf("********************\n");
}
void game()
{
	int num = 0;
	//生成随机数
	int ret=rand()%100+1;//专门用来生成随机数,范围是0~32767
	printf("游戏开始,请输入数字:");
	while (1)
	{
		scanf("%d", &num);
		if (num < ret)
		{
			printf("猜小了!\n");
			continue;
		}
		else if (num > ret)
		{
			printf("猜大了!\n");
			continue;
		}
		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("选择错误");
			break;
		}
	} while (input);
	return 0;
}

2.读入数据

代码的实现:(如图)


三、编程思路

首先,是主函数的编写,为了便于玩家开始游戏与结束游戏,我们准备率先设立一个菜单。但在设立菜单的前提我们先定义一个input作为全局变量进行数据的输入。然后就是菜单的设计,以“*”作为边框,里面附上1.play 0.exit作为input的判定。

为了多次重复游戏,我们将整个程序放在一个do while循环中,以input的值作为条件,1为真继续循环,0为假跳出循环。然后我们就可以使用一个swich语句作为选择,1为进入游戏,0为退出游戏,而其他的输入则会提示为“选择错误”并让玩家重新进行输入。

在选择“1”,也就是进入游戏,我们就将整个猜数字游戏的内容放在了game函数中。进入game函数,首先要定义一个玩家输入的数字num,这一步很简单。而然后就来到了这个小程序中的重头戏,随机数的生成。

对于随机数的生成,我们在此引入了一个时间戳的概念。由于时间戳是随着时间的变化而变化的,所以生成的数也足够的随机。因为是一个随机数,并且引用了时间戳,所以我们引用了两个新的库函数<stdlib.h>和<time.h>,在主函数中引用srand函数,里面套用time函数,向time函数中传入一个空指针就生成了一个随机数,与此同时将time函数所生成的随机数强制转化为unsigned int形式,便于后面进行数据处理。然后我们回到game函数中,用rand函数接收生成的随机数,由于我们所取的数值位于1-100之间,所以%100+1,以保证生成的数据为1-100中间的一个数。这也就是我们将time函数的生成数强制转化为无符号整形的原因。

在生成随机数后,在电脑上打印出:“游戏开始,请输入数字:”,提示玩家输入数字进行游戏。这次将内容放在了一个while循环中,条件为“1”,意为始终循环,直到遇到循环中的break。而接下来就是if判断语句的使用,一旦我们输入的数据大于随机数,则提示“猜大了”;小于随机数则提示“猜小了”,两种结果都用了continue使得循环继续,直到猜出结果,break跳出循环,由玩家选择进行下一局还是退出游戏。


 

 

总结

以上就是本次我对猜数字小游戏程序的编写过程与讲解,如若有一些问题或者不完美的地方都可以在下面评论区中指出,各位大佬同僚们的帮助与支持都将成为我不懈努力,不断坚持下去的动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢写代码的小R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值