feat(ex02): it works

This commit is contained in:
Khaïs COLIN 2025-05-19 15:44:16 +02:00
parent 6254cbc7bd
commit 5cd051a7f7
Signed by: logistic-bot
SSH key fingerprint: SHA256:RlpiqKeXpcPFZZ4y9Ou4xi2M8OhRJovIwDlbCaMsuAo
9 changed files with 254 additions and 0 deletions

59
ex02/ClapTrap.cpp Normal file
View file

@ -0,0 +1,59 @@
#include "ClapTrap.hpp"
#include <iostream>
ClapTrap::ClapTrap()
: name("[name unset]"), hit_points(10), energy_points(10),
attack_damage(0) {
std::cout << "ClapTrap::ClapTrap()" << std::endl;
}
ClapTrap::ClapTrap(std::string name)
: name(name), hit_points(10), energy_points(10), attack_damage(0) {
std::cout << "ClapTrap::ClapTrap(" << name << ")" << std::endl;
}
ClapTrap::~ClapTrap() { std::cout << "ClapTrap::~ClapTrap()" << std::endl; }
ClapTrap &ClapTrap::operator=(const ClapTrap &other) {
std::cout << "ClapTrap::operator=()" << std::endl;
name = other.name;
hit_points = other.hit_points;
energy_points = other.energy_points;
attack_damage = other.attack_damage;
return *this;
}
void ClapTrap::attack(const std::string &target) {
if (energy_points > 0) {
std::cout << "ClapTrap " << name << " attacks " << target << ", causing "
<< attack_damage << " points of damage!" << std::endl;
energy_points--;
} else {
std::cout << "ClapTrap " << name << " tries to attack " << target
<< ", but has no more energy! " << std::endl;
}
}
void ClapTrap::takeDamage(unsigned int amount) {
std::cout << "ClapTrap " << name << " took " << amount << " points of damage!"
<< std::endl;
if (amount > hit_points)
amount = hit_points;
hit_points -= amount;
if (hit_points == 0)
std::cout << "ClapTrap " << name << " died!" << std::endl;
}
void ClapTrap::beRepaired(unsigned int amount) {
if (energy_points > 0) {
std::cout << "ClapTrap " << name << " is repaired for " << amount
<< " hit points!" << std::endl;
hit_points += amount;
energy_points--;
} else {
std::cout << "ClapTrap " << name
<< " tries to repair itself, but has no more energy! "
<< std::endl;
}
}