小游戏制作——猜数字

前言

相信大家在初学C语言时都制作过一个小游戏-猜数字,只不过当时能力有限导致游戏功能较为简单,今天让我们来看一下它的进阶版本。

首先规划一下我们的猜数字游戏

(1)首先程序随机生成一个 0-9999 的数。 (2)玩家每次输入一个 4 位数,程序告诉玩家两个信息: 用户输入的数,在个、十、百、千 4 个数字中,有几个数字是谜底里面有的,且出现在 正确的位置上; 用户输入的数,在个、十、百、千 4 个数字中,有几个数字是谜底里面有的,但未出现 在正确的位置上。 例如,谜底为“1234”,用户输入“8243”,则程序告诉用户“1 2”,意即用户的输入中, 有 1 个数字猜对了,且位置也对,另外有两个数字猜对了,但是位置不对。 (3)如果用户在规定的次数内猜出谜底,则胜出,否则游戏失败。 进阶要求:

(1)提供菜单选项,设置用户的猜测次数。如果用户未选择此项,则程序应提供默认值。 (2)提供菜单选项,让用户进入游戏。玩得好的玩家记录应保存,并存入硬盘上的文件。 (3)提供菜单选项,查询玩家记录的前五名。

一、代码思路:

1.游戏菜单:

首先我们写个游戏菜单:

  • 选择菜单操作放在主函数中

  • 菜单简洁明了,想玩可以一直玩

void menu()
{
        printf("---1.进入游戏---\n");
        printf("---2.输入次数---\n");
        printf("---3.查询前五---\n");
        printf("----0.退出-----\n");
}

2.主函数:

通过do while嵌套switch对游戏菜单进行控制:

  • 玩游戏输入1:进入case1开始游戏

  • 游戏次数输入2:进入case2设定游戏次数

  • 查询历史成绩输入3:进入case3打印历史成绩

  • 退出输入4:进入case4退出游戏

  • 输入错误:进入default,进入下一次循环重新输入

switch (choose) {
            case 1:
                ~~~~~~~
                break;
            case 2:
                printf("请输入游戏次数:");
                scanf("%d", &times);
                if (times == 32) {
                    times = 3;
                }
                break;
            case 3:
                ReadTextFile(player);
                break;
            case 0:
                printf("Exit!\n");
                break;
            default:
                printf("Error\n");
        }
    } while (choose);
    return 0;
}

3.游戏函数:

首先通过rand函数生成一个随机数

不会生成随机数看这篇:C语言生成随机数的方法

玩家输入猜的数字:

  • 猜错了一直猜直到次数耗尽

  • 猜对猜错给出提示

  • 猜对了退出循环

由于需要根据位数生成提示,所以可以在生成随机数时就用数组来装

int radom_num(int a[]){
    srand((unsigned int)time(NULL));
    for (int i = 0; i < T; ++i) {
        a[i]=rand() % 9 + 0;
    }
}

提示生成函数

int produce(int b[],int c[]){
    int f[6]={0,1,2,3,4,5};
    for (int i = 0; i < T; ++i) {
        for (int j = 0; j < T; ++j) {
            if(b[i]==c[j]&&f[j]!=10){
                f[j]=10;
                if(i==j){
                    all_right_num+=1;
                }
                else{
                    right_position_num+=1;
                }
                break;
            }
        }
    }
}
int Read

结尾:

以上就是今天讲的C语言猜数字游戏实现的基本思路,关于如何实现进阶目标将在下一文章详述,主要运用到了随机数的生成方法,希望对刚阅读本篇博客的你有所帮助,喜欢就点赞关注一波吧!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值