(C语言小项目)猜字游戏(正式版)

#include <stdio.h>
//使用time函数
#include <time.h>
//使用system函数,rand函数,srand函数
#include <stdlib.h>
//清屏操作
void clear_screen(){
    //判断是否为Windows系统
    #ifdef _WIN32
        system("cls");
    //其他系统
    #else
        system("clear");
    #endif
}
//初始页面
void page0(){
        printf("****************************************\n");
        printf("********1.开始游戏    2.退出游戏********\n");
        printf("********3.游戏难度    4.神秘力量********\n");
        printf("****************************************\n");
}
//模块一
int page1(int *a_0,int *a_1){
    int random=0;
    //初始化种子,防止随机数重复
    srand((unsigned int)time(NULL));
    switch (*a_0)
    {
    case 1:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%5+1;
        printf("小宝宝你好~(随机数范围1-5)\n");
        break;
    case 2:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%20+1;
        printf("当前难度:简单(随机数范围1-20)\n");
        break;
    case 3:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%50+1;
        printf("当前难度:普通(随机数范围1-50)\n");
        break;
    case 4:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%100+1;
        printf("当前难度:困难(随机数范围1-100)\n");
        break;
    case 5:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%150+1;
        printf("当前难度:地狱(随机数范围1-150)\n");
        break;
    case 6:
        //初始化种子,防止随机数重复
        srand((unsigned int)time(NULL));
        //定义随机数
        random=rand()%500+1;
        printf("666,这个人是挂(随机数范围1-500)");
        break;
    }
    //开启作弊后才能执行
    if(*a_1==100){
        printf("(作弊提醒!!!)本次要猜的数是%d\n",random);
    }
    printf("请输入你的数字\n");
    int b=0;
    int c=0;
    //do while条件循环,在用户猜对之前一直循环
    do{
        int a=0;
        if (scanf("%d",&a)!=1){
            printf("不是有效数字!!\n");
            return 1;
        }
        if(a==random){
            printf("恭喜你猜对了!!!");
            b=1;
        }else if(a>random){
            clear_screen();
            printf("猜大了,小一点试试捏~请重新输入\n");
        }else {
            clear_screen();
            printf("猜小了,大一点试试捏~请重新输入\n");
        }
        c++;
    }while(b!=1);
    printf("该随机数是%d,一共猜了%d次呦~\n",random,c);
    return 0;
}
//模块三
int page3(int *a_0){
    int a=0;
    s1:
    //打印初始菜单
    printf("当前模式为:选项%d(选项对应难度)\n",*a_0);
    printf("  ********1.宝宝模式********\n");
    printf("  ********2.简单模式********\n");
    printf("  ********3.普通模式********\n");
    printf("  ********4.困难模式********\n");
    printf("  ********5.地狱模式********\n");
    printf("********6.折磨自己模式********\n");
    printf("请选择模式1 2 3 4 5 6:\n");
    if (scanf("%d",&*a_0)!=1 && *a_0<1 &&*a_0>6){
        printf("不是有效数字!!\n");
        return 1;
    }
    //模式切换
    switch (*a_0)
    {
    case 1:
        clear_screen();
        printf("不是~哥们~,这宝宝模式,你也选?????(按1继续,按0退出)\n");
        if (scanf("%d",&a)!=1 && a<1 &&a>2){
            printf("不是有效数字!!\n");
            return 1;
        }if(a==1){
            printf("好吧,给你选就是了\n");
            break;
        }if(a==0){
            clear_screen();
            goto s1;
        }
    case 2:
        clear_screen();
        printf("切换成功,当前为简单模式\n");
        break;
    case 3:
        clear_screen();
        printf("切换成功,当前为普通模式\n");
        break;
    case 4:
        clear_screen();
        printf("切换成功,当前为困难模式\n");
        break;
    case 5:
        clear_screen();
        printf("切换成功,当前为地狱模式\n");
        break;
    case 6:
        clear_screen();
        printf("我嘞个豆,哥们真是吃饱了撑得,满足你!!!(按1继续,按0退出)\n");
        if (scanf("%d",&a)!=1 && a<1 &&a>2){
            printf("不是有效数字!!\n");
            return 1;
        }if(a==1){
            printf("行,你是个人物!\n");
            break;
        }if(a==0){
            clear_screen();
            goto s1;
        }
    
    default:
        clear_screen();
        printf("输入有误!请选择模式1 2 3 4 5 6\n");
        break;
    }
    //全局变量
    return *a_0;
}
//模块四
int page4(){
    printf("这是来自东方的神秘力量(按1继续)\n");
    //定义初始化判断条件
    int a=0;
    if (scanf("%d",&a)!=1 && a<1 &&a>2){
        printf("不是有效数字!!\n");
        return 1;
    }
    //开始判断用户输入的是0,还是1
    if(a==1){
        a=0;
        clear_screen();
        printf("好吧,不装了,就是作弊模式(按1继续,按0退出)\n");
        if (scanf("%d",&a)!=1 && a<1 &&a>2){
            printf("不是有效数字!!\n");
            return 1;
        }
        if(a==1){
            a=0;
            clear_screen();
            printf("你确定要开作弊模式吗?(按1继续,按0退出)\n");
            if (scanf("%d",&a)!=1 && a<1 &&a>2){
                printf("不是有效数字!!\n");
                return 1;
            }
            if(a==1){
                a=0;
                clear_screen();
                printf("行,给你开就是了\n");
                return 2;
            }else{
                clear_screen();
                printf("嘿嘿,不作弊才是好孩子\n");
                return 0;
            }
        }else{
            clear_screen();
            printf("嘿嘿,不作弊才是好孩子\n");
            return 0;
        }
    }else{
        clear_screen();
        printf("嘿嘿,不作弊才是好孩子\n");
        return 0;
    }
    return 0;
}
//主函数
int main(){
    //定义全局变量a_0(游戏难度调整条件)
    int a_0=3;
    //定义全局变量a_1(作弊模式判断条件)
    int a_1=200;
    start:
    page0();
    printf("请选择模式1 2 3 4:\n");
    int a=0;
    if (scanf("%d",&a)!=1 && a<1 &&a>4){
        printf("不是有效数字!!\n");
        return 1;
    }
    //switch条件选择模块
    switch(a){
        //模块一
        case 1:{
            clear_screen();
            int x=page1(&a_0,&a_1);
            if(x==0){
                printf("游戏结束!欢迎下次再玩~");
                return 0;
            }else{
                printf("输入错误!");
                return 1;
            }
            break;
        }
        //模块二
        case 2:
            printf("拜拜~,下次见喽~\n");
            break;
        //模块三
        case 3:{
            clear_screen();
            page3(&a_0);
            int x=page1(&a_0,&a_1);
            if(x==0){
                printf("游戏结束!欢迎下次再玩~");
                return 0;
            }else{
                printf("输入错误!");
                return 1;
            }
            break;
        }
        //模块四
        case 4:{
            clear_screen();
            int y=page4();
            //判断是否开启作弊模式
            if(y==2){
                printf("作弊模式已开启,游戏开始时会显示要猜的数\n");
                a_1=100;
                goto start;
            }
            if(y==0){
                goto start;
            }
            break;
        }
        default:
            printf("输入有误!请选择模式1 2 3 4\n");
            break;
    }
}

咱们的小项目终于是写完了,因为个人原因,更新比较慢忘谅解!!!!!

下面介绍一下,本次更新内容:

更新模块四,支持开启作弊模式

优化完善部分代码,实行4个模块的联动(模块二:真的吗?我们四个真厉害!!)

新增全局变量a_1实现是否为作弊模式的检测

新增goto函数(正常情况下不推荐使用)实现代码再运用

优化视觉效果,实现用户自己选择继续还是退出(怎么有种RPG游戏的感觉)

下面是部分运行结果:

切换成功,当前为地狱模式
当前难度:地狱(随机数范围1-150)
(作弊提醒!!!)本次要猜的数是124
请输入你的数字
124
恭喜你猜对了!!!该随机数是124,一共猜了1次呦~
游戏结束!欢迎下次再玩~
请按任意键继续. . .
不是~哥们~,这宝宝模式,你也选?????(按1继续,按0退出)
1
好吧,给你选就是了
小宝宝你好~(随机数范围1-5)
请输入你的数字
行,给你开就是了
作弊模式已开启,游戏开始时会显示要猜的数
****************************************
********1.开始游戏    2.退出游戏********
********3.游戏难度    4.神秘力量********
****************************************
请选择模式1 2 3 4:

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值