c++三国小游戏(喜欢请一键三连)

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n,goal,your_num,comp_num,yourpar_num,comppar_num;
int human_num,charac_num,atkway_num;
bool nameused[101];
string charac[101]={"0","刘蝗叔","曹槽","孙泉","汉线帝","煌巾军","袁少","煮猪侠"};
string attack_way[101]={"0","凌空一掌","反身一脚","横劈一刀","斜刺一枪"};

struct human
{
    string name;
    int atk,iq,blood,fa;
    bool live;
    int head;
};
human a[2001];
human yours[2001];
human comps[2001];
human yourpars[2001];
human comppars[2001];

char hehe[11][11]={
"   /| ",
"  / | ",
" /  | ",
"<_/|_>",
" |||| "
};

void shenglve()
{
    for(int i=1;i<=5;++i)
    {
        printf(".");
        Sleep(200);
    }
    printf(".");
}

void jieshao(int d)
{
    printf("\n");
    printf(" ·姓名: ");
    cout<<a[d].name<<"  ";
    printf("攻击力: %d  智力: %d  血量: %d\n",a[d].atk,a[d].iq,a[d].blood);
    printf("   人物当前状态:");
    if(a[d].live==true)
        printf("存活");
    else
        printf("已死亡");
    printf("  从属: ");
    if(a[d].fa==-1)
        printf("无\n");
    else
        cout<<a[a[d].fa].name<<endl;
    printf("\n");
}

void your_choujiang(int xx,int yy,int d)
{
    printf("\n");
    printf("--------------------------------------\n");
    printf("*叮!请抽取武将*\n");
    for(int i=1;i<=d;++i)
    {
        printf("请输入一个不大于10000的正整数: ");
        int t1,t2,t3;
        scanf("%d",&t1);
        t2=rand()%(human_num*10);
        t3=(t1+t2)%human_num+1;
        while(a[t3].live==false || a[t3].fa!=-1 || a[t3].atk<xx || a[t3].iq<yy)
        {
            t2=rand()%(human_num*10);
            t3=(t1+t2)%human_num+1;
        }
        if(t1==11910 && a[37].fa==-1)
            t3=37;
        else
            if(t1==11910 && a[38].fa==-1)
                t3=38;
        your_num++;
        yours[your_num].head=t3;
        yours[your_num].name=a[t3].name;
        yours[your_num].atk=a[t3].atk;
        yours[your_num].blood=a[t3].blood;
        yours[your_num].iq=a[t3].iq;
        yours[your_num].live=a[t3].live;
        yours[your_num].fa=0;
        a[t3].fa=0;
        printf("\n");
        printf("恭喜你获得武将 ");
        cout<<a[t3].name<<endl;
        printf("*这是你获得的第%d个武将*\n",your_num);
        jieshao(t3);
    }
    printf("返回游戏中!");
    shenglve();
    printf("\n");
    printf("--------------------------------------\n");
    printf("\n");
}

void comp_choujiang(int xx,int yy,int d)
{
    printf("\n");
    printf("--------------------------------------\n");
    printf("*叮!");
    cout<<a[1000].name;
    printf("抽取武将中*\n");
    for(int i=1;i<=d;++i)
    {
        int t;
        while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
            t=rand()%human_num+1;
        comp_num++;
        comps[comp_num].head=t;
        comps[comp_num].name=a[t].name;
        comps[comp_num].atk=a[t].atk;
        comps[comp_num].blood=a[t].blood;
        comps[comp_num].iq=a[t].iq;
        comps[comp_num].live=a[t].live;
        comps[comp_num].fa=1000;
        a[t].fa=1000;
        printf("\n");
        cout<<a[1000].name;
        printf("获得武将 ");
        cout<<a[t].name<<endl;
        printf("*这是他获得的第%d个武将*\n",comp_num);
        jieshao(t);
    }
    printf("返回游戏中!");
    shenglve();
    printf("\n");
    printf("--------------------------------------\n");
    printf("\n");
}

void yourpar_choujiang(int xx,int yy,int d)
{
    printf("\n");
    printf("--------------------------------------\n");
    printf("*叮!");
    cout<<a[1001].name;
    printf("抽取武将中*\n");
    for(int i=1;i<=d;++i)
    {
        int t;
        while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
            t=rand()%human_num+1;
        yourpar_num++;
        yourpars[yourpar_num].head=t;
        yourpars[yourpar_num].name=a[t].name;
        yourpars[yourpar_num].atk=a[t].atk;
        yourpars[yourpar_num].blood=a[t].blood;
        yourpars[yourpar_num].iq=a[t].iq;
        yourpars[yourpar_num].live=a[t].live;
        yourpars[yourpar_num].fa=1001;
        a[t].fa=1001;
        printf("\n");
        cout<<a[1001].name;
        printf("获得武将 ");
        cout<<a[t].name<<endl;
        printf("*这是他获得的第%d个武将*\n",comp_num);
        jieshao(t);
    }
    printf("返回游戏中!");
    shenglve();
    printf("\n");
    printf("--------------------------------------\n");
    printf("\n");
}

