笔记-猜数字游戏的实现和随机数的使用-创新互联
主菜单函数:
目前创新互联公司已为上千多家的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、凤泉网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。#include#include#includevoid menu() //主菜单显示
{
printf("********************\n");
printf("****** 1.play ****\n");
printf("****** 0.exit ****\n");
printf("********************\n");
}
游戏规则函数:
程序产生随机数,玩家输入数据后判断大小,一直猜到正确为止。
void game()
{
int random_num = rand() % 100 + 1;
int input;
while(1)
{
printf("猜猜看~\n");
scanf("%d",&input);
if(input< random_num)
{
printf("小了一点,往大了猜\n");
}
else if(input >random_num)
{
printf("接近了,有点大\n");
}
else
{
printf("聪明,猜对了!!!\n");
break;
}
}
}
主函数:
int main()
{
int input;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d",&input);
if(input == 1)
{
game();
}
else if(input == 0)
{
break;
}
else printf("没有此选项,请重新输入!\n");
}while(input);
return 0;
}
1.首先介绍一下rand()随机函数:
rand()函数会返回一个0~32767之间的随机数,头文件为#include
若直接使用rand(),执行程序发现,重新执行程序和前一次的结果相同
即
#include#includeint main()
{
int a = rand();
int b = rand();
int c = rand();
printf("%d\n%d\n%d\n",a,b,c);
return 0;
}
不管执行几次程序,得到的都是一个结果:
所以我们要使用srand函数,设置一个随机数种子。
srand函数的参数为unsigned int类型,无返回类型。
起初,我们将种子设置为整形常量 --(srand(1)),此时随机数不会变。这是因为相同的种子会产生相同的随机数。
那如何产生足够随机的随机数呢?游戏中引用了时间戳的定义。
【时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,其每时每刻都在发生变化。】
所以将时间戳作为种子可以确保随机数的随机性。
time(NULL)用来获取系统的时间戳,其头文件为#include
这就产生了如下代码:
srand((unsigned int)time(NULL));
2.采用do-while循环语句:无论怎样,先执行一次循环体,即先显示主菜单,直到玩家按下'0'退出游戏。
*注意事项:如果每次生成随机数都调用一次srand函数,并且几次调用的时间间隔较短时产生的随机数大小几乎相同,甚至相等,使随机数不够随机,所以整个程序只需调用一次srand函数即可。这就是为什么srand函数被main函数调用,而不是放在game函数中。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享名称:笔记-猜数字游戏的实现和随机数的使用-创新互联
当前URL:http://azwzsj.com/article/csdpoo.html