猜数字游戏(详细解说)

首先,说一说我们对这个游戏的想法:

在猜数字过程中,我们首先需要一个游戏页面,再生成一个随机数,选择进入游戏后,我们便可以进行猜数字了,当我们猜完数字后,让它告诉我们猜大了还是猜小了,再进行小范围的猜数;当然,一直猜下去会变得没有意思,所以在猜后告诉我们还有几次机会,直至结束,告诉我们失败,并告诉我们被猜的数字。

既然是游戏,那我们肯定要有一个游戏进入的界面吧,我们称它为菜单

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

接下来,我来给大家说一说如何生成随机数吧:

在编程过程中使用函数必不可少,我们就用来调用rand函数实现随机数的实现,其所需头文件为stdlib.h

srand((unsigned int)time(NULL));

这个是随机数生成的代码

括号里的基准值变化则随机值会变化,而rand函数生成伪随机数,若直接使用srand函数的话,它会默认种子为1,则每次输出的数字是固定的。

种子在c语言中是一个特定的数字序列,可通过srand函数将种子播种,这样每次调用rand函数时,它都会生成不同的随机数

time的作用就是获取当前系统时间,返还一个time_t的类型,也可以说是一个比较大的整数,time.t类型本质上其实就是32位或者64位的的整数类型;time也是一个函数,需要头文件time.h;bunsigned int 是强制定义后面的为无符号整数,括号中的NULL指无类型指针,并且值为0的随机数,time(NULL)就会返回时间的差值,time函数返回的这个时间差也被叫做时间戳。

生成a到b的随机值,则a+rand()%(b-a+1),而我们需要生成1到100的随机数,则输入:

int ret = rand() % 100 + 1;

接下来,我们开始猜数过程:

既然要猜好几次,我们便开始用while循环;但while循环跳出的条件我们并没有,因此,我们定义一个整数count为5,每次循环count都减去1,直至count==0,跳出循环

在while循环中,我们使用if语句时,会没有条件,所以我们在这之前定义整数int guess=0,让guess与count比较后进行输出

	int count = 5;
	while (count)
	{
		printf("你有 %d 次机会\n", count);
		printf("请输入要猜的数字");
		scanf("%d", & guess);
		if (guess < ret)
		{
			printf("猜小了");
		}
		else if (guess > ret)
		{
			printf("猜大了");
		}
		else
		{
			printf("恭喜你,猜对了,数字是:%d\n", ret);
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("5次机会已使用完,挑战失败,随机数为%d\n",ret);
	}
}

当我们在猜数字的过程中猜对了,在这个else语句中放break语句直接退出循环

接下来,我们来讲述每个程序中有且只有1个的main()函数的内容:

我们的游戏中显示主页面后,要选择进行游戏还是退出游戏

当我们选1时进入游戏,选0时退出游戏界面,则用switch语句:专门处理分支结构的条件选择语句

		scanf("%d ", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏");
			break;
		default:
			printf("选择错误,重新选择");
			break;
		}

当然,我们先要定义input,并用do while语句执行上面switch语句,直至input=0

下面,让我们看看猜游戏的所有代码吧:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("*****************\n");
	printf("****  1.play  ***\n");
	printf("****  0.exit  ***\n");
	printf("*****************\n");
}
void game()
{
	int guess=0;
	//1.生成随机数
	int ret = rand() % 100 + 1;
	//2.猜数字
	//printf("%d", ret);
	int count = 5;
	while (count)
	{
		printf("你有 %d 次机会\n", count);
		printf("请输入要猜的数字");
		scanf("%d", & guess);
		if (guess < ret)
		{
			printf("猜小了");
		}
		else if (guess > ret)
		{
			printf("猜大了");
		}
		else
		{
			printf("恭喜你,猜对了,数字是:%d\n", ret);
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("5次机会已使用完,挑战失败,随机数为%d\n",ret);
	}
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:");
		scanf("%d ", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏");
			break;
		default:
			printf("选择错误,重新选择");
			break;
		}
	} 
      while (input);
		return 0;
}

当我们选开始游戏时,点击1,点Enter,若没有反应,点击Ctrl+z强制返回即可

现在,看看我们执行的结果:

*****************
****  1.play  ***
****  0.exit  ***
*****************
请选择:1
^Z
你有 5 次机会
请输入要猜的数字50
猜大了你有 4 次机会
请输入要猜的数字25
猜小了你有 3 次机会
请输入要猜的数字37
猜大了你有 2 次机会
请输入要猜的数字31
猜大了你有 1 次机会
请输入要猜的数字27
猜大了5次机会已使用完,挑战失败,随机数为26
*****************
****  1.play  ***
****  0.exit  ***
*****************
请选择:

如果想结束,输出0即可

*****************
****  1.play  ***
****  0.exit  ***
*****************
请选择:0
^Z
退出游戏

  • 28
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Activity 是 Android 应用程序的基本组成部分之一,它负责展示用户界面和处理与用户的交互。Activity 可以看作是一个具有生命周期的窗口,它可以接收来自系统或用户的事件并作出响应。 Activity 的主要作用是管理用户界面和应用程序状态,它可以通过 setContentView() 方法加载布局文件并显示用户界面,同时也可以实现用户与应用程序之间的通信和数据交互。例如,当用户点击按钮或输入文本时,Activity 可以响应这些事件并执行相应的操作。 Activity 还可以通过 Intent 启动其他 Activity,实现多个界面的切换和交互。在启动另一个 Activity 时,当前 Activity 可以传递一些数据给被启动的 Activity,也可以接收被启动的 Activity 返回的数据。 Activity 生命周期包括以下几个阶段: 1. onCreate():在 Activity 创建时被调用,用于初始化界面和数据。 2. onStart():在 Activity 可见但没有获取焦点时被调用,用于执行一些初始化操作。 3. onResume():在 Activity 可见并获取焦点时被调用,用于开始执行程序逻辑。 4. onPause():在 Activity 失去焦点但仍可见时被调用,用于释放资源和保存数据。 5. onStop():在 Activity 不再可见时被调用,用于释放资源和保存数据。 6. onDestroy():在 Activity 被销毁时被调用,用于释放资源和清理数据。 Activity 生命周期中的每个阶段都提供了一些回调方法,可以在这些方法中执行一些操作,例如初始化界面、加载数据、保存状态等。 总的来说,Activity 是 Android 应用程序的基本组成部分之一,它负责展示用户界面和处理与用户的交互,通过生命周期管理应用程序状态,实现多个界面的切换和交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值