双人文字对战游戏

本文介绍了一款双人文字对战小游戏,玩家可以进行自动化的战斗对决,体验紧张刺激的策略竞技。游戏以文字描述战斗过程,简单易上手,适合朋友间娱乐对战。

双人自动对战小游戏

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
string name1,name2;
int hp1,hp2,gj1,gj2,fy1,fy2;
string jin[30]={"会心一击","回复术","闪电拳","诅咒","治愈魔法","火球术","雷击术","重击","生命之轮","减速术","撞击","背刺","铁壁","吸血攻击","净化","伤害反弹盾","瘟疫","攻击","攻击","攻击","攻击","攻击","攻击","攻击","暴击","投毒","治疗药剂","攻击","攻击","10连击"};
double gj[30]={6,3,5.5,5,5,4,4.5,3,0,1,3.7,8,0,2,2,0,7,1,1,1,1,1,3.5,1,2,1,1,0.55};
int main()
{
    cout <<"P1的名字:";
    cin >> name1;
    cout <<"P2的名字:";
    cin >> name2;
    while(name1==name2)//更新点在此!!!
    {
        cout<<"重名,请重新输入P2的名字!\n";
        cout <<"P2的名字:";
        cin >> name2;
    }
    system("cls");
    cout << name1 <<" VS "<< name2 << endl;
//
    int num1=0,num2=0;
    for(int i=0;i<=name1.size();i++)
        num1=num1+int(name1[i]);
    for(int i=0;i<=name2.size();i++)
        num2=num2+int(name2[i]);
    num1=abs(num1);
    num2=abs(num2);
//
    Sleep(200);
    cout<<name1<<" "<<"HP";
    hp1=150+num1%450;
    cout<<hp1<<" "<<"攻"<<" ";
    if(num1%60<40)
        gj1=num1%60+40,cout<<num1%60+40;
    else
        gj1=num1%60,cout<<num1%60;
    cout<<" "<<"防"<<" ";
    if(num1%70<40)
        fy1=num1%70+40,cout<<num1%70+40;
    else
        fy1=num1%70+40,cout<<num1%70;
    cout<<" "<<"速"<<" ";
    if(num1%80<40)
        cout<<num1%80+40;
    else
        cout<<num1%80;
    cout<<" "<<"敏"<<" ";
    if(num1%90<40)
        cout<<num1%90+40;
    else
        cout<<num1%90;
    cout<<" "<<"魔"<<" ";
    if(num1%45<30)
        cout<<num1%35+30;
    else
        cout<<num1%45;
    cout<<" "<<"抗"<<" ";
    if(num1%65<30)
        cout<<num1%65+40;
    else
        cout<<num1%65;
    cout<<" "<<"智"<<" ";
    cout<<num1%100<<endl;
    cout<<name2<<" "<<"HP";
    hp2=150+num2%450;
    cout<<hp2<<" "<<"攻"<<" ";
    if(num2%60<40)
        gj2=num2%60+40,cout<<num2%60+40;
    else
        gj2=num2%60,cout<<num2%60;
    cout<<" "<<"防"<<" ";
    if(num2%70<40)
        cout<<num2%70+40;
    else
        cout<<num2%70;
    cout<<" "<<"速"<<" ";
    if(num2%80<40)
        cout<<num2%80+40;
    else
        cout<<num2%80;
    cout<<" "<<"敏"<<" ";
    if(num2%90<40)
        cout<<num2%90+40;
    else
        cout<<num2%90;
    cout<<" "<<"魔"<<" ";
    if(num2%45<30)
        cout<<num2%35+30;
    else
        cout<<num2%45;
    cout<<" "<<"抗"<<" ";
    if(num2%65<30)
        cout<<num2%65+40;
    else
        cout<<num2%65;
    cout<<" "<<"智"<<" ";
    cout<<num2%100<<endl;
    Sleep(3000);
//
    Sleep(1000);
    cout << 3 << endl; 
    Sleep(1000);
    cout << 2 << endl; 
    Sleep(1000);
    cout << 1 << endl; 
    Sleep(1000);
    cout <<"Go!!!\n";
    Sleep(1000);
    system("cls");
//
    fy1/=10; fy2/=10;
    gj1/=10; gj2/=10;
    int tb1=0,tb2=0,ft1=0,ft2=0,du1=0,du2=0,ys1=0,ys2=0;
    while(hp1>0 && hp2>0)
    {
        srand((unsigned)time(NULL));
        int fs=rand()%30,jishu=5+rand()%10;
        if(fs==4 || fs==1)
        {
            int ran=rand()%2+1;
            if(ran==1)
                fs=1;
            hp1+=jishu*gj[fs];
            cout << name1 <<"使用"<< jin[fs] <<",回复"<< jishu*gj[fs] <<"点hp      "; 
            cout << name1 <<"hp:"<< hp1 <<'\n';
        }
        else
            if(fs==8)
            {
                int sjs=rand()%2;
                if(hp1>hp2 || sjs)
                {
                    cout << name1 <<"使用激光,造成75固定伤害!";
                    hp2-=75;
                    cout << name1 <<"hp:"<< hp1 <<"         ";
                    cout << name2 <<"hp:"<< hp2 <<'\n';
                }
                else
                {
                    swap(hp1,hp2);
                    cout << name1 <<"使用生命之轮,"<< name1 <<"的生命和"<< name2 <<"的生命互换。          ";
                    cout << name1 <<"hp:"<< hp1 <<"         ";
                    cout << name2 <<"hp:"<< hp2 <<'\n';
                }
            }
            else
                if(fs==12)
                {
                    tb1=4;
                    cout << name1 <<"发动铁壁!\n"; 
                }
                else
                    if(fs==15)
                    {
                        ft1=2;
                        cout << name1 <<"发动伤害反弹盾!\n"; 
                    }
                    else
                        if(fs==14)
                        {
                            if(!du1)
                            {
                                fs=18;
                                cout << name1 <<"发动攻击!  "<< name2 <<"hp-12。\n";
                                hp2-=12;
                                cout << name1 <<"hp:"<< hp1 <<'\n';
                                cout << name2 <<"hp:"<< hp2 <<'\n';
                            }
                            else
                                cout << name1 <<"发动净化!  "<< name1 <<"被净化了。\n";
                            if(du1!=0)
                                du1=0;
                        }
                        else
                            if(fs==13)
                            {
                                cout << name1 <<"发动吸血攻击!\n";
                                int yzk=rand()%30;
                                hp1-=yzk;
                                hp2+=yzk;
                                cout << name1 <<"hp:"<< hp1 <<"         ";
                                cout << name2 <<"hp:"<< hp2 <<'\n';
                            }
                            else
                                if(fs==16)
                                {
                                    int r=rand()%2;
                                    if(r)
                                    {
                                        if(tb2!=0)
                                        {
                                            cout << name1 <<"发动瘟疫,被铁壁阻挡。";
                                            hp2-=15;
                                            cout << name2 <<"hp-15\n";
                                        }
                                        else
                                        {
                                            int ran=rand()%3+3;
                                            hp2*=(10-ran)*0.1;
                                            cout << name1 <<"发动瘟疫,"<< name2 <<"的hp减少"<< ran <<"0%。    "<< name2 <<"hp:"<< hp2 << endl; 
                                        }
                                    }
                                    else
                                        cout << name1 <<"发动会心一击    "<< name2 <<"hp-30\n",hp2-=30;
                                }
                                else
                                    if(fs==29)
                                    {
                                        cout << name1 <<"使用10连击          "<< name2 <<"hp";
                                        for(int i=1;i<=10;i++)
                                        {
                                            jishu=5+rand()%15;
                                            hp2-=jishu*0.55;
                                            cout <<'-'<< (int)(jishu*0.55);
                                        }
                                        cout << endl;
                                        cout << name1 <<"hp:"<< hp1 <<"         ";
                                        cout << name2 <<"hp:"<< hp2 <<'\n';
                                    }
                                    else
                                    {
                                        if(jin[fs]=="背刺")
                                        {
                                            cout << name1 <<"潜行到"<< name2 <<"的背后\n"; 
                                            int sss=rand()%3;
                                            if(sss==1)
                                                cout << name1 <<"的潜行被识破\n\n";
                                            else
                                            {
                                                cout << name1 <<"发动"<< jin[fs] << endl;
                                                cout << name2 <<"hp-"<< abs(jishu*gj[fs]+gj1-fy2) <<'\n';
                                                hp2-=abs(jishu*gj[fs]+gj1-fy2);
                                            }
                                        }
                                        else
                                        {
                                            cout << name1 <<"发动"<< jin[fs] << endl;
                                            if(fs==25)
                                                du2=3;
                                            if(fs==26)
                                                ys1=3;
                                            if(tb2!=0)
                                            {
                                                hp2-=1;
                                                cout << name2 <<"hp-1\n";
                                            }
                                            else 
                                                if(ft2!=0)
                                                {
                                                    hp1-=abs(jishu*gj[fs]+gj1-fy2);
                                                    cout << name1 <<"hp-"<< abs(jishu*gj[fs]+gj1-fy2) <<'\n';
                                                }
                                                else
                                                {
                                                    int randon=rand()%40;
                                                    if(!randon)
                                                    {
                                                        cout << name2 <<"防御,   hp-"<< abs(jishu*gj[fs]*0.6+gj1-fy2) << endl;
                                                        hp2-=abs((int)(jishu*gj[fs]*0.6+gj1)-fy2);
                                                    }
                                                    else
                                                        if(randon==1)
                                                            cout << name2 <<"闪避,   hp-0\n";
                                                        else 
                                                        {
                                                            cout << name2 <<"hp-"<< abs(jishu*gj[fs]+gj1-fy2) <<'\n';
                                                            hp2-=abs(jishu*gj[fs]+gj1-fy2);
                                                        }
                                                }
                                            cout << name1 <<"hp:"<< hp1 <<"         ";
                                            cout << name2 <<"hp:"<< hp2 <<'\n';
                                        }
                                    }
        cout <<"\n";
        Sleep(1000);
        if(ft2!=0)
            ft2--;
        if(tb2!=0)
            tb2--;
        if(du2!=0)
        {
            cout << name2 <<"毒发,   hp-"<< 10+rand()%10 << endl;
            hp2-=10+rand()%10;
            du2--;
        }
        if(ys2!=0)
        {
            cout << name2 <<"药水发挥药效,   hp+"<< 10+rand()%10 << endl;
            hp2+=10+rand()%10;
            ys2--;
        }
        if(hp1<=0 || hp2<=0)
            break;
//
//
//
//
        fs=rand()%30,jishu=5+rand()%10;
        if(fs==4 || fs==1)
        {
            int ran=rand()%2+1;
            if(ran==1)
                fs=1;
            hp2+=jishu*gj[fs];
            cout << name2 <<"使用"<< jin[fs] <<",回复"<< jishu*gj[fs] <<"点hp      "; 
            cout << name2 <<"hp:"<< hp2 <<'\n';
        }
        else
            if(fs==8)
            {
                if(hp2>hp1)
                {
                    cout << name2 <<"使用激光,造成75固定伤害!";
                    hp1-=75;
                    cout << name2 <<"hp:"<< hp2 <<"         ";
                    cout << name1 <<"hp:"<< hp1 <<'\n';
                }
                else
                { 
                    swap(hp1,hp2);
                    cout << name2 <<"使用生命之轮,"<< name2 <<"的生命和"<< name1 <<"的生命互换。          ";
                    cout << name2 <<"hp:"<< hp2 <<"         ";
                    cout << name1 <<"hp:"<< hp1 <<'\n';
                } 
            }
            else
                if(fs==12)
                {
                    tb2=4;
                    cout << name2 <<"发动铁壁!\n"; 
                }
                else
                    if(fs==15)
                    {
                        ft2=2;
                        cout << name2 <<"发动伤害反弹盾!\n"; 
                    }
                    else
                        if(fs==14)
                        {
                            if(!du2)
                            {
                                fs=18;
                                cout << name2 <<"发动攻击!  "<< name1 <<"hp-12。\n";
                                hp1-=12;
                                cout << name2 <<"hp:"<< hp2 <<'\n';
                                cout << name1 <<"hp:"<< hp1 <<'\n';
                            }
                            else 
                                cout << name2 <<"发动净化!  "<< name2 <<"被净化了。\n";
                            if(du2!=0)
                                du2=0;
                        }
                        else
                            if(fs==13)
                            {
                                cout << name2 <<"发动吸血攻击!\n";
                                int yzk=rand()%30;
                                hp1-=yzk;
                                hp2+=yzk;
                                cout << name2 <<"hp:"<< hp2 <<"         ";
                                cout << name1 <<"hp:"<< hp1 <<'\n';
                            }
                            else
                                if(fs==16)
                                {
                                    int r=rand()%2;
                                    if(r)
                                    {
                                        if(tb1!=0)
                                        {
                                            cout << name2 <<"发动瘟疫,被铁壁阻挡。   ";
                                            hp1-=15;
                                            cout << name1 <<"hp-15\n";
                                        }
                                        else
                                        {
                                            int ran=rand()%3+3;
                                            hp1*=(10-ran)*0.1;
                                            cout << name2 <<"发动瘟疫,"<< name1 <<"的hp减少"<< ran <<"0%。    "<< name1 <<"hp:"<< hp1 << endl; 
                                        }
                                    }
                                    else
                                        cout << name2 <<"发动会心一击    "<< name1 <<"hp-30\n",hp1-=30;
                                }
                                else
                                    if(fs==29)
                                    {
                                        cout << name2 <<"使用10连击          "<< name1 << "hp";
                                        for(int i=1;i<=10;i++)
                                        {
                                            jishu=5+rand()%15;
                                            hp1-=jishu*0.55;
                                            cout <<'-'<< (int)(jishu*0.55);
                                        }
                                        cout << endl;
                                        cout << name2 <<"hp:"<< hp2 <<"         ";
                                        cout << name1 <<"hp:"<< hp1 <<'\n';
                                    }
                                    else
                                    {
                                        if(jin[fs]=="背刺")
                                        {
                                            cout << name2 <<"潜行到"<< name1 <<"的背后\n"; 
                                            int sss=rand()%3;
                                            if(sss==1)
                                                cout << name2 <<"的潜行被识破\n\n";
                                            else
                                            {
                                                cout << name2 <<"发动"<< jin[fs] << endl;
                                                cout << name1 <<"hp-"<< abs(jishu*gj[fs]+gj1-fy2) <<'\n';
                                                hp1-=abs(jishu*gj[fs]+gj1-fy2);
                                            }
                                        }
                                        else
                                        {
                                            cout << name2 <<"发动"<< jin[fs] << endl;
                                            if(fs==25)
                                                du1=3;
                                            if(fs==26)
                                                ys2=3;
                                            if(tb1!=0)
                                            {
                                                hp1-=1;
                                                cout << name1 <<"hp-1\n";
                                            }
                                            else
                                                if(ft1!=0)
                                                {
                                                    hp2-=abs(jishu*gj[fs]+gj2-fy1);
                                                    cout << name2 <<"hp-"<< abs(jishu*gj[fs]+gj2-fy1) <<'\n';
                                                }
                                                else
                                                {
                                                    int randon=rand()%40;
                                                    if(!randon)
                                                    {
                                                        cout << name1 <<"防御,   hp-"<< abs(jishu*gj[fs]*0.6+gj2-fy1)<< endl;;
                                                        hp1-=(int)(jishu*gj[fs]*0.6+gj2);
                                                    }
                                                    else
                                                        if(randon==1)
                                                            cout << name1 <<"闪避,   hp-0\n";
                                                        else 
                                                        {
                                                            cout << name1 <<"hp-"<< abs(jishu*gj[fs]+gj2-fy1) <<'\n';
                                                            hp1-=abs(jishu*gj[fs]+gj2-fy1);
                                                        }
                                                }
                                        }
                                        cout << name2 <<"hp:"<< hp2 <<"         ";
                                        cout << name1 <<"hp:"<< hp1 <<'\n';
                                    }
        cout <<"\n---------------------------------------\n\n";
        Sleep(1000);
        if(ft1!=0)
            ft1--;
        if(tb1!=0)
            tb1--;
        if(du1!=0)
        {
            cout << name1 <<"毒发,   hp-"<< 10+rand()%10 << endl;
            hp1-=10+rand()%10;
            du1--;
        }
        if(ys1!=0)
        {
            cout << name1 <<"药水发挥药效,   hp+"<< 10+rand()%10 << endl;
            hp1+=10+rand()%10;
            ys1--;
        }
    }
    if(hp1>0)
        cout << name1 <<"赢了。";
    else
        cout << name2 <<"赢了。";
    system("pause"); 
    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值