CCF-炉石传说

  1 #include<cstdio>
  2 typedef struct
  3 {
  4     int attack,health;
  5 } cus;
  6 
  7 cus info[2][8];
  8 int aliv[2];
  9 int player = 0;
 10 
 11 void summon();
 12 void attack();
 13 void solven();
 14 void del(int,int);
 15 //void init();
 16 
 17 int main()
 18 {
 19     int n=0;
 20     char order[10];
 21     //init();
 22     scanf("%d",&n);
 23     info[0][0].health = 30;
 24     info[1][0].health = 30;
 25     while(n--)
 26     {
 27         scanf("%s",order);
 28         if(order[0] == 'e')
 29             player = !player;
 30         else if(order[0] == 's')
 31             summon();
 32         else if(order[0] == 'a')
 33             attack();
 34     }
 35     solven();
 36 }
 37 
 38 void summon()
 39 {
 40     int p,a,h;
 41     scanf("%d%d%d",&p,&a,&h);
 42     ++aliv[player];
 43     for(int i=aliv[player]; i>p; --i)
 44     {
 45         info[player][i].attack = info[player][i-1].attack;
 46         info[player][i].health = info[player][i-1].health;
 47     }
 48     info[player][p].attack = a;
 49     info[player][p].health = h;
 50     //init();
 51 }
 52 
 53 void attack()
 54 {
 55     int p1,p2;
 56     scanf("%d%d",&p1,&p2);
 57     if(p2 != 0)
 58     {
 59         info[player][p1].health -= info[(!player)][p2].attack;
 60         info[(!player)][p2].health -= info[player][p1].attack;
 61         if(info[player][p1].health < 1)
 62             del(player,p1);
 63         if(info[(!player)][p2].health <1)
 64             del((!player),p2);
 65     }
 66     else
 67         info[(!player)][p2].health -= info[player][p1].attack;
 68     //init();
 69 }
 70 
 71 void solven()
 72 {
 73     //init();
 74     int num;
 75     if(info[0][0].health < 1 && info[1][0].health > 0)
 76         printf("-1\n");
 77     else if(info[1][0].health < 1 && info[0][0].health > 0)
 78         printf("1\n");
 79     else
 80         printf("0\n");
 81 
 82     printf("%d\n%d",info[0][0].health,aliv[0]);
 83     for(int i=1; i<=aliv[0]; ++i)
 84         printf(" %d",info[0][i].health);
 85     printf("\n");
 86 
 87     printf("%d\n%d",info[1][0].health,aliv[1]);
 88     for(int i=1; i<=aliv[1]; ++i)
 89         printf(" %d",info[1][i].health);
 90     printf("\n");
 91 }
 92 
 93 void del(int x,int p)
 94 {
 95     for(int i=p; i<aliv[x]; ++i)
 96     {
 97         info[x][i].attack = info[x][i+1].attack;
 98         info[x][i].health = info[x][i+1].health;
 99     }
100     info[x][aliv[x]].attack = 0;
101     info[x][aliv[x]].health = 0;
102     --aliv[x];
103 }
104 
105 /*void init()
106 {
107     puts("\n*************************");
108     puts("player1's attack:");
109     for(int i=0; i<8; ++i)
110         printf("%d ",info[0][i].attack);
111     puts("");
112 
113     puts("player1's health:");
114     for(int i=0; i<8; ++i)
115         printf("%d ",info[0][i].health);
116     puts("");
117 
118         puts("player2's attack:");
119     for(int i=0; i<8; ++i)
120         printf("%d ",info[1][i].attack);
121     puts("");
122 
123     puts("player2's health:");
124     for(int i=0; i<8; ++i)
125         printf("%d ",info[1][i].health);
126     puts("");
127     puts("*************************\n");
128 }*/

 

posted @ 2017-04-05 10:14  Posase  阅读(325)  评论(0)    收藏  举报