题目描述:程序运行后,玩家输入指令选择开始游戏(play)或者退出游戏(exit),选择开始游戏则根据游戏提示输入所猜数字,程序生成1~100随机数字,并根据玩家所猜数字给出提示信息,如果玩家所猜数字小于程序生成的随机数,则给出提示“猜小了”,反之给出提示“猜大了”,让玩家继续猜数,程序再给出提示,直至玩家猜出正确数字为止,显示“恭喜你,猜对了!",玩家可选择继续游戏或者退出游戏。

1.menu()函数在屏幕上显示游戏菜单页

//在屏幕上显示游戏菜单
void menu()
{
	printf("****************************************\n");
	printf("****************************************\n");
	printf("***************猜数字游戏****************\n");
	printf("*****************请选择*****************\n");
	printf("****************************************\n");
	printf("*****************1.PLAY*****************\n");
	printf("*****************2.EXIT*****************\n");
	printf("****************************************\n");
	printf("****************************************\n");

}

2.play()函数实现猜数字游戏主体

     利用模运算对rand()函数生成的随机数限定范围,%100使随机数范围处于0~99,再加1,使生成随机数范围为1~100。

void play()
{
	int res = rand()%100+1;//利用rand()函数生成随机数,并规定随机数范围
	while (1)
	{
		printf("请输入:\n");
		int num = 0;
		scanf("%d", &num);
		if (res < num)
			printf("猜大了,再试一次!\n");
		else if (res > num)
			printf("猜小了,再试一次!\n");
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
	}
}

3.main()函数实现整体逻辑

       利用循环结构实现程序整体逻辑结构,利用switch()语句根据输入指令进行相应操作。

int main()
{
	int order = 0;
	srand((unsigned int)time(NULL));
	do
	{   
		menu();
		scanf("%d", &order);
		switch (order)
		{
		case 1:
				play();
				break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("请输入有效指令!\n");
			break;
		}
	} while (order == 1);
	return 0;
}

知识扩展:

猜数字游戏(c语言)_随机数

在帮助文档中可以看到调用rand()函数生成随机数前要调用srand()函数生成一个伪随机数。

猜数字游戏(c语言)_猜数字游戏_02

srand()函数的参数类型是是无符号整型,通过阅读API文档,此处参数需要传入一个时刻变化着的值,自然想到将时间戳作为参数传入。

猜数字游戏(c语言)_随机数_03

利用time()函数获取系统时间,其参数是一个指针变量,给出获取时间戳后存放的地址,在本例中我们不需要存储,可将time()函数的参数传入一个NULL即可,在通过强制类型转换将其转换为无符号整型数据作为参数传入srand()函数中做参数,产生随机数。


完整代码:

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

void menu()
{
	printf("****************************************\n");
	printf("****************************************\n");
	printf("***************猜数字游戏***************\n");
	printf("*****************请选择*****************\n");
	printf("****************************************\n");
	printf("*****************1.PLAY*****************\n");
	printf("*****************2.EXIT*****************\n");
	printf("****************************************\n");
	printf("****************************************\n");

}
void play()
{
	int res = rand()%100+1;
	while (1)
	{
		printf("请输入:\n");
		int num = 0;
		scanf("%d", &num);
		if (res < num)
			printf("猜大了,再试一次!\n");
		else if (res > num)
			printf("猜小了,再试一次!\n");
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
	}
}
int main()
{
	int order = 0;
	srand((unsigned int)time(NULL));
	do
	{   
		menu();
		scanf("%d", &order);

		switch (order)
		{
		case 1:
				play();
				break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("请输入有效指令!\n");
			break;

		}

	} while (order == 1);
	return 0;
}

运行示例:

猜数字游戏(c语言)_程序生成_04





   博客如果存在问题欢迎指正        2023-7-23