使用C语言,编写猜数字小游戏(使用时间戳)

C语言学习日志

猜数字小游戏:
    本文使用的猜数字小游戏主要运用了srand()函数基于系统时间生成随机数的原理;
    -----------------------------------------------------------------------------------------------------------
    

 1.首先讲解一下时间戳的概念

  (1)什么是时间戳?

        百度百科给出的解释为:
        时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 。 [百度百科-时间戳]
        其实可以粗略的理解为就是某一刻的时间。


  (2)时间戳起到什么作用?

    时间戳的主要功能就是记录时间,保证数据的客观性,真实性,应用于电子数据长期归档,保存,验证。

    本文起到的作用是运用时间戳产生不同随机数,

 2. 关于C语言中产生随机数的相关函数及本文引用时间戳的相关思路

(1)rand()函数

        C语言中用于产生一个随机数的函数。

        C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。

        RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。

        RAND_MAX位于 的标准库中,在其中定义了0x7fff,即对应的十进制为32767。

        需注意:该函数每次产生的随机数是相同的。

	int ret = 0;
	ret = rand();

(2)srand()函数

        C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。

        参数 seed -- 是一个整型值,用于伪随机数生成算法播种。

        需注意:该函数 在使用时,参数seed需要一个随机数才能使得srand()函数产生随机数,若seed参数唯一,则产生的随机数为固定值。所以用【srand(1);】多次产生随机数是不可行的。

srand(1);

(3)引入时间戳概念

        因rand()函数和srand()函数产生随机数的限制,我们引入时间戳,也就是本文的核心概念。

        这里需要用到,在中存在一个变量time_t。

time_t 这是一个适合存储日历时间类型。

我们可以在vs中写出time_t将其转到定义,可以看到time_t实际是对_time32_t 的重命名

使用C语言,编写猜数字小游戏(使用时间戳)_第1张图片

我们进一步将_time32_t 转到定义发现其实time_t本质上是一个长整型

然后我们返回到srand()函数,其有一个格式为void srand(unsigned int seed) ,因此我们仅需将long长整型强制转换为无符号整型即可。

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

3.实现代码:

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 

int menu()
{
	printf("**************************************\n");
	printf("****Welcome to the Numbers Puzzle*****\n");
	printf("***********1.play     0.exit**********\n");
	printf("--------------------------------------\n");
	printf("*******游戏途中退出,请输入101*******\n");
	printf("**************************************\n");
	return 0;
}

void game()
{
	//当前计算机的时间-计算机的起始时间(1970.1.1.0:0:0)=(?)秒
	int ret = 0;
	ret = rand() % 100 + 1;//生成1-100随机数

	while (1)
	{
		int guess;
		printf("请给出您所猜的数字:>");
		scanf("%d", &guess);
		printf("--------------------------------------\n");
		if (guess == 101)
		{
			break;
		}
		else if (guess > 101)
		{
			printf("请输入1-100之间的数字\n");
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你猜对啦!\n");
			break;
		}
	}
}
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("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);
	return 0;
}

你可能感兴趣的:(c语言,开发语言,游戏)