school/cs142/lab10/fighter.cpp

73 lines
1.4 KiB
C++

#include "fighter.h"
fighter::fighter(string name, int max_hp, int strength, int speed, int magic) :
name(name), max_hp(max_hp), hp(max_hp), strength(strength),
speed(speed), magic(magic) {}
string fighter::getName() {
return name;
}
int fighter::getMaximumHP() {
return max_hp;
}
int fighter::getCurrentHP() {
return hp;
}
int fighter::getStrength() {
return strength;
}
int fighter::getSpeed() {
return speed;
}
int fighter::getMagic() {
return magic;
}
void fighter::regenerate() {
int increase = strength / 6;
if(increase < 0) {
increase = 0;
}
else if(increase == 0) {
increase = 1;
}
if(hp + increase <= max_hp) {
hp += increase;
}
else {
hp = max_hp;
}
}
void fighter::takeDamage(int damage) {
int hurt = damage - (speed / 4);
if (hurt <= 0) {
hurt = 1;
}
hp -= hurt;
}
bool fighter::isSimplified() {
return false;
}
ostream & operator<<(ostream & os, fighter & f) {
os << "{\n"
<< " \"name\": \"" << f.name << "\",\n"
<< " \"type\": \"" << f.get_type() << "\",\n"
<< " \"hp\": " << f.hp << ",\n"
<< " \"max hp\": " << f.max_hp << ",\n"
<< " \"strength\": " << f.strength << ",\n"
<< " \"speed\": " << f.speed << ",\n"
<< " \"magic\": " << f.magic << ",\n"
<< "}";
return os;
}