Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

hello there. using C++ can somebody do a makefile for this code? #include <iostr

ID: 3667854 • Letter: H

Question

hello there.

using C++

can somebody do a makefile for this code?

#include <iostream>
#include <stdlib.h>

using namespace std;
class Unicorn; //predefinition class
class BabaYaga;
/*===================================================
=======================Base class Creature===========
=====================================================*/
class Creature
{
protected:
    const int Armor;
    int Points;
    const string name;
public:
    Creature(int,int,string);
    virtual int Attack(void) const=0;
    virtual int Defense(int)=0;
    void print()const;
    static void checkEnemy(Creature*,Creature*);
    void addHealth(int damage); //for baba Yaga only
    int getHealth() {return Points;}
};

void Creature::addHealth(int damage)
{
    if(name=="Baba Yaga")
        Points+=damage;
}

void Creature::print()const
{
    cout<<"Name: "<<name<<endl;
    cout<<"Strength Points: "<<Points<<endl;
}

Creature::Creature(int a,int p,string _name): Armor(a),name(_name)
{
    Points=p;
}

/*=====================================
=====================Gollum============
=======================================*/
class Gollum:public Creature
{
public:
    Gollum():Creature(1,8,"Gollum"){};
    int Attack(void) const;
    int Defense(int);
};


int Gollum::Attack(void) const
{
    //check for ring:
    int ring=rand()%100;    //generate probability
    if(ring<=5)
        //attack 3d6
        return ((rand()%6+1)+(rand()%6+1)+(rand()%6+1));
    else    //attack 1d6
        return (rand()%6+1);
}

int Gollum::Defense(int attack)
{
    //2d6:
    int def=(rand()%6+1)+(rand()%6+1);
    if(attack-def-Armor>0)// if we didn't defin creatures
        Points-=attack-def-Armor;
    return attack-def;
}

/*===================================================
=========================Barbarian==================
====================================================*/
class Barbarian: public Creature
{
public:
    Barbarian():Creature(0,12,"Barbarian"){};
    int Attack(void) const;
    int Defense(int);
};


int Barbarian::Attack(void) const
{
    //attack 2d6
    return ((rand()%6+1)+(rand()%6+1));
}

int Barbarian::Defense(int attack)
{
    //2d6:
    int def=(rand()%6+1)+(rand()%6+1);
    if(attack-def-Armor>0)// if we didn't define creatures
        Points-=attack-def-Armor;
    return attack-def;
}
/*====================================================
=======================Baba Yaga=====================
================================================*/
class BabaYaga: public Creature
{
public:
    BabaYaga():Creature(3,12,"Baba Yaga"){};
    int Attack(void) const;
    int Defense(int);
};


int BabaYaga::Attack(void) const
{
    //attack 1d6
    return (rand()%6+1);
}


int BabaYaga::Defense(int attack)
{
    //1d10:
    int def=(rand()%10+1);
    if(attack-def-Armor>0)// if we didn't defin creatures
        Points-=attack-def-Armor;
    return attack-def;
}

/*======================================================
============================Blue man===================
=======================================================*/
class BlueMan: public Creature
{
public:
    BlueMan():Creature(3,12,"Blue Men"){};
    int Attack(void) const;
    int Defense(int);
};


int BlueMan::Attack(void) const
{
    //attack 2d10
    return ((rand()%10+1)+(rand()%10+1));
}


int BlueMan::Defense(int attack)
{
    //for each points with step 4 add 1 roll:
    int def=(rand()%6+1);
    if(Points>4)
        def+=(rand()%6+1);
    if(Points>8)
        def+=(rand()%6+1);

    if(attack-def-Armor>0)// if we didn't define creatures
        Points-=attack-def-Armor;
    return attack-def;
}

/*======================================================
============================ Unicorn ===================
=======================================================*/
class Unicorn: public Creature
{
private:
    static bool isMustAttack;
public:
    Unicorn():Creature(3,18,"Unicorn"){};
    int Attack(void) const;
    int Defense(int);
    static void setMustAttack(bool state);
};
bool Unicorn::isMustAttack=false;

void Unicorn::setMustAttack(bool state)
{
    isMustAttack=state;
    }


int Unicorn::Attack(void) const
{
    //if didn't must attack: second isn't Unicorn, have no damage
    if((isMustAttack==false)&&(Points==18))
        return 0;
    //1d20+2d6:
    return ((rand()%20+1)+(rand()%6+1)+(rand()%6+1));
}


int Unicorn::Defense(int attack)
{

    int def=(rand()%6+1)+(rand()%6+1);
    if(attack-def-Armor>0)// if we didn't define creatures
        Points-=attack-def-Armor;
    return attack-def;
}

