猜数字游戏(C语言实现-函数版)

目录

 

整体设计框架:

涉及到的头文件: 

菜单函数:

主函数:

游戏函数:

 代码实现:


 

整体设计框架:

1.创建一个菜单函数menu,负责原始界面的输出

2.创建一个游戏函数game,负责游戏逻辑的实现

3.在主函数中通过do-while语句和switch语句实现主界面的选择

涉及到的头文件: 

#include<stdio.h>
#include<time.h>//负责time函数
#include<stdlib.h>//负责srand与rand函数

菜单函数:

void menu()
{
    printf("   **********************\n");
    printf("   *******猜数游戏*******\n");
    printf("   *******【菜单】*******\n");
    printf("   ********请选择********\n");
    printf("   **1->【开始游戏】*****\n");
    printf("   **0->【结束游戏】*****\n");
    printf("   **********************\n");
}

主函数:

int main()
{
    srand((unsigned)time(NULL));
    int x;
    do
    {
        menu();
        scanf("%d",&x);
        switch(x)
        {
        case 1:
            game();
            break;
        case 0:
            printf("游戏结束");
            break;
        default:
            printf("输入有误,请重新输入\n");
        }
    } while(x);
 
    return 0;
}

  在这里先输出菜单,再输入变量x,只要x的值不为0,游戏就会被一直执行下去,同时会根据x的值进入不同的case。 

在主函数中 srand((unsigned)time(NULL))是用来产生随机数的,后续会详细介绍。

游戏函数:

void game()
{
    int min,max;
again:
    printf("请输入数字范围的最小值: \n");
    scanf("%d",&min);
    printf("请输入数字范围的最大值: \n");
    scanf("%d",&max);
    if(max<=min)
    {
        printf("输入有误,请重新输入范围\n");
        goto again;
    }
    int x,number=min+rand()%(max-min),count=5;
    printf("请猜一个数字: ");
    while(1)
    {
        scanf("%d",&x);
        if(x>min&&x<max)
            count--;
        if(count==0)
        {
            printf("很遗憾,次数已用完,挑战失败\n");
            break;
        }
        if(x>number&&x>min&&x<max)
            printf("猜大了,请再猜一次\n你还有%d次机会\n",count);
        else if(x<number&&x>min&&x<max)
            printf("猜小了,请再猜一次\n你还有%d次机会\n",count);
        else if(x>max||x<min)
            printf("输入的数据有误请重新输入\n");
        else
        {   printf("猜对啦,恭喜你挑战成功\n");
            break;
        }
    }
 
}

  在这里,设置了一个计数器,每输入一个在指定范围内的值时,计数器就会减一,当计数器为0时,会强制退出游戏。 

这里的rand()会每次产生一个随机数,再通过min+rand()%(max-min+1)这个表达式把随机数的范围限制在自己输入的范围内。

 

最终代码实现:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
 
void menu()
{
    printf("   **********************\n");
    printf("   *******猜数游戏*******\n");
    printf("   *******【菜单】*******\n");
    printf("   ********请选择********\n");
    printf("   **1->【开始游戏】*****\n");
    printf("   **0->【结束游戏】*****\n");
    printf("   **********************\n");
}
 
void game()
{
    int min,max;
again:
    printf("请输入数字范围的最小值: \n");
    scanf("%d",&min);
    printf("请输入数字范围的最大值: \n");
    scanf("%d",&max);
    if(max<=min)
    {
        printf("输入有误,请重新输入范围\n");
        goto again;
    }
    int x,number=min+rand()%(max-min),count=5;
    printf("请猜一个数字: ");
    while(1)
    {
        scanf("%d",&x);
        if(x>min&&x<max)
            count--;
        if(count==0)
        {
            printf("很遗憾,次数已用完,挑战失败\n");
            break;
        }
        if(x>number&&x>min&&x<max)
            printf("猜大了,请再猜一次\n你还有%d次机会\n",count);
        else if(x<number&&x>min&&x<max)
            printf("猜小了,请再猜一次\n你还有%d次机会\n",count);
        else if(x>max||x<min)
            printf("输入的数据有误请重新输入\n");
        else
        {   printf("猜对啦,恭喜你挑战成功\n");
            break;
        }
    }
 
}
 
int main()
{
    srand((unsigned)time(NULL));
    int x;
    do
    {
        menu();
        scanf("%d",&x);
        switch(x)
        {
        case 1:
            game();
            break;
        case 0:
            printf("游戏结束");
            break;
        default:
            printf("输入有误,请重新输入\n");
        }
    } while(x);
 
    return 0;
}

 

 

 

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Celia~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值