#C语言 猜数字游戏

C语言 猜数字

前言

该程序中要用到C语言中的控制循环语句,

1.游戏设计

该游戏的设计为,让系统在数字中规定一个范围后随即生成一个整数,然后由我们猜,玩家猜数字后,系统进行判定并提示我们猜大了还是小了或是猜中了,而且统计并提示玩家猜的次数。

2.代码实现

1.游戏菜单

当我们玩一个游戏是第一眼看到的就是游戏菜单,所以我们也要打印一个菜单譬如:

在这里插入图片描述
但我们只是制作一个简易版的菜单,所以这里我们规定一个游戏菜单函数
(代码如下):

void screen()
{
	printf("****************\n");
	printf("*****1.play*****\n");
	printf("*****2.end******\n");
	printf("****************\n");
}

2.构建游戏执行函数

1.(时间戳)

这里我们还要对一个库函数进行一个简单的介绍——时间戳。
它是一个用来表示时间和日期和数字格式,在这里我们可以把它进行转化为整数随机数的形式。并且由于它是库函数,所以我们要添加头文件,它的头文件为——time.h,由于它生成随机数的范围过大,所以我们要进行限制,这里我们需要用到除法余数,我们让它计算出除以100的余数再加一,就得到了1到101的范围中的整数

int ret = rand() % 100 + 1;

2.游戏中主函数

然后我们要设计当我们进行猜时系统让我们选择是否开始游戏,给我们提示游戏开始,并让我们输入数字的程序,这里我们需要用到do while()循环,因为无论如何程序都要执行一次让我们选择是否玩游戏,然后再进行判断程序是否向下进行,这里我们将其放入主函数中
(代码如下):

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		screen();
		printf("请确认是否进行游戏:\n");
		scanf("%d", &input);
		if (input == 1)
		{
			printf("开始游戏\n");
			game();
		}
		else if (input == 2)
		{
			printf("退出游戏\n");
			break;   //这里我们已经猜对了,所以程序执行要结束了
		}
		else
			printf("输入错误,请重新输入\n");
	} while (input != 2);
	return 0;
}

这里面还有一个问题,就是时间戳要将它强制定义为int类型,因为我们生成的随机数时整型类型。大家不要忘了。

3.游戏执行函数

游戏执行时我们让系统辅助提示玩家输入数字,输入次数和是否猜大,猜小了或者是猜对了。而且这里也有一个问题就是时间戳要放到循环函数外,否则当你执行一次循环函数后随机数就会重新生成,这样我们永远也猜不到正确答案(作者也犯过 )

void game()
{
	int ret = rand() % 100 + 1;
	int guess = 0;//guess为玩家猜测的数字
	int count = 0;//玩家猜的次数
	while (1)
	{
		int guess = 0;			//guess中储存的是玩家猜测的数字
		printf("请输入猜测的数字:");
		scanf("%d", &guess);
		if (guess < ret)
		{
			count++;			//计数
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			count++;
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n猜错次数为:%d", count);
			break;    //若猜对了应打破循环
		}
		printf("剩余次数为%d", count);
	}

}

4.完整代码展示

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



void screen()
{
	printf("****************\n");
	printf("*****1.play*****\n");
	printf("*****2.end******\n");
	printf("****************\n");
}
void game()
{
	int ret = rand() % 100 + 1;
	int guess = 0;//guess为玩家猜测的数字
	int count = 0;//玩家猜的次数
	while (1)
	{
		int guess = 0;			//guess中储存的是玩家猜测的数字
		printf("请输入猜测的数字:");
		scanf("%d", &guess);
		if (guess < ret)
		{
			count++;			//计数
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			count++;
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n猜错次数为:%d", count);
			break;    //若猜对了应打破循环
		}
		printf("剩余次数为%d", count);
	}

}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		screen();
		printf("请确认是否进行游戏:\n");
		scanf("%d", &input);
		if (input == 1)
		{
			printf("开始游戏\n");
			game();
		}
		else if (input == 2)
		{
			printf("退出游戏\n");
			break;   //这里我们已经猜对了,所以程序执行要结束了
		}
		else
			printf("输入错误,请重新输入\n");
	} while (input != 2);
	return 0;
}

还请大佬们发现有错误,能够指出来,谢谢。
鞠躬

  • 38
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值