简单猜数字游戏的实现——“C”

目录

一、大概功能

二、功能的实现

1、菜单部分

2、游戏部分

 最后,源代码奉上


一、大概功能

首先,我们需要了解最终需要实现的功能

运行结果如下:

 我们可以看到,首先出现一个菜单选项,供我们选择

在选择开始后提示我们输入猜的数字

并且输入之后提示我们是否才对,如果猜小了或者猜大了都会进行提示 

那么,现在就让我们开始实现以上功能吧~

二、功能的实现

在这里,我们运用do-while语句来实现

1、菜单部分

首先创建一个菜单,可以直接在do-while语句中用printf打印,也可以创建一个函数,这里我选择创建函数

 

 我们可以先运行检测一下

出现了很多次,这是为什么呢?

 原来是我们在循环条件中输入了1,导致出现了死循环

所以在我们平常写代码时要一步一运行,这样更好的可以判断是否出错,不至于写完之后不知道错误出在哪,找一半天,我在之前的文章中也有说到过(http://t.csdn.cn/stfTW——这是一篇关于寻找素因子的文章,感兴趣的可以看看哦~~~)。

那么,我们是要在输入选项后来进行后面的操作,所以我们需要用一个值来接收,然后进行之后的操作,那么循环条件就根据输入的值来判断就行,输入1则开始游戏,输入0则退出

 其中switch函数就是来执行选择之后的不同的操作

同样,我们运行看一下

 

现在菜单部分已经完成了实现,接下来实现游戏部分

2、游戏部分

游戏部分我们写一个game函数来实现

开始游戏后,首先会提示你输入要猜的数字,猜错后又会提示你再猜,所以这里也是一个循环

 

 可以看到运行是完全正确的,那么这是一个固定的值,怎么才能让它随机出值?

这就涉及到了rand函数

什么是rand函数,通过查找得到一下注释

 这个的意思是:rand的返回值是一个随机的从0~RAND_MAX的整数数值,而RAND_MAX的值是32767,也就是说rand的返回值在0~32767之间,包含的头文件为stdlib.h

我们可以给它设定一下范围,那怎么设定呢?

可以这样设定

x = rand()%10     //x的范围即为0~9
x = rand()%10+1   //x的范围即为1~10
x = rand()%100+1  //x的范围即为1~100

而我们要使用rand函数就需要设置一个随机数生成器srand函数,而它需要一个随机数种子,随机数种子可以任意给定,但是我们在多运行几次后会发现问题

第一次运行

 第二次运行

每次重新运行的产生的结果都是一样的

问题就出在随机数种子上,每一个随机数种子里面的都是一样的,那么我们就需要一个一直变化的随机数种子

而是什么是一直变化的呢?是时间,所以我们引用时间戳(time函数)来当做随机数种子

time函数是一个储存时间的函数,所以将它当做随机数种子正合适,它所包含的头文件为time。h

 srand((unsigned)time(NULL))

这样就设置好了 ,以后出现的数就是随机的了,并且每次运行都会不一样

 看这样小游戏就做好啦!

 最后,源代码奉上

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

void menu()
{
	printf("**************************\n");
	printf("*****     1、开始    *****\n");
	printf("*****     0、退出    *****\n");
	printf("**************************\n");
}

void game()
{
	int c = 0;
	int x = rand() % 10 + 1;//设定范围为1~10
	while (1)
	{
		printf("请输入要猜的数字:");
		scanf("%d", &c);
		if (c > x)
			printf("猜大啦!\n");
		else if (c < x)
			printf("猜小啦!\n");
		else
		{
			printf("猜对啦~~\n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case  1:
			printf("开始游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	} while(input);
	return 0;
}

还有什么不懂的可以来找博主哦~~

 喜欢的话记得三连哦~~~

感谢支持!!!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值