魔兽世界之一备战

#贵校程设第一周的作业,熟悉类的使用
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cstdio>
using namespace std;


int soldier_HP[5];
char soldier_name[5][20] = {"iceman", "lion", "wolf", "ninja", "dragon"};
class player
{
private:
    int time, soldier_total, cur;//cur point to current specific soldier
    int HP;//health point
    char name[20];
    bool produce_end;//false represents no HP
    int soldier[5];//in the order of iceman、lion、wolf、ninja、dragon
public:
    int arr[5] = {0, 1, 2, 3, 4};//red sequence
    int arr2[5] = {1, 4, 3, 0, 2};//blue sequence
    player(const char* p, int n):HP(n), time(-1), produce_end(true), soldier_total(0), cur(-1)
    {
        strcpy(name, p);
        if(strcmp(name, "blue") == 0)
        {
            for(int i = 0; i < 5; ++i)
                arr[i] = arr2[i];
        }
        memset(soldier, 0, sizeof(soldier));
    };
    int gettime()
    {
        return time;
    }
    bool run()
    {
        if(produce_end == false)
            return false;
        ++time;
        cur = (cur + 1) % 5;
        int t = arr[cur];
        if(HP >= soldier_HP[t])
        {
            HP -= soldier_HP[t];
            soldier[t]++;
            soldier_total++;
            cout << setfill('0') << setw(3) <<time << ' ' << name << ' ' << soldier_name[t] <<
            ' ' << soldier_total << " born with strength " << soldier_HP[t] << ',' << soldier[t] << ' ' <<
            soldier_name[t] << " in " << name << " headquarter" << endl;
            return true;
        }
        else
        {
            int i, t;
            for(i = 1; i < 5; ++i)
            {
                cur++;
                t = arr[cur % 5];
                if(HP >= soldier_HP[t])
                {
                    HP -= soldier_HP[t];
                    soldier[t]++;
                    soldier_total++;
                cout << setfill('0') << setw(3) <<time << ' ' << name << ' ' << soldier_name[t] <<
                ' ' << soldier_total << " born with strength " << soldier_HP[t] << ',' << soldier[t] << ' ' <<
                soldier_name[t] << " in " << name << " headquarter" << endl;
                    return true;
                }


            }
            if(i == 5)
            {
                cout << setfill('0') << setw(3) <<time << ' ' << name;
                cout << " headquarter stops making warriors" << endl;
                produce_end = false;
                return false;
            }
        }
    }
};
int main()
{
    int n, hp, cnt = 0;
    cin >> n;
    while(n--)
    {
        cin >> hp;
        player R("red", hp), B("blue", hp);
        cin >> soldier_HP[4] >> soldier_HP[3] >> soldier_HP[0] >> soldier_HP[1] >> soldier_HP[2];
        bool f[2];
        //f[0] = true;
        cout << "Case:" << ++cnt << endl;
        f[0] = R.run();
        f[1] = B.run();
        while(f[0] || f[1])
        {
            f[0] = R.run();
            f[1] = B.run();
        }
    }
    return 0;
}



猜你喜欢

转载自blog.csdn.net/weixin_40841416/article/details/79514223