//function for check: if we have 2 Unicorn, set parameter to attack:
void Creature::checkEnemy(Creature* a,Creature*b)
{
    if((a->name=="Unicorn")&&(b->name=="Unicorn"))
        Unicorn::setMustAttack(true);
    else
        Unicorn::setMustAttack(false);
}

int main()
{
    Creature *players[2];
    int i=0,type,ii,j;
    /*for(ii=1;ii<=5;ii++)
        for(j=1;j<=5;j++)
            {
                switch(ii)
                {
                case 1: players[0]=new Gollum();
                        break;
                case 2: players[0]=new Barbarian();
                        break;
                case 3: players[0]=new BabaYaga();
                        break;
                case 4: players[0]=new BlueMan();
                        break;
                case 5: players[0]=new Unicorn();
                        break;
                }
                switch(j)
                {
                case 1: players[1]=new Gollum();
                        break;
                case 2: players[1]=new Barbarian();
                        break;
                case 3: players[1]=new BabaYaga();
                        break;
                case 4: players[1]=new BlueMan();
                        break;
                case 5: players[1]=new Unicorn();
                        break;
                }

            i=0;
            Creature::checkEnemy(players[0],players[1]); //check pair Unicorn-Unicorn
            while(players[i]->getHealth()>0)
            {
                int lastAttack=players[1-i]->Defense(players[i]->Attack());
                cout<<"Player "<<i+1<<" attack "<<endl;
                cout<<"With result: "<<lastAttack<<endl;
                //repay for last attack - for Baba Yaga:
                players[i]->addHealth(lastAttack);
                cout<<"So defense player is ";
                players[1-i]->print();
                if(i==0)
                    i=1;
                else
                    i=0;
            }
            if(players[i]->getHealth()>0)
                cout<<"Winner is "<<i+1;
            else
                cout<<"Winner is "<<2-i;
            cout<<endl<<"==========================================="<<endl;
            }
*/
    while(i<2)
    {
        cout<<"Chose creatures for fight: "<<endl;
        cout<<"1. Gollum"<<endl;
        cout<<"2. Barbarian"<<endl;
        cout<<"3. Baba Yaga"<<endl;
        cout<<"4. Blue Men"<<endl;
        cout<<"5. Unicorn"<<endl;
        cout<<"Input type: ";
        cin>>type;
        if((type>=1)&&(type<=5))
        {
                switch(type)
            {
                case 1: players[i]=new Gollum();
                        break;
                case 2: players[i]=new Barbarian();
                        break;
                case 3: players[i]=new BabaYaga();
                        break;
                case 4: players[i]=new BlueMan();
                        break;
                case 5: players[i]=new Unicorn();
                        break;
            }
            i++;
        }
        else
            cout<<"wrong choice!";
    }

    i=0;
    Creature::checkEnemy(players[0],players[1]); //check pair Unicorn-Unicorn
    while(players[i]->getHealth()>0)
    {
        int lastAttack=players[1-i]->Defense(players[i]->Attack());
        cout<<"Player "<<i+1<<" attack "<<endl;
        cout<<"With result: "<<lastAttack<<endl;
        //repay for last attack - for Baba Yaga:
        players[i]->addHealth(lastAttack);
        cout<<"So defense player is ";
        players[1-i]->print();
        if(i==0)
            i=1;
        else
            i=0;
    }
    if(players[i]->getHealth()>0)
        cout<<"Winner is "<<i+1;
    else
        cout<<"Winner is "<<2-i;


    return 0;
}

Explanation / Answer

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

class Creature

{

protected:

    const int Armor

    int Points

    const string name

public:

    Creature(int,int,string)

    virtual int Attack(void) const=0

    virtual int Defense(int)=0

    void print()const

    static void checkEnemy(Creature*,Creature*)

    void addHealth(int damage) //for baba Yaga only

    int getHealth() {return Points}

}

void Creature::addHealth(int damage)

{

    if(name=="Baba Yaga")

    Points+=damage

}

void Creature::print()const

{

    cout<<"Name: "<<name<<endl

    cout<<"Strength Points: "<<Points<<endl

}

Creature::Creature(int a,int p,string _name): Armor(a),name(_name)

{

    Points=p

}

In the above CLass Creating Creature class like name and Strength as points and different functions like add Health and getHealth   and respective operations have performed different operations on creature class.

//Gollum class

class Gollum:public Creature

{

public:

    Gollum():Creature(1,8,"Gollum"){}

    int Attack(void) const

    int Defense(int)

}

int Gollum::Attack(void) const

{

//check for ring:

    int ring=rand()%100 //generate probability

    if(ring<=5)

//attack 3d

        return ((rand()%6+1)+(rand()%6+1)+(rand()%6+1))

    else //attack 1d6

        return (rand()%6+1)

} int Gollum::Defense(int attack)

{

//2d6:

int def=(rand()%6+1)+(rand()%6+1)

if(attackdefArmor>0)// if we didn't defin creatures

    Points=attackdefArmor

        return attackdef

}/