void comppar_choujiang(int xx,int yy,int d)
{
    printf("\n");
    printf("--------------------------------------\n");
    printf("*叮!");
    cout<<a[2000].name;
    printf("抽取武将中*\n");
    for(int i=1;i<=d;++i)
    {
        int t;
        while(a[t].live==false || a[t].fa!=-1 || a[t].atk<xx || a[t].iq<yy)
            t=rand()%human_num+1;
        comppar_num++;
        comppars[comppar_num].head=t;
        comppars[comppar_num].name=a[t].name;
        comppars[comppar_num].atk=a[t].atk;
        comppars[comppar_num].blood=a[t].blood;
        comppars[comppar_num].iq=a[t].iq;
        comppars[comppar_num].live=a[t].live;
        comppars[comppar_num].fa=2000;
        a[t].fa=2000;
        printf("\n");
        cout<<a[2000].name;
        printf("获得武将 ");
        cout<<a[t].name<<endl;
        printf("*这是他获得的第%d个武将*\n",comp_num);
        jieshao(t);
    }
    printf("返回游戏中!");
    shenglve();
    printf("\n");
    printf("--------------------------------------\n");
    printf("\n");
}

void renwu()
{
    human_num=93;
    charac_num=7;
    atkway_num=4;
    for(int i=1;i<=human_num;++i)
    {
        a[i].blood=1000;
        a[i].fa=-1;
        a[i].live=true;
    }
    a[1].name="泠苞";
    a[1].atk=66;
    a[1].iq=46;
    a[2].name="关兴";
    a[2].atk=76;
    a[2].iq=33;
    a[3].name="关平";
    a[3].atk=78;
    a[3].iq=39;
    a[4].name="张苞";
    a[4].atk=78;
    a[4].iq=35;
    a[5].name="黄忠";
    a[5].atk=96;
    a[5].iq=89;
    a[6].name="文鸳";
    a[6].atk=96;
    a[6].iq=86;
    a[7].name="郭嘉";
    a[7].atk=38;
    a[7].iq=100;
    a[8].name="吕布";
    a[8].atk=100;
    a[8].iq=49;
    a[9].name="诸葛亮";
    a[9].atk=93;
    a[9].iq=100; 
    a[10].name="司马懿";
    a[10].atk=65;
    a[10].iq=97;
    a[11].name="曹操";
    a[11].atk=82;
    a[11].iq=88;
    a[12].name="刘备";
    a[12].atk=79;
    a[12].iq=75;
    a[13].name="孙权";
    a[13].atk=70;
    a[13].iq=83;
    a[14].name="孙翎";
    a[14].atk=83;
    a[14].iq=44;
    a[15].name="孙策";
    a[15].atk=95;
    a[15].iq=77;
    a[16].name="孙静";
    a[16].atk=82;
    a[16].iq=45;
    a[17].name="黄盖";
    a[17].atk=78;
    a[17].iq=69;
    a[18].name="程普";
    a[18].atk=69;
    a[18].iq=72;
    a[19].name="孙坚";
    a[19].atk=91;
    a[19].iq=81;
    a[20].name="马超";
    a[20].atk=97;
    a[20].iq=80;
    a[21].name="马腾";
    a[21].atk=82;
    a[21].iq=66;
    a[22].name="马岱";
    a[22].atk=85;
    a[22].iq=75;
    a[23].name="马休";
    a[23].atk=75;
    a[23].iq=56;
    a[24].name="庞德";
    a[24].atk=96;
    a[24].iq=81;
    a[25].name="赵云";
    a[25].atk=99;
    a[25].iq=98;
    a[26].name="关羽";
    a[26].atk=97;
    a[26].iq=91;
    a[27].name="张飞";
    a[27].atk=97;
    a[27].iq=84;
    a[28].name="典韦";
    a[28].atk=98;
    a[28].iq=70;
    a[29].name="许褚";
    a[29].atk=96;
    a[29].iq=76;
    a[30].name="蒋干";
    a[30].atk=18;
    a[30].iq=1;
    a[31].name="太史慈";
    a[31].atk=93;
    a[31].iq=90;
    a[32].name="曲晨";
    a[32].atk=99;
    a[32].iq=97;
    a[33].name="荀彧";
    a[33].atk=36;
    a[33].iq=92;
    a[34].name="荀攸";
    a[34].atk=31;
    a[34].iq=91;
    a[35].name="吕蒙";
    a[35].atk=88;
    a[35].iq=90;
    a[36].name="陆逊";
    a[36].atk=83;
    a[36].iq=91;
    a[37].name="童渊";
    a[37].atk=100;
    a[37].iq=97;
    a[38].name="司马徽";
    a[38].atk=93;
    a[38].iq=100;
    a[39].name="夏侯惇";
    a[39].atk=91;
    a[39].iq=77;
    a[40].name="夏侯渊";
    a[40].atk=90;
    a[40].iq=72;
    a[41].name="刘表";
    a[41].atk=49;
    a[41].iq=40;
    a[42].name="刘琦";
    a[42].atk=50;
    a[42].iq=56;
    a[43].name="刘琮";
    a[43].atk=55;
    a[43].iq=29;
    a[44].name="刘焉";
    a[44].atk=34;
    a[44].iq=40;
    a[45].name="刘璋";
    a[45].atk=29;
    a[45].iq=46;
    a[46].name="蔡瑁";
    a[46].atk=79;
    a[46].iq=46;
    a[47].name="蔡和";
    a[47].atk=69;
    a[47].iq=41;
    a[48].name="文聘";
    a[48].atk=78;
    a[48].iq=57;
    a[49].name="蔡邕";
    a[49].atk=24;
    a[49].iq=93;
    a[50].name="蔡文姬";
    a[50].atk=11;
    a[50].iq=95;
    a[51].name="魏延";
    a[51].atk=92;
    a[51].iq=75;
    a[52].name="廖化";
    a[52].atk=71;
    a[52].iq=55;
    a[53].name="裴元绍";
    a[53].atk=46;
    a[53].iq=48;
    a[54].name="颜良";
    a[54].atk=95;
    a[54].iq=73;
    a[55].name="文丑";
    a[55].atk=94;
    a[55].iq=72;
    a[56].name="曹洪";
    a[56].atk=84;
    a[56].iq=82;
    a[57].name="曹彰";
    a[57].atk=94;
    a[57].iq=70;
    a[58].name="曹丕";
    a[58].atk=46;
    a[58].iq=74;
    a[59].name="曹植";
    a[59].atk=27;
    a[59].iq=85;
    a[60].name="张辽";
    a[60].atk=96;
    a[60].iq=94;
    a[61].name="雷铜";
    a[61].atk=78;
    a[61].iq=73;
    a[62].name="徐晃";
    a[62].atk=91;
    a[62].iq=88;
    a[63].name="张郃";
    a[63].atk=94;
    a[63].iq=85;
    a[64].name="曹真";
    a[64].atk=86;
    a[64].iq=79;
    a[65].name="曹仁";
    a[65].atk=80;
    a[65].iq=83;
    a[66].name="孙资";
    a[66].atk=40;
    a[66].iq=37;
    a[67].name="司马师";
    a[67].atk=55;
    a[67].iq=65;
    a[68].name="司马昭";
    a[68].atk=95;
    a[68].iq=78;
    a[69].name="姜维";
    a[69].atk=96;
    a[69].iq=95;
    a[70].name="诸葛瞻";
    a[70].atk=49;
    a[70].iq=79;
    a[71].name="李严";
    a[71].atk=81;
    a[71].iq=84;
    a[72].name="吴懿";
    a[72].atk=77;
    a[72].iq=56;
    a[73].name="蒋琬";
    a[73].atk=19;
    a[73].iq=86;
    a[74].name="费祎";
    a[74].atk=18;
    a[74].iq=87;
    a[75].name="诸葛瑾";
    a[75].atk=48;
    a[75].iq=76;
    a[76].name="王平";
    a[76].atk=89;
    a[76].iq=88;
    a[77].name="张翼";
    a[77].atk=72;
    a[77].iq=65;
    a[78].name="陈到";
    a[78].atk=93;
    a[78].iq=91;
    a[79].name="邓艾";
    a[79].atk=95;
    a[79].iq=94;
    a[80].name="黄权";
    a[80].atk=25;
    a[80].iq=49;
    a[81].name="公孙瓒";
    a[81].atk=73;
    a[81].iq=81;
    a[82].name="公孙康";
    a[82].atk=64;
    a[82].iq=59;
    a[83].name="牛金";
    a[83].atk=84;
    a[83].iq=66;
    a[84].name="于禁";
    a[84].atk=84;
    a[84].iq=70;
    a[85].name="郭淮";
    a[85].atk=89;
    a[85].iq=85;
    a[86].name="王颀";
    a[86].atk=89;
    a[86].iq=47;
    a[87].name="朱然";
    a[87].atk=71;
    a[87].iq=40;
    a[88].name="严白虎";
    a[88].atk=77;
    a[88].iq=63;
    a[89].name="丁奉";
    a[89].atk=72;
    a[89].iq=62;
    a[90].name="潘璋";
    a[90].atk=71;
    a[90].iq=54;
    a[91].name="王双";
    a[91].atk=88;
    a[91].iq=82;
    a[92].name="张绣";
    a[92].atk=91;
    a[92].iq=86;
    a[93].name="张任";
    a[93].atk=90;
    a[93].iq=82;
}

