设计一个猜数字游戏

发布时间:2024年01月14日

设想游戏的基本构架

  • 有简单的游戏菜单-设置随机数的范围-用户输入-根据数字提示? ?

相关新知识


1.如何生成随机数?

利用rand 函数,使用条件是加入头文件#include<stdlib.h>

在cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/中可以得知虽然一次运行中得到了不同的随机值,但是在多次运行中得到的随机值都一样,因为它产生的事伪随机数,以“种子”的基准值生成的,且每次运行时种子的默认值为1。

所以如何让种子变化才是问题,所以这时候需要用srand 函数,来初始化随机数

2.srand 函数

原型为 ?void srand (unsigned int ?seed);

但是srand 的种子是随机的,rand 就能生成随机数,反之 ,想要rand 随机生成,必须要srand 是随机数,也就是生成随机数需要一个随机数就矛盾了。这时候就需要一个时时刻刻都在变化的数-time 函数

3.time 函数

原型为time_t time (time_t* timer);

使用需要加入头文件#include<time.h>

(它返回的差是时间戳)它返回的类型是time_t类型的,time_t 类型本质上其实就是32位或者64位的整型类型。

time 函数的参数如果不是NULL,函数也会将这个返回的差值放在timer指向的内存中。
如果 timer 是NULL,就只返回这个时间的差值。

3.缩小随机数的范围

可知它的范围为0--32767,接下来应该缩小范围,把它变为1--100,可以采用取余的方式,取余后为0--99,则再加上1就可以,若想要100-200,可以对101取余再加100,由此可得,生成a--b的随机数,应采用a+rand()%(b-a+1)。

代码:


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

void game()
{
	int m = rand() % 100 + 1;
	int guess = 0;
	
	while (1)
	{
		printf("请输入你猜的数字:\n");
		scanf("%d", &guess);
		if (m < guess)
			printf("猜大了\n");
		else if (m > guess)
			printf("猜小了\n");
		else
		{
			printf("恭喜你猜对了!\n");
			break;
		}
	}
}
void menu()
{
	printf("*************************\n");
	printf("********1.PLAY***********\n");
	printf("********0.EXIT***********\n");
	printf("*************************\n");
}


int main()
{
	int n = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择:\n");
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (n);
		return 0;
}	

今天也是加油的一天啦,有不好的地方请见谅!

文章来源:https://blog.csdn.net/2301_80042545/article/details/135573998
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。