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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.