【c语言】猜数字小游戏(详细思路+源码)


前言

🔥小故事引入
    一天,小蓝阿紫绿豆 三人在一起玩猜数字小游戏。他们共同制定了游戏规则:要求给定一个数字的范围1~100,选出一人作为出题人在纸上给出正确答案,让另外两人轮流去猜正确数字。如果某人猜的数字比纸的正确数字大,出题人会提示说:“大了!”,否则将会说:“小了!”。直到有一人猜到正确数字,游戏才会结束,输的人将要接受惩罚。
    三人在那里玩的不亦乐乎。然而在河对岸另一头的黑虎目睹了这一切,因为桥还没有修好的原因,黑虎只能眼睁睁的看着他们一起在那快乐的玩,不禁地流下了伤心的眼泪。为了让黑虎快乐起来,身为程序猿的你能否把这一个小游戏编写出来让黑虎玩呢?
在这里插入图片描述
🔥作者留言:
文章创作不易,可能会有些地方出现错误,还希望广大读者们能够帮忙指出,让我们大家一起共同进步。
🔥心得:
设计一个程序之前,我们首先要做的是设计出一个整体规划,这样可以帮我们更好的理清思路,编写出结构清晰、易于理解、规范化的代码。
🔥祝福语:
祝大家国庆节快乐,学业有成,人人都能拿到一个好offer。


一. 游戏设计思路

  • 整理思路:

    🍀首先让系统生成一个随机数,大小范围可以按照自己的需求设置;

    🍀然后在提示玩家输入一个数字;

    🍀用这个数字与随机数比较大小,于此同时可以在设计一些提示,比如“大了”,“小了”等;
    🍀最后如果猜对了,便直接输出与“恭喜成功通关”类似的语句;
    🍀然后结束程序。

  • 流程图设计:
    提示:流程图的设计也是非常有必要的,它可以使各种操作一目了然,形象更加直观。
    在这里插入图片描述

二. 各模块设计

2.1 菜单栏模块

当打开程序时为了提高我们对程序可视化,我们首先要设计一个菜单栏方便提示我们如何选择可以进入或退出游戏。代码如下:

void menu()
{
	//打印菜单
	//选择1:进入游戏
	//选择2:退出游戏
	printf("*******************************\n");
	printf("**** 1.进入游戏	0.退出游戏 ****\n");
	printf("*******************************\n");
}

2.2 主函数模块

为了使游戏可以多次反复进行,我们可以使用do…while语句来控制游戏多次进行和使用switch语句用来控制是进入游戏还是退出游戏:

int main()
{
	srand((unsigned int) time(NULL));//必须要加,为rand函数提供随机种子
	
	int input = 0;
	do  //do...while语句来控制游戏多次进行
	{
		menu();	//调用菜单栏
		printf("请确认是否进入游戏(1/0):> ");
		scanf("%d", &input);
		
		//switch控制游戏是否开始或退出。
		switch (input)
		{
		case 1:
			game();  //进入游戏
			break;
		case 0:
			printf("\n退出游戏,欢迎下次进入!!!\n");
			break;
		default:
			printf("\n选择错误!!!\n");
			break;
		}
	} while (input);
 
	return 0;
 
}

2.3 游戏实现模块

在游戏模块的实现过程中,我们发现需要系统给我们提供随机值。因此我们可以使用rand()函数生成随机值,为了照顾小部分同学对rand函数不能很熟练的使用,在这里我做些简单介绍:

🔍rand()函数是用来生成伪随机数的,返回一个介于 0 和 RAND_ MAX (32767)之间的伪随机整数,通常会配合srand()函数使用以达到预期效果。在本文中srand()函数仅需使用一次,放入主函数中即可。
🔍如果要确定一个指定范围还需要采用 “取模+适当的整数” 进行运算,如:v = rand() % 100 + 1; // v 的范围是1 ~ 100

如果你是刚接触或者想对还想对rand()函数和srand()函数更加详细了解可以转到该篇文章《一篇文章带你搞定rand函数和srand函数》

void game()
{
	//1. 生成随机数 0 ~ 99
	int res = rand() % 100 + 1;
 
	//2. 猜数字
	int guess = 0;
	while (1)
	{
		printf("\n请说出你要猜的数字:> ");
		scanf("%d", &guess);
		if (guess > res)
			printf("猜大了\n");
		else if (guess < res)
			printf("猜小了\n");
		else 
		{
			printf("恭喜你猜对了\n");
			printf("\n");
			break;
		}
	}
}

2.4 完整源代码及运行效果图

完整源代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void menu()
{
	//打印菜单
	//选择1:进入游戏
	//选择2:退出游戏
	printf("*******************************\n");
	printf("**** 1.进入游戏	0.退出游戏 ****\n");
	printf("*******************************\n");
}
 
void game()
{
	//1. 生成随机数 0 ~ 99
	int res = rand() % 100 + 1;
 
	//2. 猜数字
	int guess = 0;
	while (1)
	{
		printf("\n请说出你要猜的数字:> ");
		scanf("%d", &guess);
		if (guess > res)
			printf("猜大了\n");
		else if (guess < res)
			printf("猜小了\n");
		else 
		{
			printf("恭喜你猜对了\n");
			printf("\n");
			break;
		}
	}
}
 
int main()
{
	srand((unsigned int) time(NULL));
	int input = 0;
	do
	{
		menu();		//菜单
 
		printf("请确认是否进入游戏(1/0):> ");
		scanf("%d", &input);
		//switch控制游戏是否开始或退出。
		switch (input)
		{
		case 1:
			game();		//进入游戏
			break;
		case 0:
			printf("\n退出游戏,欢迎下次进入!!!\n");
			break;
		default:
			printf("\n选择错误!!!\n");
			break;
		}
	} while (input);
 
	return 0;
 
}

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

总结

    本文主要介绍了如何实现简单的猜数字小游戏,功能和代码都十分简单,大家可以动手试试或者添加一些自己想要的功能,提高自己的代码能力。文章目的主要是告诉要我们培养一个好的习惯,再编写程序前要先理清思路,做好整体规划,最好将程序的流程图做出来以便加深我们的理解。

    今天的内容就到这里了,你们都学会了吗?如果还有疑问的话请在评论区里多多提问,大家可以一起帮你解决,让我们共同进步。创作不易,如果对你有用的的话点个赞支持下作者,你们的支持是作者创作最大的动力。关注我不迷路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

聆风吟_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值