猜数字游戏—【C语言实现】

目录

1. 列出游戏相关功能

     1.1 随机生成一个数字,让玩家猜

     1.2 三种可能的情况

     1.3 玩完一把,可以选择是否再玩一把,不用退出程序

2. 三种功能的思路解析

                2.1 功能一思路实现

     2.2 功能二 思路实现

     2.3 功能三 思路实现

3. 代码实现


1. 列出游戏相关功能

     1.1 随机生成一个数字,让玩家猜

     1.2 三种可能的情况

          1.2.1 猜大了,重新猜

          1.2.2 猜小了,重新猜

          1.2.3 猜对了,恭喜你,猜对了,结束游戏

     1.3 玩完一把,可以选择是否再玩一把,不用退出程序


2. 三种功能的思路解析

      2.1 功能一思路实现

要生成一个随机数,我们需要学习三个函数——rand(随机生成数字)、srand(初始化随机数——在调用rand之前)、time(返回时间戳)


rand函数:可以实现随机生成一个范围是 0 ~ RAND_MAX(32767)的数,RAND_MAX16 进制为(0x7fff)——>转为十进制数为32767


srand函数:如果给srand传递一个不变的值,这时rand随机生成的值就是不变的值,所以我们需要传一个变化的值给srand,我们发现计算机上的的时间是时刻变化的—使用time函数,返回时间戳

扩展:时间戳> 是指现在的时间减去1970年1月1日的时间,化成秒表示的数字大小,不考虑闰秒


time函数:在srand函数中调用time函数,返回时间戳,time的返回类型进行了多层包装,其实是long long (长长整型),srand需要的返回类型是unsigned int 类型,使用我们需要强转一下

注意点1:由于我们玩的那一把只需要生成一个随机数来玩,所以我们可以在主函数中调用随机生成数字部分的代码,因为主函数在程序运行时只会被调用一次,也就一把生成一个随机数,而且十分随机

注意点2:由于随机数的范围太大了,游戏体验感很差,我们可以在生成随机数后%100+1,生成的就是0~100的数字


     2.2 功能二 思路实现

猜数字部分我们可以想到用if—else语句来实现3种情况,还有使用while循环,判断条件部分恒为真,实现一直猜

     2.3 功能三 思路实现

使用do—while实现玩完一把,再玩一把


3. 代码实现

#define _CRT_SECURE_NO_WARNINGS 1

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

void menu()
{
	printf("***************************\n");
	printf("***** 1.play   0.exit *****\n");
	printf("***************************\n");
}

//void srand (unsigned int seed);
void game()
{
	RAND_MAX;
	//1. 生成随机数
	int ret = rand() % 100 + 1;//可以生成随机数,随机数的范围是:0~32767
	//0~99
	//2. 猜数字
	int guess = 0;

	while (1)//恒为真,直到猜对,结束本局游戏
	{
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

int main()
{
	//打印菜单
	//1. 玩游戏
	//0. 退出游戏
	int input = 0;
	srand((unsigned int)time(NULL));//要给srand传递一个变化的值,计算机上的时间是时刻发生变化的
	//time函数可以返回一个时间戳
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);//1 0 
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);

	return 0;
}

总结:


1. 这里实现的游戏目录可以简化我们玩游戏的选择种类,1(玩游戏)、0(退出游戏),后面实现通讯录、扫雷、三子棋等小游戏的时候也要用到

2. 学习了rand、srand、time等函数的功能,三个函数配合使用可以随机生成数字

猜你喜欢

转载自blog.csdn.net/qq_58286439/article/details/130477871