炉石传说

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector> 
#include<string>
#include<queue>
#include<map>
using namespace std;
struct Node
{
    int hp,ak;
}p[2][8];
int main()
{
    int n;
    for(int i=1;i<=7;i++)
    {
        p[0][i].hp = -1;
        p[1][i].hp = -1;
        p[0][i].ak = -1;
        p[1][i].ak = -1;
    } 
    p[0][0].hp = 30;
    p[0][0].ak = 0;
    p[1][0].hp = 30;
    p[1][0].ak = 0;
    cin>>n;
    int ct[2]={1,1},time=0;    
    string str;
    for(int i=1;i<=n;i++)
    {
        //cout<<"dd"<<endl;
        cin>>str;
        if(str == "summon")
        {
            int pos,hp,ak;
            cin>>pos>>ak>>hp;
            if(ct[time]==8)    continue;
            for(int j=ct[time]+1;j>pos;j--)
            {
                p[time][j] = p[time][j-1];
                //cout<<p[time][j].hp<<" "<<p[time][j-1].hp<<"后面替代前面"<<endl;
            }
            p[time][pos].hp = hp;
            p[time][pos].ak = ak;
            ct[time]++;            
        }
        else if(str == "attack")
        {
            int atk,def;
            cin>>atk>>def;
            p[time][atk].hp = p[time][atk].hp - p[(time+1)%2][def].ak;            //己方随从 
            p[(time+1)%2][def].hp = p[(time+1)%2][def].hp - p[time][atk].ak;            //敌方随从或玩家 
            
            //cout<<p[time][atk].hp<<" "<< p[(time+1)%2][def].hp<<endl;
            if(p[(time+1)%2][def].hp<=0 && def==0)            //敌方英雄死亡 
            {
                if(time%2==0)        cout<<"1"<<endl;    //先手玩家胜
                else                cout<<"-1"<<endl; 
                cout<<p[0][0].hp<<endl;
                for(int j=1;j<=7;j++)
                {
                    if(p[0][j].hp > 0)
                    {
                        cout<<j<<" "<<p[0][j].hp<<endl;
                    }
                }
                cout<<p[1][0].hp<<endl;
                for(int j=1;j<=7;j++)
                {
                    if(p[1][j].hp > 0)
                    {
                        cout<<j<<" "<<p[1][j].hp<<endl;
                    }
                }
                break;    
            }
            
            if(p[time][atk].hp<=0)        //己方随从死亡 前移 
            {
                ct[time]--;
                for(int j=atk;j<ct[time];j++)
                {
                    p[time][j] = p[time][j+1];         
                } 
                p[time][ct[time]].hp = -1;    //前移 然后清空末尾项    后移然后补足首项 
            }
            
            if(p[(time+1)%2][def].hp<=0 && def!=0)    //敌方随从死亡
            {
                ct[(time+1)%2]--;
                for(int j=def;j<ct[(time+1)%2];j++)
                {
                    p[(time+1)%2][j] = p[(time+1)%2][j+1];         
                } 
                p[(time+1)%2][ct[(time+1)%2]].hp = -1;    //前移 然后清空末尾项    后移然后补足首项
            } 

        }
        else if(str == "end")
        {
            time = (time+1)%2;
        }
    }
    if(p[0][0].hp>0 && p[1][0].hp>0)
    {
        cout<<"0"<<endl;
        cout<<p[0][0].hp<<endl;
        for(int j=1;j<=7;j++)
        {
            if(p[0][j].hp > 0)
            {
                cout<<j<<" "<<p[0][j].hp<<endl;
            }
        }
        cout<<p[1][0].hp<<endl;
        for(int j=1;j<=7;j++)
        {
            if(p[1][j].hp > 0)
            {
                cout<<j<<" "<<p[1][j].hp<<endl;
            }
        }
    } 
    return 0;
}

 

posted @ 2019-03-12 19:59  萌新上路  阅读(155)  评论(0编辑  收藏  举报