C语言实现一个小游戏 —— 猜数字

C语言实现一个小游戏 —— 猜数字

游戏介绍

游戏介绍:游戏会生成一个0-100的随机数,玩家将通过不断猜数得到反馈(猜大了 或者 猜小了)直至猜到正确的数字。

实现思路

通过游戏的介绍,我们首先分析需求:

  • 我们需要一个游戏主界面,功能包含进入游戏或者退出游戏;
  • 需要一个符合规则的随机数;
  • 需要录入猜数并判断与正确答案的关系(猜大了或者猜小了);
  • 优化游戏体验;

代码实现

根据上面的需求分析,我们先构建我们的游戏主界面:

int main()
{
	int intput = 0;
	do
	{
		printf("猜数字游戏\n");
		printf("-------------------\n");
		printf("-----1.geme--------\n");
		printf("-----0.exit--------\n");
		printf("-------------------\n");
		printf("请选择\n");
		scanf("%d", &intput);
		switch (intput)
		{
		case 1:
			geme();
			break;

		case 0:
			printf("退出游戏\n");
			break;

		default:
			printf("非法输入,请重试\n");

		}
	} while (intput);
	return 0;
}

我们利用printf函数打印出我们的游戏主界面,并给出提示选1:进入游戏;选0:退出游戏;输入其他数值反馈非法输入。
为了实现游戏的可重复游玩性,我们使用while循环,并根据输入值来判断游戏是否执行(上面选择用 1 0 来判断的好处就体现在这里)。
使用do while 首先打印一次游戏界面再根据scanf函数录入的值来判断是从switch哪里进入,完成游戏主界面的搭建。

在这段代码的实现中,我们需要使用到 <stdio.h> 头文件

接下来完成游戏主体的创建,我们要实现两个目标:一个是生成随机数,另一个是实现对输入数的判断。

void geme()
{
	
	srand((unsigned)time(NULL));
	int num = rand()%100+1;
	int i = 0;
	printf("可以猜了");
	while (1)
	{
		
		int guess = 0;
		scanf("%d", &guess);
		if (guess > num)
		{
			printf("猜大了!\n");
		}
		else if (guess < num)
		{
			printf("猜小了!\n");
		}
		else
		{
			printf("恭喜你,猜对了答案是%d\n", num);
			break;
		}
	}
}

我们定义一个game函数来实现我们上述的两个目标:

生成符合要求随机数,我们使用rand函数来实现随机数的生成,rand函数的介绍
根据介绍我们可以知道 rand函数是一个伪随机数,是根据一定的算法来以及srand为参数来实现随机数的生成。
那么我们进一步利用time即时间的动态性,来提高随机数的生成的难以预测性。
在本段代码过程中我们需要用到srand函数 rand函数 time函数,他们相对应的头文件为 <stdlib.h> <time.h>

现在我们已经完成了主界面和游戏主体的实现,但是整个游戏体验却很糟糕,例如上次的游戏内容还残留着。
那么我们对主界面的代码进行优化

int main()
{
	int intput = 0;

	do
	{
		printf("猜数字游戏\n");
		printf("-------------------\n");
		printf("-----1.geme--------\n");
		printf("-----0.exit--------\n");
		printf("-------------------\n");
		printf("请选择\n");
		scanf("%d", &intput);
		switch (intput)
		{
		case 1:
			geme();
			Sleep(2000);
			system("cls");
			break;

		case 0:
			printf("退出游戏\n");
			break;

		default:
			printf("非法输入,请重试\n");

		}
	} while (intput);
	return 0;
}

我们加入了system函数 以及Sleep函数,他们分别用来实现清屏以及游戏获胜后的短暂停留。
而他们的头文件为 <windows.h>

到了这里我们的游戏就已经完成了,然而我们实际上还可以对游戏进一步优化,比如增加游戏猜数机会的限制等等来增加我们游戏的趣味性。

完整源代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>

void geme()
{
	
	srand((unsigned)time(NULL));
	int num = rand()%100+1;
	int i = 0;
	printf("可以猜了");
	while (1)
	{
		
		int guess = 0;
		scanf("%d", &guess);
		if (guess > num)
		{
			printf("猜大了!\n");
		}
		else if (guess < num)
		{
			printf("猜小了!\n");
		}
		else
		{
			printf("恭喜你,猜对了答案是%d\n", num);
			break;
		}
	}
}

int main()
{
	int intput = 0;

	do
	{
		printf("猜数字游戏\n");
		printf("-------------------\n");
		printf("-----1.geme--------\n");
		printf("-----0.exit--------\n");
		printf("-------------------\n");
		printf("请选择\n");
		scanf("%d", &intput);
		switch (intput)
		{
		case 1:
			geme();
			Sleep(2000);
			system("cls");
			break;

		case 0:
			printf("退出游戏\n");
			break;

		default:
			printf("非法输入,请重试\n");

		}
	} while (intput);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值