笔记-猜数字游戏的实现和随机数的使用-创新互联

主菜单函数:

目前创新互联公司已为上千多家的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、凤泉网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
#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)进行强制类型转换。

这就产生了如下代码:

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