C语言 之 猜数字小游戏

本文介绍了如何使用C语言开发一个猜数字游戏,包括菜单模块的展示、主函数中的do...while循环和switchcase结构,以及游戏模块中生成随机数和比较用户输入的过程。
摘要由CSDN通过智能技术生成

这篇博客主要来学习如何完成一个猜数字的小游戏

这个小游戏综合了我们之前学习到的循环结构、选择结构,以及随机数的生成的使用

所以这篇博客非常适合新手阅读哟!


首先我们要完成这个程序,可以分成三个模块

分别是菜单模块、游戏模块、主函数模块

void menu()

void game()

int main()

让我们一步步来完成吧!

首当其冲映入眼帘的是菜单

主要是提供给玩家查看如何做选择

这个是我的游戏菜单 很简略 运行结果如下

所以你更有想法,可以按照自己的想法做一个更好看的菜单哟!


接下来我们看看主函数来怎么写吧!

因为程序的运行的顺序是按照主函数的顺序来执行的,所以我们很需要关注主函数怎么完成

上面完成的菜单模块是至少需要呈现一次的,既然至少需要运行一次,那我们自然而然得应该想到do...while循环

do 
{
	menu();

} while (n);

这样就能确保我们至少会执行一次了

然后呢,要注意这个循环的条件n,这也是我们把1作为play,把0作为exit的原因,如果我们选择的是1那么就可以循环进行游戏,输入0就退出游戏。

但是上面说了至少会执行一次,所以如果只想用0来退出游戏是行不通的,这个时候我们就可以引入选择结构啦!

int n = 0;
do 
{
	menu();
	printf("请选择是否开始游戏 1/0:");
	scanf("%d", &n);
	switch (n)
	{
	case 1:
		game();
	case 0:
		printf("退出游戏\n");
		break;
	default:
		printf("搞事是吧你?");
		break;
	}
} while (n);

所以主函数中的内容大概就是这样啦!

但是千万别忘了,我们还要生成随机数呢

所以要在主函数中加入:

srand((unsigned int)time(NULL));
//生成随机数字

所以主函数内容就是这样啦


还有最最关键的游戏模块,用来实现游戏的执行

那既然是猜数字游戏

所以我们在游戏模块的思路就可以分为生成随机数比数字大小两部分内容

随机数的生成通过一下代码完成:

int ret = rand() % 100 + 1;  //随机数字1 - 100

这里的%100+1 就是限制了我们生成的随机数字在1 - 100之间

可以自己设置范围

接下来就是数字大小的比较

int input  作为我们输入的数字大小
int ret  作为我们生成的随机数字大小

毕竟是猜数字嘛!所以大概率不可能只猜一次就完成游戏

由此我们就要用到循环

循环条件设为1,表示一直进行循环,直到我们猜中然后跳出程序为止

注意:这里的循环条件不一定要设为1,可以设定并初始化count,然后程序中每猜测一次count--等方式来限制游戏次数,可以自己尝试哟

while (1)
{
printf("请选择要猜的数字:");
scanf("%d", &input);
if (input > ret)
{
	printf("猜大了,请继续猜哟\n");
}
else if (input < ret)
{
	printf("猜小了,请继续猜哟\n");
}
else
{
	printf("恭喜你猜中啦!\n");
	break;
}
}

所以我们的游戏模块就为这样啦!

完整代码为:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
void menu()
{
	printf("************************\n");
	printf("*****   1.play     *****\n");
	printf("*****   0.exit     *****\n");
	printf("************************\n");
}
void game()
{
	int input = 0;
	int ret = rand() % 100 + 1;  //随机数字1 - 100
	printf("开始游戏\n");
	while (1)
	{
	printf("请选择要猜的数字:");
	scanf("%d", &input);
	if (input > ret)
	{
		printf("猜大了,请继续猜哟\n");
	}
	else if (input < ret)
	{
		printf("猜小了,请继续猜哟\n");
	}
	else
	{
		printf("恭喜你猜中啦!\n");
		break;
	}
	}
}
int main()
{
	srand((unsigned int)time(NULL));
	//生成随机数字
	int n = 0;
	do 
	{
		menu();
		printf("请选择是否开始游戏 1/0:");
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			game();
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("搞事是吧你?");
			break;
		}
	} while (n);
	return 0;
}

如果自己有兴趣的话,可以自己去限制游戏的次数,更改猜数字范围等等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值