void fuzhiyours(int x,int y)
{
    yours[x].name=a[y].name;
    yours[x].atk=a[y].atk;
    yours[x].blood=a[y].blood;
    yours[x].iq=a[y].iq;
    yours[x].fa=a[y].fa;
    yours[x].head=y;
    yours[x].live=true;
}

void fuzhicomps(int x,int y)
{
    comps[x].name=a[y].name;
    comps[x].atk=a[y].atk;
    comps[x].blood=a[y].blood;
    comps[x].iq=a[y].iq;
    comps[x].fa=a[y].fa;
    comps[x].head=y;
    comps[x].live=true;
}

void fuzhiyourpars(int x,int y)
{
    yourpars[x].name=a[y].name;
    yourpars[x].atk=a[y].atk;
    yourpars[x].blood=a[y].blood;
    yourpars[x].iq=a[y].iq;
    yourpars[x].fa=a[y].fa;
    yourpars[x].head=y;
    yourpars[x].live=true;
}

void fuzhicomppars(int x,int y)
{
    comppars[x].name=a[y].name;
    comppars[x].atk=a[y].atk;
    comppars[x].blood=a[y].blood;
    comppars[x].iq=a[y].iq;
    comppars[x].fa=a[y].fa;
    comppars[x].head=y;
    comppars[x].live=true;
}

