《荒野乱斗-机器人危机》游戏程序

      我是来自B 站的初中生谭某,这是我的第一个作品,于2023年12月24日发布第一个版本,本游戏根据B站作者BigSnakeFrostKay的荒野乱斗同人小说改编

      今天我又更了一部分,但仍未全部完成,预计除夕完成全部,除夕的时候请等待我的好消息

      做得不好,见谅

以下是程序(因学业原因,暂时有一些缺陷):

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
typedef void (*point)();
int xingbie,rnum,zhangjie=1,bnum,input,boolboss=0,boolstory=1,battle=0;
struct player{
    string name;
    int b,hp,lev,_b,__b,_hp,bsum,hpsum;
    int dunbuff,yunbuff,b_buff,shoushang,chongneng,chongnengsum;
    long long exp,expsum,coin;
}p={"玩家",1600,5400,1,0,0,0,5400,1600,0,0,0,0,1,5,0,100,100};
struct brawler{
    string name,skill;
    int b,hp,chongnengsum;
    bool jiesuo;
}h[5]={{"贝尔","雷霆标记",1040,2600,4,1},{"山姆","碎骨指虎",1600,5400,5,1},{"布洛克","摇滚轰炸",1160,2400,6,0},{"P先生","助手出击",1400,2200,5,0},{"巴斯特","蒙太奇",1400,5200,5,0}};
struct boss{
    string name,skill;
    int b,hp,chongnengsum;
    bool jiesuo;
}r[5]={{"小罗","小心地滑",1320,3200,4,0}};
boss shizhuang=r[bnum];
struct xiaoguai{
    string name;
    int b,hp,dengji;
}robot[3];
struct place{
    string name;
    bool jiesuo;
}difang[3]={"仓库",1,"机器人工厂",1,"P先生的酒店",0};
struct goods{
    string name;
    int prize;
    string gong;
    int sum;
}thing[5]={{"麦克斯饮料",15,"恢复600点生命值",2},{"巴利的酒",30,"恢复1200点生命值",2},{"黑鸦飞刀",20,"减少敌方350点生命值",2},{"佩佩手雷",50,"减少敌方2000点生命值",2},{"道格热狗",40,"恢复1600点生命值",2}};
void enter(){system("pause");system("cls");}
void enter_(){system("pause");}
void m(){cout<<(xingbie?p.name:"山姆");}
void f(){cout<<(xingbie?"贝尔":p.name);}
void expplus(){
    int levplus=0;
    while(1){
        if(p.exp>=p.expsum){
            p.exp-=p.expsum;
            p.expsum+=50;
            p._b+=10;p._hp+=20;p.coin+=50;
            p.bsum+=10;p.hpsum+=20;
            levplus++;
        }
        else{
            break;
        }
    }
    cout<<p.name;
    printf("升%d级!伤害增加%d,血量增加%d,获得金币%d",levplus,levplus*10,levplus*20,levplus*50);
}
void story1(){
    system("cls");
    cout<<"第一章 机器人造反\n";enter();
    cout<<"(战斗过程中,"<<(xingbie?"你(山姆)":"山姆")<<"因忘记自己的指虎损坏而使用指虎使指虎散架)\n\n";Sleep(750);
    cout<<"战斗一会儿后,"<<(xingbie?"贝尔":"你(贝尔)")<<"和"<<(xingbie?"你(山姆)":"山姆")<<"躲进了一个仓库\n\n";Sleep(750);
    cout<<(xingbie?"你(山姆)":"山姆")<<"(疑惑):这些机器人为什么会失控呢?还把我的指虎给崩掉了。\n\n";enter_();
    cout<<(xingbie?"贝尔":"你(贝尔)")<<"的手机: 紧急消息,BS大陆的机器人集体失控,看到机器人的幸存者最好躲起来!\n\n";enter_();
    cout<<(xingbie?"贝尔":"你(贝尔)")<<":怎么办,整个BS大陆的机器人都变得异常,况且我们还捅了老窝……\n\n";enter_();
    cout<<"???:芜!任何邪恶,终将绳之以法!\n\n";enter_();
    cout<<(xingbie?"贝尔":"你(贝尔)")<<"(生气):山姆,这个时候你就别玩梗了,你指虎都没了,再玩梗我们就比它们先一步被绳之以法了!\n\n";enter_();
    cout<<(xingbie?"你(山姆)":"山姆")<<":我没说话啊。\n\n";enter_();
    cout<<"一个长得像猴子的人(突然出现):芜!是我啦!\n\n";enter_();
    cout<<(xingbie?"你(山姆)":"山姆")<<":这位仁兄,请问你是猴吗?\n\n";enter_();
    cout<<"猴人:芜!什么猴,我才不是猴,吃我一… \n\n";Sleep(750);
    cout<<(xingbie?"你(山姆)":"山姆")<<":(打了猴人一拳)\n\n";enter_();
    cout<<"猴人:大哥大哥,我错了,我叫布洛克,我也是因为机器人的失控才逃出来的。\n\n";enter_();
    cout<<"(与此同时,机器人砸开了仓库门)\n\n";Sleep(750);
    cout<<"(布洛克使用一号随身妙具【火箭助推器】,使三人原地起跳,并轰炸了一片区域破坏了剩余的机器人。)\n\n";enter_();
    cout<<"布洛克(开心):跟着音乐节拍舞动吧\n\n";enter_();
    cout<<(xingbie?"贝尔":"你(贝尔)")<<":现在还不是舞动的时候,乱斗小镇现在出了乱子,我们必须去查看!\n\n";enter_();
    cout<<"布洛克:芜!等等我!\n\n";enter_();
    cout<<"(来到小镇,他们看到了破烂不堪的一幕。)\n\n";enter();
    cout<<"完成剧情!获得金币*50,经验*10,解锁新角色布洛克,解锁第二章剧情。\n\n";
    p.coin+=50;p.exp+=10;h[2].jiesuo=1;zhangjie++;
    expplus();
    enter();
}
void story2(){
    system("cls");
    cout<<"第二章 暴力P先生\n";enter();
    cout<<"(三人来到充满灾难的小镇。)\n\n";Sleep(750);
    m();cout<<":看来不只是工厂的机器人失控了……\n\n";enter_();
    f();cout<<":只凭我们三人是掀不起多大的波澜的,况且山姆的指虎已经损坏… \n\n";enter_();
    m();cout<<"(佩戴上崭新的碎骨指虎):那个,在我们去小镇的途中我顺便把指虎修好了。\n\n";enter_();
    cout<<"(一个机器人出现在";m();cout<<"山姆面前。)\n\n";Sleep(500);
    m();cout<<"(交叉拳):Cross!\n\n";Sleep(500);cout<<"机器人被击退。\n\n";
    Sleep(500);m();cout<<"还发射出指虎,指虎刺穿了机器人,使机器人无法继续运转。\n\n";Sleep(500);
    m();cout<<"(吸回指虎)\n\n";enter_();
    cout<<"布洛克(赞赏):芜!这指虎厉害啊,考虑低价卖给我呗?\n\n";enter_();
    m();cout<<"(给了布洛克一拳):Hook!\n\n";enter_();
    cout<<"一个穿西装的企鹅(出现):三位兄贵救救我!\n\n";enter_();
    cout<<"布洛克:嗯?P先生?你不在雪漫大酒店看着你那两个员工跑出来干什么?\n\n";enter_();
    cout<<"(P先生是雪漫大酒店的老板兼行李搬运工,因真实姓名不详,所以大家都叫他P先生。)\n\n";Sleep(500);
    cout<<"布洛克:不用废话了,我们送你回雪漫大...\n\n";Sleep(500);
    cout<<"P先生(愤怒地将行李箱砸在布洛克身上。)\n(策划:日常迫害布洛克。)\n\n";Sleep(750);
    cout<<"P先生:我有一个机器人员工在酒店造反,我无奈之下只能逃出来。\n\n";enter_();
    m();cout<<"(将事情的经过讲给P先生。)\n\n";Sleep(500);
    cout<<"P先生:机器人失控?为什么我不知道这件事?\n\n";enter_();
    m();cout<<":现在该考虑的是我们的安全,因为有一群持枪的机器人向我们走来了!\n\n";Sleep(750);
    cout<<"(一群持左轮手枪的机器人向他们走来。)\n\n";enter_();
    cout<<"布洛克(思维混乱):现在我们怎么办?\n\n";enter_();
    cout<<"P先生(拿着一个行李箱狠狠地砸向机器人):你们想知道我是怎么搬运行李的吗?我就是这么搬运行李的!\n\n";enter_();
    cout<<"(P先生的行李箱砸毁了无数个机器人。)\n\n";Sleep(500);
    cout<<"(随后P先生架设了一个基地,里面钻出了无数个小小P。)\n\n";Sleep(500);
    cout<<"P先生:我编程两年半的基地啊,出来吧,小小P大军!\n(策划:小黑籽是吧)\n\n";Sleep(500);
    cout<<"(小小P喷射的子弹和P先生扔出的行李箱,轻松把机器人们全部消灭。)\n\n";
    cout<<"(众人往雪漫大酒店的方向走。)";enter_();
    f();cout<<":老P我记得你还有个员工来着。 \n\n";enter_();
    cout<<"P先生(自责):对啊,我怎么把他忘了?我太不称职了,居然把他忘掉了…\n\n";enter_();
    f();cout<<":现在不是自责的时候,快去雪漫大酒店!\n\n";Sleep(500);
    cout<<"(众人往雪漫大酒店的方向走。)\n\n";enter_();
    cout<<"(到了雪漫大酒店,P先生没有管他们,直接冲进酒店,看自己的员工。)\n\n";enter_();
    cout<<"P先生:格尔!小罗!\n\n";enter_();
    cout<<"(格尔躲在角落里,而小罗却在大闹酒店。)\n\n";enter_();
    cout<<"小罗:P先生我要你痛不欲生!我要让你失去雪漫大酒店!\n\n";enter_();
    cout<<"P先生(向小罗那边跑去):我去阻止他,你们快去救格尔!小罗,停下你的行为!";enter();
    cout<<"完成剧情!获得金币*50,经验*10,解锁新角色P先生,解锁新地方P先生的酒店,遇见新boss小罗,打败小罗后解锁第三章剧情。\n\n";
    p.coin+=50;p.exp+=10;h[3].jiesuo=1;boolstory=0;difang[2].jiesuo=1;boolboss=1;zhangjie++;shizhuang=r[0];
    expplus();
    enter();
}
point story[3]={story1,story2};
int main(){
    p.dunbuff=0,p.b_buff=0,p.exp=0,p.yunbuff=0;
    p.lev=1,p.expsum=100;
    for(int i=1;i<=29;++i){
        cout<<"\n\n\n\n\n\n\n                                  Loading......\n                         ";
        for(int j=1;j<=i;++j) cout<<"-";
        cout<<"→";
        for(int j=1;j<=29-i;++j) cout<<"_";
        system("cls");
    }
    printf("\n\n\n欢迎来到《荒野乱斗-机器人危机!》\n(原作者:BigSnake-FrostKay(FK) 策划兼程序员:禾呈序猿杰瑞)\n\n\n");
    Sleep(1000);
    printf("月黑风高之下,山姆和贝尔准备返回金臂帮的基地。山姆的指虎已经损坏,要回去修理\n\n\n然而,机器人工厂的机器人突然失控......\n\n\n");
    Sleep(1000);
    printf("玩家们,你们做好战斗和发掘真相的准备了吗?\n\n\n");
    enter();
    flag1:
    printf("您的性别(输入1:男 输入0:女 性别决定初始角色(男山姆,女贝尔))");
    cin>>xingbie;
    if(xingbie==1){
        p.b=h[1].b,p.hp=h[1].hp,p.chongneng=0,p.chongnengsum=h[1].chongnengsum,p.hpsum=h[1].hp,p.bsum=h[1].b;
        rnum=1;
    }
    else if(xingbie==0){
        p.b=h[0].b,p.hp=h[0].hp,p.chongneng=0,p.chongnengsum=h[0].chongnengsum,p.hpsum=h[0].hp,p.bsum=h[0].b;
        rnum=0;
    }
    else{printf("\n\n\n输入错误...");Sleep(1000);system("cls");goto flag1;}
    flag2:
    system("cls");
    printf("\n\n\n您的名字(不超过10字)");
    cin>>p.name;
    if(p.name.length()<=20){
        printf("\n\n\n开始游戏!");
        enter();
    }
    else{
        printf("名字超过10字!");
        enter();
        goto flag2;
    }
    while(1){
        printf("输入你的操作:\n1.查看剧情 2.与本章boss决战 3.移动 4.背包\n5.查看状态 6.查看角色 7.切换角色 8.关于我们\n9.查看作者日志");
        cin>>input;
        switch(input){
            case 1:{
                system("cls");
                if(boolstory){
                    if(1<=zhangjie&&zhangjie<=2){
                        story[zhangjie-1]();
                    }
                    else{
                        cout<<"暂时没有新的剧情...\n\n\n";
                        enter();
                    }
                }
                else{
                    cout<<"暂时没有剧情,请先打败本章boss或等新版本更新章节\n\n\n";
                    enter();
                }
                break;
            }
            case 2:{
                //TODO
                break;
            }
            case 3:{
                system("cls");
                printf("你要去哪里?\n");
                for(int i=0;i<=2;++i){
                    cout<<i+1<<"."<<difang[i].name<<(difang[i].jiesuo?"\n":"(未解锁)\n");
                }
                cin>>input;
                if(1<=input&&input<=3){
                    if(difang[input-1].jiesuo){
                        switch (input) {
                        case 1:
                            system("cls");
                            cout<<"这里是仓库,用金币交换物资,买点什么?\n";
                            for(int i=0;i<=4;++i){
                                cout<<i+1<<"、"<<thing[i].name<<"(价格:"<<thing[i].prize<<" "<<thing[i].gong<<"\n";
                            }
                            cout<<"其他数字:退出\n";
                            cin>>input;
                            if(1<=input&&input<=5){
                                if(p.coin>=thing[input-1].prize){
                                    thing[input-1].sum++;
                                    p.coin-=thing[input-1].prize;
                                    cout<<thing[input-1].name<<":"<<thing[input-1].sum;
                                    cout<<"\n金币:"<<p.coin<<"\n";
                                    enter();
                                }
                                else{
                                    cout<<"金币不足...\n";
                                    enter();
                                }
                            }
                            else{
                                cout<<"\n\n欢迎下次光临!\n";
                                enter();
                            }
                            break;
                        case 2:
                            
                            break;
                        default:
                            
                            break;
                        }
                    }
                    else{
                        cout<<"该区域未解锁...";
                        enter();
                    }
                }
                else{
                    cout<<"\n\n暂时没有该区域...\n\n";
                    enter();
                }
                break;
            }
            case 4:{
                system("cls");
                cout<<"金币:"<<p.coin<<"\n";
                cout<<"道具:";
                for(int i=0;i<=4;i++){
                    cout<<i+1<<"."<<thing[i].name<<":"<<thing[i].sum<<" ";
                }
                cout<<"\n\n输入物品对应数字使用物品,输入其他数字返回\n";
                cin>>input;
                if(1<=input&&input<=5){
                    if(thing[input-1].sum>0){
                        switch (input){
                        case 1:
                            p.hpsum=(p.hp+p._hp-p.hpsum>=600)?p.hpsum+600:p.hp+p._hp;
                            thing[0].sum--;
                            cout<<"血量增加600,麦克斯饮料-1\n\n";
                            break;
                        case 2:
                            p.hpsum=(p.hp+p._hp-p.hpsum>=1200)?p.hpsum+1200:p.hp+p._hp;
                            thing[1].sum--;
                            cout<<"血量增加1200,巴利的酒-1\n\n";
                            break;
                        case 3:
                            cout<<"非战斗状态,无法使用该道具\n\n";
                            break;
                        case 4:
                            cout<<"非战斗状态,无法使用该道具\n\n";
                            break;
                        case 5:
                            p.hpsum=(p.hp+p._hp-p.hpsum>=1600)?p.hpsum+1600:p.hp+p._hp;
                            thing[0].sum--;
                            cout<<"血量增加1600,道格热狗-1\n\n";
                            break;
                        }
                    }
                    else cout<<"物品数量不足...\n\n";
                }
                else{system("cls");break;}
                enter();
                break;
            }
            case 5:{
                system("cls");
                cout<<"你的名字:"<<p.name<<" 使用的英雄:"<<h[rnum].name<<" 技能:"<<h[rnum].skill<<"\n";
                printf("等级:%d 经验:%lld/%lld\n",p.lev,p.exp,p.expsum);
                cout<<"伤害:"<<p.b<<"+"<<p._b<<"+"<<p.__b<<"="<<p.bsum<<" 伤害加成buff剩余回合:"<<p.b_buff; 
                cout<<"\n健康值:"<<p.hp<<"+"<<p._hp<<"="<<p.hp+p._hp<<"/"<<p.hpsum<<"\n";
                enter();
                break;
            }
            case 8:{
                system("cls");
                cout<<"感谢帽子们的支持!我们会做得更好!(帽子是FrostKay对粉丝的称呼)\n\n\n";
                cout<<"小说原作者:BigSnakeFrostKay 策划/程序:禾呈序猿杰瑞 \n程序部分参与:HomeStarling534(策划的信奥班好朋友)\n\n\n同时,也感谢部分朋友提供的英雄数据!\n\n\n";
                enter();
                break;
            }
        default:
            printf("\n\n\n输入错误...");
            Sleep(750);
            system("cls");
            break;
        }
    }
    return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值