예제 #1
0
bool Colosseum::attack(const Pokemon& attacker, Pokemon& defender) //function that deals with attacks and lowers hit points if hit
{
    bool returnValue=false;
    cout << attacker.get_name() << " is attacking " << defender.get_name() << endl;
    int attbonus=d20.roll();
    int defbonus=d20.roll();
    cout << attacker.get_name() << " rolls an attack bonus of " << attbonus << endl;
    cout << defender.get_name() << " rolls an defense bonus of " << defbonus << endl;
    int total_att=attbonus+attacker.get_attackLevel();
    int total_def=defbonus+defender.get_defLevel();
    int damage;
    if(total_att>total_def)
    {
        int roll1=d6.roll();
        int roll2=d6.roll();
        int roll3=d6.roll();
        damage=roll1+roll2+roll3;
        cout << "The attack hits dealing 3-D6 damage!" << endl;
        cout << "The rolls are: " << roll1 << " " << roll2 << " " << roll3 << " totalling: " << damage << " damage!" << endl;
        defender.reduceHP(damage);
        if(defender.get_hp() <=0 )
        {
            returnValue=true;
        }
        else
        {
            returnValue=false;
            cout << defender.get_name() << " has " << defender.get_hp() << " hit points left." << endl;
        }

    }
    else
    {
        damage=0;
        cout << "The attack is missed!" << endl;
    }
    return returnValue;

}
예제 #2
0
void Colosseum::play(Pokemon& p1, Pokemon& p2) //function that determines who goes first, when game is over, and constraints the game to 10 rounds
{

    int hp;
    Dice d;
    int j=d.roll();
    string position;
    if(j==1)
    {
        position="first";
    }
    else
    {
        position="second";
    }
    cout << p1.get_name() << " rolls a " << j << " and goes " << position << endl;
    if(position=="first")
    {
        for(int i=1; i<11; i++)
        {

            cout << "Round " << i << "!" << endl;
            if(attack(p1,p2)==true)
            {
                cout << p2.get_name() << " has been defeated!" << endl;
                break;
            }
            if(attack(p2,p1)==true)
            {
                cout << p1.get_name() << " has been defeated!" << endl;
                break;
            }
            if(i==10)
            {
              cout << "Game Over. It's a draw!" << endl;
            }


        }

    }
    else
    {
        for(int i=1; i<11; i++)
        {

            cout << "Round " << i << "!" << endl;
            if(attack(p2,p1)==true)
            {
                cout << p1.get_name() << " has been defeated!" << endl;
                break;
            }
            if(attack(p1,p2)==true)
            {
                cout << p2.get_name() << " has been defeated!" << endl;
                break;
            }
            if(i==10)
            {
              cout << "Game Over. It's a draw!" << endl;
            }

        }

    }

}