`//猜数字小游戏(数字范围为0-100)
//游戏思路
/*
1、游戏界面函数(功能1开始游戏,功能2退出游戏)
2、开始游戏函数(大于或者小于被猜数字输出提示,用户继续输入,直至猜中为止)
3、退出游戏
*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//打印菜单
int menu()
{
printf("*********************\n");
printf("1、开始游戏\n");
printf("2、退出游戏\n");
printf("*********************\n");
return 0;
}
//开始游戏
int start_game(int target)
{
while (1)
{
printf("请输入您的猜的数字:");
int to_guess = 0;
scanf("%d", &to_guess);
if (to_guess < target)
{
printf("您猜的数字小了\n");
}
else if (to_guess > target)
{
printf("您猜的数字大了!\n");
}
else
{
printf("猜中了!\n");
break;
}
}
return 0;
}
int main()
{
srand((unsigned int)time(0));
menu();
printf("请输入你的选择(1、开始游戏 2、退出游戏):");
int choice = 0;
scanf("%d",&choice);
int target = rand() % 100 + 1;
while (1)
{
if (choice == 1)
{
start_game(target);
break;
}
else if (choice == 2)
{
printf("Game Over!\n");
break;
}
else
{
printf("您的输入有误,请重新输入:");
}
scanf("%d", &choice);
}
system("pause");
return 0;
}
//这是一个猜数字的小游戏,代码并不难理解,只是有一点我需要给大家解释一下就是关于代码中的随机数函数。 rand()函数它产生的是一个随机数序列,假如你第一次运行之后,答案是45,那么当你第二次输入的时候输入45,就直接猜中了,原因就是rand()函数它产生的是一个固定的随机数序列,那么如何来解决这一漏洞呢?大家可以想想什么东西是一直变化的,毋庸置疑,当然我们最容易想到的就是时间了。所以我加入了srand()函数 ,srand()函数产生一个随机种子,time(0)是一个返回当前时间的时间戳,时间戳就是以1970年1月1日为基准,与此时此刻的一个时间差。时间时时刻刻在变,那么我们产生的随机数序列也就在变化,那么这一漏洞就解决了。运行结果如下试图所示。