void kaishi()
{
    printf("\n");
    for(int i=0;i<=4;++i)
    {
        for(int j=0;j<=5;++j)
            printf("%c",hehe[i][j]);
        printf("\n");
    }
    printf("由呵呵游戏出品\n");
    printf("\n");
    printf("开始! O(∩_∩)O  祝你好运~\n");
    printf("--------------------------------------\n");
    printf(" ※每打一行字需要按回车Enter继续!※\n");
    printf("--------------------------------------\n");
    Sleep(500);
    printf("缓冲中");
    shenglve();
    printf("\n");
    printf("\n");
    printf("  ^- 三国群英传 -^ \n");
    printf("\n");
}

void frinit()
{
    printf("请输入你的名字:(保证无空格,无特殊字符)\n");
    printf(" ");
    cin>>a[0].name;
    a[0].blood=1000;
    a[0].atk=1;
    a[0].iq=1;
    a[0].live=true;
    a[0].fa=-1;
    jieshao(0);
}

void init1(int d)
{
    your_num=0;
    comp_num=0;
    memset(nameused,false,sizeof(nameused));
    printf("加载人物信息中,请稍后");
    shenglve();
    printf("\n");
    printf("\n");
    printf(" ※双方轮流出牌※\n");
    renwu();
    printf("你的对手是:");
    int res=rand()%charac_num+1;
    cout<<charac[res]<<endl;
    a[1000].name=charac[res];
    a[1000].atk=1;
    a[1000].iq=1;
    a[1000].blood=1000;
    a[1000].fa=-1;
    a[1000].live=true;
    printf("\n");
    printf("对手人物信息: \n");
    jieshao(1000);
    your_choujiang(30,20,d);
    comp_choujiang(30,20,d);
    fuzhiyours(0,0);
    fuzhicomps(0,1000);
}

void init2(int d)
{
    your_num=0;
    comp_num=0;
    yourpar_num=0;
    comppar_num=0;
    memset(nameused,false,sizeof(nameused));
    printf("加载人物信息中,请稍后");
    shenglve();
    printf("\n");
    printf("\n");
    printf(" ※双方轮流出牌※\n");
    renwu();
    printf("你的队友是:");
    int res=rand()%charac_num+1;
    while(nameused[res]==true)
        res=rand()%charac_num+1;
    nameused[res]=true;
    cout<<charac[res]<<endl;
    a[1001].name=charac[res];
    a[1001].atk=1;
    a[1001].iq=1;
    a[1001].blood=1000;
    a[1001].fa=-1;
    a[1001].live=true;
    printf("\n");
    printf("你队友的人物信息: \n");
    jieshao(1001);
    printf("你的对手是:");
    res=rand()%charac_num+1;
    while(nameused[res]==true)
        res=rand()%charac_num+1;
    nameused[res]=true;
    cout<<charac[res]<<endl;
    a[1000].name=charac[res];
    a[1000].atk=1;
    a[1000].iq=1;
    a[1000].blood=1000;
    a[1000].fa=-1;
    a[1000].live=true;
    printf("\n");
    printf("你对手的人物信息: \n");
    jieshao(1000);
    printf("你的对手的队友是:");
    res=rand()%charac_num+1;
    while(nameused[res]==true)
        res=rand()%charac_num+1;
    nameused[res]=true;
    cout<<charac[res]<<endl;
    a[2000].name=charac[res];
    a[2000].atk=1;
    a[2000].iq=1;
    a[2000].blood=1000;
    a[2000].fa=-1;
    a[2000].live=true;
    printf("\n");
    printf("你对手的队友的人物信息: \n");
    jieshao(2000);
    your_choujiang(30,20,d);
    yourpar_choujiang(30,20,d);
    comp_choujiang(30,20,d);
    comppar_choujiang(30,20,d);
    fuzhiyours(0,0);
    fuzhicomps(0,1000);
    fuzhiyourpars(0,1001);
    fuzhicomppars(0,2000);
}

