C语言|一个简单的文章让你轻松理解猜字小游戏的原理

本文档介绍了一个适合C语言初学者的猜数字小游戏的实现过程。游戏规则是在1到100之间随机生成一个数字,玩家通过提示判断猜测是否正确。文中详细讲解了如何创建游戏菜单、生成随机数以及判断玩家输入的方法,并提供了完整的C语言代码示例。通过这个游戏,读者可以学习到C语言的基本控制结构和随机数生成技巧。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

猜字小游戏,c语言初学者在学习过程必不可少的练手小项目,虽然在大佬面前,这个弄出来有手就行,但对于初学者,这其中的思维逻辑还是值得学习的,现在就跟着我一起往下去看。(作者也是菜鸟,若哪里写得不好,请大佬指出 (狗头保命))``


一、游戏分析

游戏规则:在1~100之间随机一个数,让玩家猜,猜错了提示大了还是小了,直至玩家猜对。
构建游戏思路:

  1. 建立一个最简单的菜单,让玩家选择是否玩猜字游戏。
  2. 如何产生随机数。
  3. 判断猜的数字是否正确。

二、代码实现

1.建立菜单

代码如下(示例):

void menu()//这里使用void是不需要返回值类型没有任何要求
{
	printf("*************************\n");
	printf("******play game:>1*****\n");
	printf("******exit game:>0*****\n");
	printf("*************************\n");
}

int main()
{
	int input = 0;
	do//这里选择do while最合适,想让他先玩游戏再选择是否接着玩。
	{
		menu();
		printf("请选择:>\n");
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("退出程序\n");
			break;
		case 1:
			
			break;

		default:
			printf("选择错误,请重新选择\n");
			break;
	}

	} while (input);

通过do while switch,这样一个简单的菜单就弄好了。

2.如何产生随机数

产生随机数则需要用到rand()和种子生成器srand(),因为是库函数,对应的头文件是stdlib.h
首先介绍rand(), rand()的随机值范围是从0到RAND_MAX(值为32767),但是他有一个缺点,再次输入的时候出现值是相同的,如图所示:
在这里插入图片描述
请添加图片描述
srand()的作用就来了,通过输入任意值使得rand()随机出的来的值改变,但是也有缺点,就是使rand()值虽然改变了,但是每次值都是不变,若是能让srand()中输入值不断在变化,那么rand()就不会每次都相同了。引入时间戳的概念,因为时间是一直在变化的,所以可以使用time(),他对应的头文件是time.h。
代码如下:

srand((unsigned int)time(null));
//srand函数所需要的是unsigned int类型,所以需要强制转换类型,而time函数是time_t类型,而time所需要的是指针,但是我们只是想让它随机一个值,不在意是什么值,直接使用空指针。

代码如下:

int ret = rand()%100+1;//rand()%100只会输出1~99的数,加一之后即可输出1~100的值。

3.判断猜的数字

既然是猜数字游戏,当然不会让玩家只输入一次数据,所以我们需要一个循环来让玩家多次输入。同时,还需要给与玩家提示,减少玩家失误次数。
while (1)
{
printf(“请输入你猜的数字:>”);
scanf(“%d”, &INPUT);

	if (INPUT>ret)
	{
		printf("你猜的值过大\n");
	}
	else if (INPUT<ret)
	{
		printf("你猜的值过小\n");
	}
	else
	{
		printf("恭喜你,猜对了!!");
		break;
	}
}

三、完整代码

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

void menu()
{
	printf("*************************\n");
	printf("******play game:>1*****\n");
	printf("******exit game:>0*****\n");
	printf("*************************\n");

}
void game()
{
	int INPUT=0;
	int ret = rand() % 100 + 1;
	while (1)
	{
		printf("请输入你猜的数字:>");
		scanf("%d", &INPUT);
		
		if (INPUT>ret)
		{
			printf("你猜的值过大\n");
		}
		else if (INPUT<ret)
		{
			printf("你猜的值过小\n");
		}
		else
		{
			printf("恭喜你,猜对了!!");
			break;
		}
	}
	
}

int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("退出程序\n");
			break;

		case 1:
			game();
			break;

		default:
			printf("选择错误,请重新选择\n");
			break;
	}

	} while (input);//当玩家输入0时退出循环,当玩家输入非0时重新循环。
	


	return 0;
}

四、运行效果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值