栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

用C语言实现猜数字游戏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用C语言实现猜数字游戏

要实现的功能:

  1. 自动产生一个1~100的随机数。
  2. 猜数字 -     a、猜大了,就恭喜你,游戏结束     b、猜错了,会告诉你是猜大了还是猜小了
  3. 这个游戏你可以一直玩,直到游戏结束

首先我们要制作一个菜单:

#include 
void menu()
{
	printf("####################n");
	printf("####  1.paly   #####n");
	printf("####  0.exit   #####n");
	printf("####################n");

}


int main()
{

	menu();
	printf("进入或者退出(1/0):");
	

	return 0;
}

 这个菜单会打印输出一个菜单;然后提示你是进入游戏还是退出游戏。这时我们需要从键盘上输入一个数并且要判断这个数是1/0/其他,然后用分支语句分别对输入的数做出不同的行为。

int main()
{
	int imput = 0;
	menu();
	printf("进入或者退出(1/0):");
	scanf("%d", &imput);
	switch (imput)
	{
	case 1:
		game();
		break;
	case 0:
		printf("退出游戏n");
		break;
	default:
		printf("输错了,请重新输入n");
		break;
	}

	return 0;
}

由于我们要实现游戏可以一直玩,知道游戏结束,那么我们可以将主函数中的部分代码放入do - while循环当中,来实现这个功能。

不管imput输入的是什么,循环体都会先走一遍,然后再判断是不是要再进入循环。当imput的值为非0时,循环再次执行;当imput为0时,循环结束,游戏结束。

然后我们就要对进入游戏后要做的事进行编写了。我们的目的是要实现一个1~100的随机数。在C语言中有一个随机数生成函数:rand()。

void game()
{
	int rej = rand();
	printf("%dn", rej);
}

 但是这里我们发现,我们每次退出程序,再进入游戏,这个随机数都是41,这不符合我们想要的随机数的想法。这里的问题在于这个随机数生成函数在使用的时候需要使用srand()函数对其进行设定。下面是库函数rand()和srand()的说明。rand()和srand()的使用需要引入头文件

#include

 

那么我们应该怎样设置才能让这个数字随机起来呢,我们需要使用srand函数对rand函数进行设定,srand就是给rand随机数设定一个初识的值,就是从哪开始的。

srand((unsigned)time(NULL));

这里所用到的time函数,是使用了时间戳的概念。时间戳就是将系统现在的时间和初始的时间相减,得出的一个差值。

那么当我们把这个时间戳参数给srand函数之后,可以看到现在的每个随机数都离得很近,不是我们希望的那种随机数(也就是不够随机),为了解决这个问题,我们将这个srand函数放到循环外面,整个程序中只对rand设置一次,这样这个数就足够随机了。

接下来我们就要允许玩游戏的人输入一个数,然后程序对这个数和随机生成的数进行比较,然后给出提示来让玩游戏的人继续猜直到猜中。

全部代码:

#include 
#include 

void menu()
{
	printf("####################n");
	printf("####  1.paly   #####n");
	printf("####  0.exit   #####n");
	printf("####################n");

}

void game()
{
	int rej = rand()%100+1;
	

	int guess = 0;
	while (1)
	{
		printf("请输入猜的数:");
		scanf("%d", &guess);
		if (guess < rej)
		{
			printf("猜小了n");
		}
		else if (guess > rej)
		{
			printf("猜大了n");
		}
		else
		{
			printf("恭喜你猜对了!!!n");
			break;
		}
	}
}

int main()
{
	int imput = 0;
	do
	{
		srand((unsigned)time(NULL));
		menu();
		printf("进入或者退出(1/0):");
		scanf("%d", &imput);
		switch (imput)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("输错了,请重新输入n");
			break;
		}
	} while (imput);

	return 0;
}

 这里对int rej = rand()%100+1    进行解释:rand()%100是一个0~99的余数,余数加一正好符合我们的需求。

游戏运行的效果为:

 一定要认真地去理解这个程序的逻辑结构!加油吧!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号