• 简单回合制游戏流程


      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<<"	p2_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<<"	p1_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 }


    运行结果:
    
    
  • 相关阅读:
    姚班
    xxx
    1358B
    1368A
    莫烦Tensorflow 建造自己的NN
    莫烦Tensorflow 入门
    linux服务器安装Apache (Centos)
    C++ 获取Linux 服务器CPU占用率+内存空闲率(亲测绝对可以运行)
    MySQL主键从初始值自增
    基础练习 矩阵乘法
  • 原文地址:https://www.cnblogs.com/socks/p/12877928.html
Copyright © 2020-2023  润新知