欢迎光临散文网 会员登陆 & 注册

自制小黑屋系列(源代码)

2023-08-29 17:46 作者:ps一览  | 我要投稿

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


//应在增加Sleep等待代码,在每回合结束之后,可以有效防止随机函数应为安的太快一直出现一个值(因为用了时间种子)


//#define shiyan 2;   宏定义不能进行自增自建

//shiyan++;


int cai;//田地里是否存在蔬菜的判定

int cai1 = 0;//蔬菜属性升级变量

int tili = 3;

int sj;//cai di sheng ji


int suiji()

{

    int a, b;

    srand((unsigned)time(NULL));

        a = rand();

        a = rand();

        a = rand();

        a = rand();

        a = rand() % 3 + 1;

        /* printf("%d\n", a);*/

        return a;

}

//生成随机数的子函数


int suijicai()

{

    int a, b;

    srand((unsigned)time(NULL));

    /*for (int c = 0; c <= 19; c++)

    {*/

        a = rand();

        a = rand();

        a = rand();

        a = rand();

        a = rand() % 5 + 1;

        /* printf("%d\n", a);*/

        return a;

   /* }*/

}


int main() 

{

    int x;//决策方案

   

    int q, q1, q2;//随机数所使用的代体

    int food=10, water=10, wood=0,health=25;

    printf("你被人扔进荒岛,他告诉你会在两年后的某一天来看你,你开始了你的求生之路 ");

    printf("\n");

    printf("\n");

    //printf("                                                                                                         食物:%d\n", food);

    //printf("                                                                                                         水  :%d\n", water);

    //printf("                                                                                                         木材:%d\n", wood);

    //printf("                                                                                                         健康:%d\n", health);


    for (int t1 = 1; t1 <= 25; t1++)

    {

        printf("                                                        |第%d个月|\n",t1);

        printf("\n");

        printf("\n");

        cai1 = suijicai();//菜地每个月有五分之一的几率损坏

        if (cai1 == 1)

        {

            printf("*你的菜地损坏了,请及时修缮*\n");

            printf("\n");

        }


        if (t1 == 10)

        {

            printf("你有一次升级体力的机会,是否花费15木头进行升级(仅此一次)\n");

            printf("1:同意   2:拒绝\n");

            scanf_s("请输入:%d", &sj);

            if (sj == 1)

            {

                tili = 4;

                printf("升级完成\n");

            }

            else printf("已拒绝\n");

        }

        else;


        for (int t =tili; t >= 1; t--)//回合数用可循环数来代替

        {

            printf(" 1:狩猎  2:种田  3:打水  4:伐木\n");

            printf("\n");

            printf("\n");

            printf("                                                                                                         食物:%d\n", food);

            printf("                                                                                                         水  :%d\n", water);

            printf("                                                                                                         木材:%d\n", wood);

            printf("                                                                                                         健康:%d\n", health);

            printf("\n");

            printf("\n");

            printf("当前总体力:%d\n",tili);

            scanf_s("%d", &x);

            switch (x)

            {


            case 1:

            {

                printf("你进行了狩猎\n");

                switch (q = suiji())

                {

                case 1:

                {

                    printf("你遇到了一只小狼,展开了战斗\n");

                    switch (q = suiji())

                    {

                    case 1: 

                    {

                        printf("你尽管受了一些小伤,但最终你是胜利者\n"); 

                        food += 2; water += 1; health -= 2;

                        printf("食物+1,水+1,健康-2\n");

                        break;

                    }

                    default: 

                    {

                       printf("进行了有惊无险的战斗,最终你是胜利者\n");

                       food += 2; water += 1; health -= 1;

                       printf("食物+1,水+1,健康-1\n");

                    }

                    }

                    break;

                }


                case 2: 

                {

                    printf("你遇到了一只小坤,你的嘴角留下了不争气的泪水\n");

                    food += 3; water += 2;

                    printf("食物+2,水+2\n");

                    break;

                }


                case 3:

                {

                    printf("你遇到了一只老狼,展开了战斗\n");

                    switch (q = suiji())

                    {

                    case 1:

                    {

                        printf("看到老狼身旁遍地的鲜血,你放下了紧绷的神情,最终你是胜利者\n");

                        food += 5; water += 2; health -= 5;

                        printf("食物+5,水+2,健康-5\n");

                        break;

                    }

                    default:

                    {

                        printf("经过激烈的战斗,最终你是胜利者\n");

                        food += 5; water += 2; health -= 2;

                        printf("食物+5,水+2,健康-2\n");

                    }

                    }

          

                }

                }

               

                /*printf("\n");

                printf("\n");

                printf("                                                                                                         食物:%d\n", food);

                printf("                                                                                                         水  :%d\n", water);

                printf("                                                                                                         木材:%d\n", wood);

                printf("                                                                                                         健康:%d\n", health);*/


                break;

            }

            

            //狩猎嵌套switch


            case 2: 

            {

                if (cai1 == 1)

                {

                    printf("菜地损坏了,按5修复田地\n");

                }


                else

                {

                    if (t1 <= 20)

                    {

                        if (cai == 0)

                        {

                            cai = 1;

                            printf("你种下了生菜,这种蔬菜会在下次行动成熟\n");

                        }

                        else if (cai == 1)

                        {

                            printf("你收获了生菜,并把它们藏到了肚子里\n");

                            food += 1; water += 2; health += 2;

                            cai = 0;

                            printf("食物+2,水+2,健康+2\n");

                        }

                    }

                    else printf("来了一场暴风雨摧毁了你的菜地并带走了你的种子,你无法种田了\n");

                }

                break;

            }


            case 3: 

            {

                printf("你喝了一大口水\n");

                water += 4;

                printf("水+4\n");

                break;

            }

            case 4:

            {

                printf("你进行了伐木\n"); 

                wood += 5;

                break;

            }


            case 5: 

            {

                printf("修缮了菜地\n");

                cai1 = 0;

                break;

            }


            }


            if (food <= 0 || water <= 0 || health <= 0)

            {

                printf("\n");

                printf("\n");

                printf("你闭上了劳累的双眼,终于不用再担惊受怕了\n");

                goto A;

            }

        }

        food -= 3; water -= 4; health += 1;//每月的自然消耗

    }

    printf("\n");

    printf("\n");

    printf("你终于等来了救援,不用再担惊受怕了。。。\n");

    printf("游戏胜利\n");

A:  printf("\n");

    printf("\n");

    printf("game over\n");

    _getch();

}


自制小黑屋系列(源代码)的评论 (共 条)

分享到微博请遵守国家法律