void play1()
{
    a[0].blood=1000;
    a[1000].blood=1000;
    int temp_num;
    printf("请选择双方武将数量: ");
    scanf("%d",&temp_num);
    init1(temp_num);
    printf("对战开始!\n");
    printf("--------------------------------------\n");
    printf(" ※每回合双方各派出一名武将对决※\n");
    printf(" ※受到伤害=另一方攻击力*(随机一个1-6的数)-本方智商※\n");
    printf(" ※受到伤害可能为负数喲~※\n");
    printf(" ※每方主将如果阵亡,则此方视为失败※\n");
    printf("--------------------------------------\n");
    printf("\n");
    int turn=0;
    while(yours[0].blood>0 && comps[0].blood>0)
    {
        turn++;
        printf("^^^^^          ^^^^^          ^^^^^\n");
        printf("→第%d回合: \n",turn);
        printf("选择一名己方武将参与本回合战斗: (输入对应数字) \n");
        int yourturn,compturn;
        for(int i=0;i<=your_num;++i)
            if(yours[i].live==true)
            {
                printf(" %d-",i);
                cout<<yours[i].name;
            }
        printf("\n");
        scanf("%d",&yourturn);
        compturn=rand()%(comp_num+1);
        while(comps[compturn].live==false)
            compturn=rand()%(comp_num+1);
        printf("\n");
        printf("双方对战武将为: \n");
        printf(" ");
        cout<<a[0].name;
        printf("方: ");
        cout<<yours[yourturn].name;
        printf("\n");
        printf(" ");
        cout<<a[1000].name;
        printf("方: ");
        cout<<comps[compturn].name;
        printf("\n");
        printf("\n");
        int youratk=rand()%6+1,compatk=rand()%6+1;
        while(compatk-youratk>=2)
            compatk=rand()%6+1;
        int youract=rand()%atkway_num+1,compact=rand()%atkway_num+1;
        int yourharm=comps[compturn].atk*compatk-yours[yourturn].iq;
        int compharm=yours[yourturn].atk*youratk-comps[compturn].iq;
        comps[compturn].blood-=compharm;
        a[comps[compturn].head].blood=comps[compturn].blood;
        yours[compturn].blood-=yourharm;
        a[yours[yourturn].head].blood=yours[yourturn].blood;
        cout<<yours[yourturn].name<<" "<<attack_way[youract];
        printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comps[compturn].iq);
        cout<<comps[compturn].name;
        printf("受到%d点伤害\n",compharm);
        if(comps[compturn].blood<=0)
        {
            comps[compturn].live=false;
            a[comps[compturn].head].live=false;
        }
        cout<<comps[compturn].name<<" "<<attack_way[compact];
        printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yours[yourturn].iq);
        cout<<yours[yourturn].name;
        printf("受到%d点伤害\n",yourharm);
        if(yours[yourturn].blood<=0)
        {
            yours[yourturn].live=false;
            a[yours[yourturn].head].live=false;
        }
        if(yours[yourturn].blood<=0)
        {
            cout<<a[0].name;
            printf("方武将 ");
            cout<<yours[yourturn].name;
            printf("阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        if(comps[compturn].blood<=0)
        {
            cout<<a[1000].name;
            printf("方武将 ");
            cout<<comps[compturn].name;
            printf("阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        printf("\n");
    }
    printf("\n");
    if(yours[0].blood<=0)
    {
        cout<<comps[0].name;
        printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
    }
    if(comps[0].blood<=0)
    {
        cout<<yours[0].name;
        printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
        human_num+=0;
    }
    printf("\n");
}

void play2()
{
    a[0].blood=1000;
    a[1000].blood=1000;
    a[1001].blood=1000;
    a[2000].blood=1000;
    int temp_num;
    printf("请选择每人武将数量: ");
    scanf("%d",&temp_num);
    init2(temp_num);
    printf("对战开始!\n");
    printf("--------------------------------------\n");
    printf(" ※每回合双方各派出一名武将对决※\n");
    printf(" ※受到伤害=另一方攻击力*(随机一个1-6的数)-本方智商※\n");
    printf(" ※受到伤害可能为负数喲~※\n");
    printf(" ※每方主将如果阵亡,则此人视为失败,不能继续战斗※\n");
    printf(" ※队友失败还可继续战斗,主人物失败则此方直接失败※\n");
    printf("--------------------------------------\n");
    printf("\n");
    int turn=0;
    while(yours[0].blood>0 && comps[0].blood>0)
    {
        turn++;
        printf("^^^^^          ^^^^^          ^^^^^\n");
        printf("→第%d回合: \n",turn);
        printf("选择一名己方武将参与本回合战斗: (输入对应数字) \n");
        int yourturn,yourparturn,compturn,compparturn;
        for(int i=0;i<=your_num;++i)
            if(yours[i].live==true)
            {
                printf(" %d-",i);
                cout<<yours[i].name;
            }
        printf("\n");
        scanf("%d",&yourturn);
        yourparturn=rand()%(yourpar_num+1);
        while(yourpars[yourparturn].live==false)
            yourparturn=rand()%(yourpar_num+1);
        compturn=rand()%(comp_num+1);
        while(comps[compturn].live==false)
            compturn=rand()%(comp_num+1);
        compparturn=rand()%(comppar_num+1);
        while(comppars[compparturn].live==false)
            compparturn=rand()%(comppar_num+1);
        printf("\n");
        printf("双方对战武将为: \n");
        printf(" ");
        cout<<a[0].name;
        printf("方: ");
        cout<<yours[yourturn].name;
        printf("\n");
        printf(" ");
        cout<<a[1001].name;
        printf("方: ");
        cout<<yourpars[yourparturn].name;
        printf("\n");
        printf("\n");
        printf(" ");
        cout<<a[1000].name;
        printf("方: ");
        cout<<comps[compturn].name;
        printf("\n");
        printf(" ");
        cout<<a[2000].name;
        printf("方: ");
        cout<<comppars[compparturn].name;
        printf("\n");
        printf("\n");
        int youratk=rand()%6+1,yourparatk=rand()%6+1;
        int compatk=rand()%6+1,compparatk=rand()%6+1;
        while(compatk-youratk>=2)
            compatk=rand()%6+1;
        while(compparatk-yourparatk>=2)
            compparatk=rand()%6+1;
        int yourdir=rand()%2,compdir=rand()%2;
        int youract=rand()%atkway_num+1,compact=rand()%atkway_num+1;
        int yourparact=rand()%atkway_num+1,compparact=rand()%atkway_num+1;
        int yourharm,compharm,yourparharm,compparharm;
        if(yourdir==0)
        {
            compharm=yours[yourturn].atk*youratk-comps[compturn].iq;
            compparharm=yourpars[yourparturn].atk*yourparatk-comppars[compparturn].iq;
        }
        else
        {
            compharm=yourpars[yourparturn].atk*yourparatk-comps[compturn].iq;
            compparharm=yours[yourturn].atk*youratk-comppars[compparturn].iq;
        }
        if(compdir==0)
        {
            yourharm=comps[compturn].atk*compatk-yours[yourturn].iq;
            yourparharm=comppars[compparturn].atk*compparatk-yourpars[yourparturn].iq;
        }
        else
        {
            yourharm=comppars[compparturn].atk*compparatk-yours[yourturn].iq;
            yourparharm=comps[compturn].atk*compatk-yourpars[yourparturn].iq;
        }
        comps[compturn].blood-=compharm;
        a[comps[compturn].head].blood=comps[compturn].blood;
        comppars[compparturn].blood-=compparharm;
        a[comppars[compparturn].head].blood=comps[compparturn].blood;
        yours[compturn].blood-=yourharm;
        a[yours[yourturn].head].blood=yours[yourturn].blood;
        yourpars[compparturn].blood-=yourparharm;
        a[yourpars[yourparturn].head].blood=yourpars[yourparturn].blood;
        if(comps[compturn].blood<=0)
        {
            comps[compturn].live=false;
            a[comps[compturn].head].live=false;
        }
        if(comppars[compparturn].blood<=0)
        {
            comppars[compparturn].live=false;
            a[comppars[compparturn].head].live=false;
        }
        if(yours[yourturn].blood<=0)
        {
            yours[yourturn].live=false;
            a[yours[yourturn].head].live=false;
        }
        if(yourpars[yourparturn].blood<=0)
        {
            yourpars[yourparturn].live=false;
            a[yourpars[yourparturn].head].live=false;
        }
        if(yourdir==0)
        {
            cout<<yours[yourturn].name<<" "<<attack_way[youract];
            printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comps[compturn].iq);
            cout<<comps[compturn].name;
            printf("受到%d点伤害\n",compharm);
            cout<<yourpars[yourparturn].name<<" "<<attack_way[yourparact];
            printf(" (%d*%d-%d): ",yourpars[yourparturn].atk,yourparatk,comppars[compparturn].iq);
            cout<<comppars[compparturn].name;
            printf("受到%d点伤害\n",compparharm);
            printf("\n");
        }
        else
        {
            cout<<yours[yourturn].name<<" "<<attack_way[youract];
            printf(" (%d*%d-%d): ",yours[yourturn].atk,youratk,comppars[compparturn].iq);
            cout<<comppars[compparturn].name;
            printf("受到%d点伤害\n",compparharm);
            cout<<yourpars[yourparturn].name<<" "<<attack_way[yourparact];
            printf(" (%d*%d-%d): ",yourpars[yourturn].atk,yourparatk,comps[compturn].iq);
            cout<<comps[compturn].name;
            printf("受到%d点伤害\n",compharm);
            printf("\n");
        }
        if(compdir==0)
        {
            cout<<comps[compturn].name<<" "<<attack_way[compact];
            printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yours[yourturn].iq);
            cout<<yours[yourturn].name;
            printf("受到%d点伤害\n",yourharm);
            cout<<comppars[compparturn].name<<" "<<attack_way[compparact];
            printf(" (%d*%d-%d): ",comppars[compparturn].atk,compparatk,yourpars[yourparturn].iq);
            cout<<yourpars[yourparturn].name;
            printf("受到%d点伤害\n",yourparharm);
        }
        else
        {
            cout<<comps[compturn].name<<" "<<attack_way[compact];
            printf(" (%d*%d-%d): ",comps[compturn].atk,compatk,yourpars[yourparturn].iq);
            cout<<yourpars[yourparturn].name;
            printf("受到%d点伤害\n",yourparharm);
            cout<<comppars[compparturn].name<<" "<<attack_way[compparact];
            printf(" (%d*%d-%d): ",comppars[compparturn].atk,compparatk,yours[yourturn].iq);
            cout<<yours[yourturn].name;
            printf("受到%d点伤害\n",yourharm);
        }
        if(yours[yourturn].blood<=0)
        {
            cout<<a[0].name;
            printf("方武将 ");
            cout<<yours[yourturn].name;
            printf(" 阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        if(yourpars[yourparturn].blood<=0)
        {
            cout<<a[1001].name;
            printf("方武将 ");
            cout<<yourpars[yourparturn].name;
            printf(" 阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        if(comps[compturn].blood<=0)
        {
            cout<<a[1000].name;
            printf("方武将 ");
            cout<<comps[compturn].name;
            printf(" 阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        if(comppars[compparturn].blood<=0)
        {
            cout<<a[2000].name;
            printf("方武将 ");
            cout<<comppars[compparturn].name;
            printf(" 阵亡!\n");
            Sleep(200);
            printf(" 默哀一秒钟");
            shenglve();
            printf("\n");
        }
        printf("\n");
    }
    printf("\n");
    if(yours[0].blood<=0)
    {
        cout<<comps[0].name<<" & "<<comppars[0].name;
        printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
    }
    if(comps[0].blood<=0)
    {
        cout<<yours[0].name<<" & "<<yourpars[0].name;
        printf("方胜利! ヾ( ̄ー ̄)X(^▽^)ゞ \n");
    }
    printf("\n");
}

void play3()
{
    printf("暂未开放,敬请期待\n");
}

void choose()
{
    printf("请选择对战模式:\n");
    printf("-①.1V1模式  ···输入1\n");
    printf("-②.2V2模式  ···输入2\n");
    printf("-③.国战模式 ···输入3\n");
    scanf("%d",&goal);
    while(goal>3 || goal<1)
    {
        printf("无此选项\n");
        printf("\n");
        printf("请选择对战模式:\n");
        printf("-①.1V1模式 ···输入1\n");
        printf("-②.2V2模式 ···输入2\n");
        printf("-③.国战模式···输入3\n");
        scanf("%d",&goal);
    }
    if(goal==1)
        play1();
    if(goal==2)
        play2();
    if(goal==3)
        play3();
    printf("加载中");
    shenglve();
    printf("\n");
}

int main()
{
    srand((unsigned int) time (NULL));
    printf("~请按提示进行操作~\n");
    Sleep(300);
    kaishi();
    frinit();
    choose();
    while(1)
    {
        printf("是否重新开始? 1-是 2-否\n");
        scanf("%d",&goal);
        if(goal==1)
            choose();
        else
            break;
    }
    printf("Ending!\n");
    return 0;
}

喜欢的关注~

三国英雄录游戏和技术说明 一:游戏初步介绍: (1)游戏需要的设备: 1:需要的配置:必须安装DiectX8.1以上。 2:最少2台机器可以进行互联通讯。 (2)游戏的安装: 1:只要把exe程序和几个图片放在同一目录下就行了。 二:进行游戏: (1):游戏进入的步骤: 首先两个玩家谁先创建服务器都可以。在建立完后,游戏会报告本机的IP地址。然后你可以通过QQ,或是其它方式将IP告诉你的朋友,让他在连接服务器选项上输入这个IP地址。完毕后双方的游戏界面会弹出“吴,蜀,魏,阀”四图片,这是这个游戏的可选势力(目前还没有作用),任选其一,双方操作完毕后进入实质的游戏状态。 (2):游戏: 1:游戏之初 在游戏中创建主机的为蓝方,连接的副机为绿方。识别的方式也很容易,你只能看到自己城池的情报。地图上除主机和副机各自占领的一个城市(许昌,汉中),其它的8个都为空城,并且双方没有将领。 2:游戏指令 指令在游戏的右下方,只有6个“攻击,调动,招募,征兵,任命,解职”。 1攻击:可以攻击一个非自己的城市,要占领空城自己的本城的兵力需要5000以上,占领后将会把进攻城兵力的5000分配给被占领城市。而如果要进攻对方的城则根据计算,整体攻击力为本城兵力的1/10,但大于10000以上都只有1000的攻击力,任命太守可以提高攻击力, 如果一个太守“统领能力为99的曹操“去进攻一个没有太守的敌城时就会有如下计算。 (0~99)*30 + 1000 这是攻击力, 1000- (0~99)*30,这是被攻击力。(0~99)是个随机数。当取值为99的时候攻击力就是3970 ,而被攻击值为 – 1970, 大概意思就是我可以杀掉对方3970的兵力,而自己却还可以增加1970的兵力。但对方如果太守为一个统领96的姜维那随机数的取值范围就只有(0~3)了。 另一个武将的作用,在进攻或守备时武将可以对城中的所有将领进行体力上的攻击,双方武将每相差1点武力可以造成2点HP的伤害,但最大只能造成30HP,相当于武力相差15。武将主要影响对方全城将领的体力负担,从而使对方将领的生命受到更大的威胁。 攻击和守备时必须损失的体力:(攻守)太守20HP,(攻守)武将20HP,双方武力差*2,并将这个差值扣到武力差的那方全城将领身上。 占领敌方城池后,自动拥有2500兵力,这部分兵力是免费给予的。 2调动:将本城的兵力调往指定城,主要用于占领新城后兵力不足,可以分担新城的指令,但本城兵力在1000以下则无法再使用本命令。 3招募:招募将领,每个城中,都有5个可以招募的将领。将领是随机分配的,当招募完一个后他会再换上新的5个将领,将领目前有84个。 4征兵:可提高本城的兵力,如果有侍中的话效果会更显著,注意侍中的政治能力有等级划分,0~79,80~89, 90~94,95~99, 100。共5个等级,级别越高,能力越好,具体算法如下。 (0~79)*4+500,(0~89)*5+500,~以此类推(同上面一样()内的数据为随机数)。无侍中下只有550。 征兵需要侍中20点的HP。 5任命:任命4个职位的官员,太守,武将,侍中已经介绍,参军的作用是缩短指令的执行时间,执行完一个指令后都需要一段时间的等待,任免参军可以缩短这个等待。具体如下:命令时间/3/100*参军智力*10/(等级划分0~79 =6,80~89=7,~以此类推)。大概意思象诸葛亮那样智力100的可以减少1/3的命令时间。任命已经有职位的将领将会执行替换。 6解职:解除职位,将领的HP只有在没有任职的情况下才可以恢复。因此将领快死而又没有可替换时可执行此命令。 7最下方灰色的标名称:命令的下放有一个城市名称,这是你指当前正在使用的城市。 8城池边上的白星:白星表示是否可以执行本城的命令,只有拥有白星才可以下达命令。 9将领生命的恢复:将领只有在非任命状态下可以恢复生命,每30秒/本将领的生命上限值的10分之1 3:游戏的胜利: 占领所有的城市,你就赢了。 无显示数据: #define TimeAttack 15000 //攻击15秒 #define TimeConscripy 15000 ////增兵15秒 #define TimeEnrol 8000 ////招将8秒 #define TimeTAppoint 4000 ///任命4秒 #define TimeAbsolve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值