1 #include <iostream>
  2 #include<queue>
  3 using namespace std;
  4 
  5 //p1的基础攻击
  6 struct p1_struct
  7 {
  8     int conbat=100;
  9 }p1_s;
 10 //p2的基础攻击
 11 struct p2_struct
 12 {
 13     int conbat=200;
 14 }p2_s;
 15 //p1的血量
 16 struct p1_blood_struct
 17 {
 18     int blood=500;
 19 }p1_b;
 20 //p2的血量
 21 struct p2_blood_struct
 22 {
 23     int blood=510;
 24 }p2_b;
 25 //p1的英雄队列
 26 queue<int> p1;
 27 //p2的英雄队列
 28 queue<int> p2;
 29 //p1的英雄出战数组
 30 int p1_list_hero[5]={1,2,3,4,5};
 31 //p2的英雄出战数组
 32 int p2_list_hero[5]={6,7,8,9,10};
 33 
 34 //最大出战英雄数量
 35 const int hero_max_count=5;
 36 
 37 //英雄攻击buff加成
 38 bool compute_conbat(int id,int &conbat)
 39 {
 40     if(1==id||2==id||3==id||4==id||5==id)
 41         conbat=conbat+150;
 42     else if(6==id||7==id||8==id||9==id||10==id)
 43         conbat=conbat+60; 
 44     return true;
 45 }
 46 //获取英雄对应的攻击
 47 bool get_config_conbat(int id,int &conbat)
 48 {
 49     if(1==id||2==id||3==id||4==id||5==id){
 50         conbat=p1_s.conbat;
 51         compute_conbat(id,conbat);
 52     }
 53     else if(6==id||7==id||8==id||9==id||10==id){
 54         conbat=p2_s.conbat; 
 55         compute_conbat(id,conbat);
 56     }
 57     else   
 58         return false;
 59 
 60     return true;
 61 }
 62 //获取英雄血量
 63 bool get_blood(int id,int &nblood)
 64 {
 65     if(1==id||2==id||3==id||4==id||5==id)
 66         nblood=p1_b.blood;
 67     else if(6==id||7==id||8==id||9==id||10==id)
 68         nblood=p2_b.blood; 
 69     return true;
 70 }
 71 //开始战斗
 72 int attack(){
 73     //填充p1出战英雄队列
 74     for(int nIndex=0;nIndex<hero_max_count;nIndex++)
 75     {
 76         p1.push(p1_list_hero[nIndex]);        
 77     }
 78     //填充p2出战英雄队列
 79     for(int nIndex=0;nIndex<hero_max_count;nIndex++)
 80     {
 81         p2.push(p2_list_hero[nIndex]);        
 82     }
 83     //p1当前出战英雄id
 84     int p1_hero_id=0;
 85     //p2当前出战英雄id
 86     int p2_hero_id=0;
 87     //设置双方首位出战英雄id
 88     p1_hero_id=p1.front();
 89     p2_hero_id=p2.front();
 90     p1.pop();
 91     p2.pop();
 92 
 93     //获取双方基础属性
 94     int p1_conbat=0;
 95     int p2_conbat=0;
 96     int p1_blood=0;
 97     int p2_blood=0;
 98     get_config_conbat(p1_hero_id,p1_conbat);
 99     get_config_conbat(p2_hero_id,p2_conbat);
100     get_blood(p1_hero_id,p1_blood);
101     get_blood(p2_hero_id,p2_blood);
102     //出战英雄结束队列
103     bool p1_break=false;
104     bool p2_break=false;
105     //开始战斗
106     while(1)
107     {  
108         //p1打p2
109         if(p1_conbat-p2_blood>=0) //p1的英雄打死了p2的英雄
110         {
111             cout<<"p1_hero  "<<p1_hero_id<<"  killed  p2_hero  "<<p2_hero_id<<endl;
112             if(!p2.empty()){
113                 cout<<"p2.size="<<p2.size()<<endl;
114                 p2_hero_id=p2.front();
115                 p2.pop();
116                 get_config_conbat(p2_hero_id,p2_conbat);                
117                 get_blood(p2_hero_id,p2_blood);   
118             }
119             else
120             {//p2英雄打完了(都死了)
121                 p2_break=true;
122             } 
123         }
124         else
125         {//p1打了p2多少血
126             cout<<"p1_hero  "<<p1_hero_id<<"  attack  p2_hero  "<<p2_hero_id<<" "<<p1_conbat<<" blood";
127             p2_blood=p2_blood-p1_conbat;
128             cout<<"\tp2_blood surplus "<<p2_blood<<endl;
129         }
130         //p2打p1
131         if(p2_conbat-p1_blood>=0) //p1的英雄打死了p2的英雄
132         {
133             cout<<"p2_hero  "<<p2_hero_id<<"  killed  p1_hero  "<<p1_hero_id<<endl;
134             if(!p1.empty()){
135                 cout<<"p1.size="<<p1.size()<<endl;
136                 p1_hero_id=p1.front();
137                 p1.pop();
138                 get_config_conbat(p1_hero_id,p1_conbat);
139                 get_blood(p1_hero_id,p1_blood);                
140             }
141             else
142             {//p1英雄打完了(都死了)
143                 p1_break=true;
144             } 
145         }
146         else
147         {//p2打了p1多少血
148             cout<<"p2_hero  "<<p2_hero_id<<"  attack  p1_hero  "<<p1_hero_id<<" "<<p2_conbat<<" blood";
149             p1_blood=p1_blood-p2_conbat;
150             cout<<"\tp1_blood surplus "<<p1_blood<<endl;
151         }
152 
153         if(true==p1_break && true==p2_break)//平局
154             return 0;
155         if(true==p2_break)//p1赢了
156             return 1;
157         if(true==p1_break)//p2赢了
158             return 2;
159         
160     }
161 }
162 
163 int main(int, char**) {
164     int winner=attack();
165     if(0==winner)
166         cout<<"it ends in a draw!!"<<endl;
167     else
168         cout<<"The winner is P"<<winner<<"  congratulate!!"<<endl;
169 }


运行结果:


 

版权声明:本文为socks原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/socks/p/12877928.html