简单回合制游戏流程
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 版权协议,转载请附上原文出处链接和本声明。