题目描述:程序运行后,玩家输入指令选择开始游戏(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;
}
知识扩展:
在帮助文档中可以看到调用rand()函数生成随机数前要调用srand()函数生成一个伪随机数。
srand()函数的参数类型是是无符号整型,通过阅读API文档,此处参数需要传入一个时刻变化着的值,自然想到将时间戳作为参数传入。
利用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;
}
运行示例:
博客如果存在问题欢迎指正 2023-7-23