#include "creature.h" #include #include using namespace std; Creature::Creature() { hp=100; attack=10; defence=0; exp=0; level = 1; gender = false; name = new char[8]; strcpy (name, "Zdravko"); mana = 50; } Creature::Creature(unsigned int _hp, int _attack, int _defence, char* _name,unsigned int _mana, bool _gender) { if (_hp == 0) hp = 100; else hp = _hp; attack = _attack; defence = _defence; mana = _mana; gender = _gender; level = 1; name = new char[strlen(_name) + 1]; strcpy (name, _name); } Creature::~Creature () { delete [] name; } unsigned int Creature::getHp() const { return hp; } int Creature::getAttack() const { return attack; } int Creature::getDefence() const { return defence; } void Creature::setExp(int _exp) { if(_exp>0) exp+=_exp; } char const* Creature::getName() const { return name; } void Creature::print() const { cout << "Name: " << name << endl; cout << "Health: " << hp << endl; cout << "Mana: " << mana << endl; cout << "Attack: " << attack << endl; cout << "Defense: " << defence << endl; cout << "Level: " << level << endl; cout << "Exp : " << exp << endl; cout << "Gender: " << (gender ? "Female" : "Male") << endl; cout << "Size: " << sizeof((*this)) << " bytes" << endl; } int Creature::receiveDamage(int damage){ int temp = (0.1 * damage); if ((0.9*damage - defence) > 0) temp += (0.9*damage - defence); if (temp >= 0 && hp <= temp) hp = 0; else hp -= temp; return 0; } void Creature::attack_creature(Creature& c) { hp -= c.receiveDamage(attack); } bool Creature::addItem(const Item& a){ inventory.add(a); return true; } bool Creature::delItem(const char* a) { for(int i = 0; i < inventory.size(); i++) if(!strcmp(inventory.at(i).getName(),a)) { inventory.del(i); return true; } return false; } Creature::Creature(const Creature& a): hp(a.hp) , attack (a.attack), defence(a.defence) , exp (a.exp), level(a.level) , gender(a.gender) , mana(a.mana), inventory(a.inventory) { name = new char[strlen(a.name) + 1]; strcpy (name, a.name); } Creature& Creature::operator=(const Creature& c) { if(this!= &c){ delete []name; hp=c.hp; attack=c.attack; defence=c.defence; exp=c.exp; level = c.level; gender =c.gender; name=new char [strlen(c.name)+1]; strcpy (name, c.name); mana = c.mana; inventory=c.inventory; } return *this; }