制作一个小游戏,(猜数字)中的知识点。

#include<stdio.h>

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

void game()
{
	printf("*************************************\n");
	printf("**********  1.  play     ************\n");
	printf("**********  0.  exit     ************\n");
	printf("*************************************\n");
}
void come()
{
	int i = 0;
//生成一个随机数值。  生成随机数值的区间为0~Rand_Max之间。
//	 RAND_MAX;   值域为0~32767.
	//当我们模上一个一百,所得到的余数就是0~99之间
	//在此基础上我们+1就可以得到1~100之间的数字。
	//这里提到可以在rand()函数后定义随机生成的数字的范围。
	int ret = rand()%10000+1; //rand为生成随机数值的函数。
	//printf("%d\n", ret);
	//进入第二个阶段猜数字,
	while (1)
	{
		printf("请输入数字");
		scanf_s("%d", &i);
		if (i > ret)
			printf("抱歉,您猜大了\n");
		else if (i < ret)
			printf("抱歉,您猜小了\n");
		else
		{
			printf("恭喜您,猜对啦!\n");
			break;
		}
	}
}

//我们在设置一个变量或者指针的时候常常会初始化数值,
//例如int *p = NULL;  此时,这里的NULL就是空指针, 其本质上就是0;  在指针上使用NULL就是赋予指针变量一个地址编号为0的指针。
// int *a = 0;
int main()
{ 
	int input = 0;
	srand((unsigned int)time(NULL));  // 利用srand调用rand (),它会根据提供给srand ()的种子值返回一个随机数 (在0到RAND_MAX之间);
//又因为时间是一直在变的,我们给一个时间函数time,但是time的返回类型为time_t,我们利用强制转换,将time的返回类型改为unsigned int。
	//又因为我们不需要每次都设置一个新的起点,所以这个函数在头文件内部。  
	//这里又涉及一个时间戳的概念,
	do
	{
		game();
		printf("请选择是否进行游戏");
		scanf_s("%d", &input);
		switch (input)

		{
		case 1:
			come();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}

	} 
	while (input);
	return 0;
}

这个就是我们猜数字游戏的源代码,我们从主函数中进行讲解,我们首先要想到,当我们进入到一个游戏的界面时就要进行选择,当我们选择了以后才会进行游戏,这个时候我们就可以用到do..while循环的语句,先do,再进行循环while,

我们创立一个game函数,在主函数外定义一个game函数,打印出游戏的选择菜单,

如上图所示,然后我们执行完game函数以后,就会打印出“请选择是否进行游戏”然后通过输入函数输入数字进行选择,

那么进行选择我们就需要一个变量,我们设置input变量,初始化为0;然后我们通过switch语句进行判断,

那么我们判断的依据就是input输入的数字,我们在switch括号内输入input,我们设置选择1,当我们输入1的时候,设置一个函数为come,也就是我们游戏的本体,

如果输入为0,我们就退出游戏,如果不是1,也不是0,我们就打印选择错误重新进行选择,

然后我们就要看循环语句中的while,如果input中为真,也就是说输入的数字为0,判断为真,我们就不再执行这一段循环语句,直接退出游戏。

如果我们输入的函数为非“0”,也就是为假,那么我们就执行循环语句,当然我们这个非“0”,其实就是为了重新选择,和再玩一局而设置的。

接下来就是我们这个游戏的本体,当我们进入come函数内部的时候可以看到,我们需要一个随机数值来作为我们猜的数字,那么在C语言中定义一个随机数值的方法为使用rand函数,

那么可以看到我们的rand函数的定义,生成一个随机的数值 ,我们rand的返回类型呢可以看到是int整形,在此基础上呢,我们还需要一个头文件,就是#include <stdlib.h>当我们引入这个头文件以后就可以正常运行rand函数,我们可以从下方看到,我们的rand函数可生成的范围在          0~RAND_MAX“之间,那么RAND_MAX的值为多少呢?

在这里我们右键点击转到定义,可以看到RAND_MAX的值为十六进制的0x7fff,那么进入我们的计算机就可以算出, 

RNAD_MAX的值为32767,所以我们rand函数生成的数字为0~32767之间,

然后我们就需要定义rand 的范围,我们利用srand函数来定义rand的范围,利用srand调用rand (),它会根据提供给srand ()的种子值返回一个随机数 (在0到RAND_MAX之间);

我们又知道时间是一直在变的,我们设置一个时间函数time,

time函数可以获取系统的时间,在括号内我们可以看到(time_t *timer);可以看出我们的time函数是一个指针,当我们不需要括号内的指针时,可以给指针赋值为NULL,也就是设置一个空指针,又因为我们的time的函数返回值为time_t类型,我们又知道srand函数返回类型为unsigned int类型, 我们就将返回类型在括号内强制转换为unsigned int类型,就可以实现,在我们使用time函数的时候,就又需要一个头文件,为#include <time.h>。

当我们需要设置rand生成的函数随机范围,我们就可以在rand()后定义,假如我们设置1~100之间的数值,我们就可以模(%)一个100,得到的得数就在0~99之间,我们再加上一个1,就可以得到1~100之间的随机数字。

然后我们设置一个循环,使循环一直为真,就可以直接进入,而不需要判断,我们打印“请输入数字”,那么我们输入数字,就又需要一个变量,我们设置输入的数字变量 int i = 0;设置一个初始值,通过输入函数进行变量的赋值,然后我们就进行判断,如果我们输入的数值大于我们的ret中的随机值,就会输出,“抱歉,您猜大了”,如果小于我们的ret设置的随机值,就会输出“抱歉,您猜小了,”那么还有另外一种情况,我们就会输出,“恭喜您,猜对了”,然后退出我们的这个循环,这样就可以完美的实现我们的这个代码整体啦。

                                                                                                                —————爱C++的小白

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王的创意工坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值