//Barbiarian class

class Barbarian: public Creature

{

public:

    Barbarian():Creature(0,12,"Barbarian"){}

    int Attack(void) const

    int Defense(int)

}

int Barbarian::Attack(void) const

{

//attack 2d6

    return ((rand()%6+1)+(rand()%6+1))

}

int Barbarian::Defense(int attack)

{

//2d6:

    int def=(rand()%6+1)+(rand()%6+1)

    if(attackdefArmor>0)// if we didn't define creatures

        Points=attackdefArmor

                return attackdef

}

//Baba Yaga Class

class BabaYaga: public Creature

{

public:

    BabaYaga():Creature(3,12,"Baba Yaga"){}

    int Attack(void) const

    int Defense(int)

}

int BabaYaga::Attack(void) const

{

//attack 1d6

    return (rand()%6+1)

}

int BabaYaga::Defense(int attack)

{

//1d10:

//1d10:

    int def=(rand()%10+1)

    if(attackdefArmor>0)// if we didn't defin creatures

        Points=attackdefArmor

                return attackdef

}

//BlueMan class

class BlueMan: public Creature

{

public:

    BlueMan():Creature(3,12,"Blue Men"){}

    int Attack(void) const

    int Defense(int)

}

int BlueMan::Attack(void) const

{

//attack 2d10

    return ((rand()%10+1)+(rand()%10+1))

}

int BlueMan::Defense(int attack)

{

//for each points with step 4 add 1 roll:

    int def=(rand()%6+1)

    if(Points>4)

        def+=(rand()%6+1)

    if(Points>8)

        def+=(rand()%6+1)

    if(attackdefArmor>0)// if we didn't define creatures

        Points=attackdefArmor

                return attackdef

}

//Unicorn Class

class Unicorn: public Creature

{

private:

    static bool isMustAttack

public:

    Unicorn():Creature(3,18,"Unicorn"){}

    int Attack(void) const

    int Defense(int)

    static void setMustAttack(bool state)

}

bool Unicorn::isMustAttack=false

void Unicorn::setMustAttack(bool state)

{

isMustAttack=state

}

int Unicorn::Attack(void) const

{

//if didn't must attack: second isn't Unicorn, have no damage

    if((isMustAttack==false)&&(Points==18))

        return 0

//1d20+2d6:

    return ((rand()%20+1)+(rand()%6+1)+(rand()%6+1))

}

int Unicorn::Defense(int attack)

{

    int def=(rand()%6+1)+(rand()%6+1)

    if(attackdefArmor>0)// if we didn't define creatures

        Points=attackdefArmor

        return attackdef

}

//function for check: if we have 2 Unicorn, set parameter to attack:

void Creature::checkEnemy(Creature* a,Creature*b)

{

if((a>name=="Unicorn")&&(b>name=="Unicorn"))

    Unicorn::setMustAttack(true)

else

    Unicorn::setMustAttack(false)

}

//Main Class

//

// File:   newmain.cc

// Author: HARE KRISHNA

//

// Created on 14 February, 2016, 2:34 PM

//

#include <stdlib.h>

//

//

//

int main(int argc, char** argv) {

    Creature *players[2]

    int i=0,type,ii,j

    while(i<2)

    {

        cout<<"Chose creatures for fight: "<<endl

        cout<<"1. Gollum"<<endl

        cout<<"2. Barbarian"<<endl

        cout<<"3. Baba Yaga"<<endl

        cout<<"4. Blue Men"<<endl

        cout<<"5. Unicorn"<<endl

        cout<<"Input type: "

        cin>>type

        if((type>=1)&&(type<=5))

        {

            switch(type)

            {

                case 1: players[i]=new Gollum()

                        break

                case 2: players[i]=new Barbarian()

                        break

                case 3: players[i]=new BabaYaga()

                        break

                case 4: players[i]=new BlueMan()

                        break

                case 5: players[i]=new Unicorn()

                        break

        }

        i++

    }

    else

    cout<<"wrong choice!"

    }

    i=0

    Creature::checkEnemy(players[0],players[1]) //check pair UnicornUnicorn

    while(players[i]>getHealth()>0)

    {

        int lastAttack=players[1i]>Defense(players[i]>Attack())

        cout<<"Player "<<i+1<<" attack "<<endl

        cout<<"With result: "<<lastAttack<<endl

//repay for last attack for

        Baba Yaga:

        players[i]>addHealth(lastAttack)

        cout<<"So defense player is "

        players[1i]>print()

        if(i==0)

            i=1

        else

            i=0

    }

    if(players[i]>getHealth()>0)

        cout<<"Winner is "<<i+1          

    else

        cout<<"Winner is "<<2i

    return 0

    }

    return 0;

}