fix(ex03): never construct more than one ClapTrap when constructing DiamondTrap

This commit is contained in:
Khaïs COLIN 2025-05-28 11:17:58 +02:00
parent 812791dc77
commit a843186f5e
Signed by: logistic-bot
SSH key fingerprint: SHA256:3zI3/tx0ZpCLHCLPmEaGR4oeYCPMCzQxXhXutBmtOAU
5 changed files with 33 additions and 18 deletions

View file

@ -1,12 +1,10 @@
#include "DiamondTrap.hpp" #include "DiamondTrap.hpp"
#include <iostream> #include <iostream>
DiamondTrap::DiamondTrap() : FragTrap(), ScavTrap() { DiamondTrap::DiamondTrap() {
const FragTrap fragtrap = FragTrap(); hit_points = FragTrap::default_hit_points;
energy_points = ScavTrap::default_energy_points;
hit_points = fragtrap.get_hit_points(); attack_damage = FragTrap::default_attack_damage;
energy_points = ScavTrap::energy_points;
attack_damage = fragtrap.get_attack_damage();
ClapTrap::name = name + "_clap_name"; ClapTrap::name = name + "_clap_name";
std::cout << "DiamondTrap::DiamondTrap()" << std::endl; std::cout << "DiamondTrap::DiamondTrap()" << std::endl;
@ -17,15 +15,14 @@ DiamondTrap::DiamondTrap(const DiamondTrap &other) {
hit_points = other.hit_points; hit_points = other.hit_points;
energy_points = other.energy_points; energy_points = other.energy_points;
attack_damage = other.attack_damage; attack_damage = other.attack_damage;
std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)" << std::endl; std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)"
<< std::endl;
} }
DiamondTrap::DiamondTrap(std::string name) : name(name) { DiamondTrap::DiamondTrap(std::string name) : name(name) {
const FragTrap fragtrap = FragTrap(name); hit_points = FragTrap::default_hit_points;
energy_points = ScavTrap::default_energy_points;
hit_points = fragtrap.get_hit_points(); attack_damage = FragTrap::default_attack_damage;
energy_points = ScavTrap::energy_points;
attack_damage = fragtrap.get_attack_damage();
ClapTrap::name = name + "_clap_name"; ClapTrap::name = name + "_clap_name";
std::cout << "DiamondTrap::DiamondTrap(" << name << ")" << std::endl; std::cout << "DiamondTrap::DiamondTrap(" << name << ")" << std::endl;

View file

@ -1,11 +1,15 @@
#include "FragTrap.hpp" #include "FragTrap.hpp"
#include <iostream> #include <iostream>
const unsigned int FragTrap::default_hit_points(100);
const unsigned int FragTrap::default_energy_points(100);
const unsigned int FragTrap::default_attack_damage(30);
FragTrap::FragTrap() { FragTrap::FragTrap() {
std::cout << "FragTrap::FragTrap()" << std::endl; std::cout << "FragTrap::FragTrap()" << std::endl;
hit_points = 100; hit_points = FragTrap::default_hit_points;
energy_points = 100; energy_points = FragTrap::default_energy_points;
attack_damage = 30; attack_damage = FragTrap::default_attack_damage;
} }
FragTrap::FragTrap(const FragTrap &other) { FragTrap::FragTrap(const FragTrap &other) {

View file

@ -12,6 +12,11 @@ public:
FragTrap &operator=(const FragTrap &other); FragTrap &operator=(const FragTrap &other);
void highFivesGuys(); void highFivesGuys();
protected:
static const unsigned int default_hit_points;
static const unsigned int default_energy_points;
static const unsigned int default_attack_damage;
}; };
#endif #endif

View file

@ -1,11 +1,15 @@
#include "ScavTrap.hpp" #include "ScavTrap.hpp"
#include <iostream> #include <iostream>
const unsigned int ScavTrap::default_hit_points(100);
const unsigned int ScavTrap::default_energy_points(50);
const unsigned int ScavTrap::default_attack_damage(20);
ScavTrap::ScavTrap() { ScavTrap::ScavTrap() {
std::cout << "ScavTrap::ScavTrap()" << std::endl; std::cout << "ScavTrap::ScavTrap()" << std::endl;
hit_points = 100; hit_points = ScavTrap::default_hit_points;
energy_points = 50; energy_points = ScavTrap::default_energy_points;
attack_damage = 20; attack_damage = ScavTrap::default_attack_damage;
} }
ScavTrap::ScavTrap(const ScavTrap &other) { ScavTrap::ScavTrap(const ScavTrap &other) {

View file

@ -12,6 +12,11 @@ public:
ScavTrap &operator=(const ScavTrap &other); ScavTrap &operator=(const ScavTrap &other);
void guardGate(); void guardGate();
protected:
static const unsigned int default_hit_points;
static const unsigned int default_energy_points;
static const unsigned int default_attack_damage;
}; };
#endif #endif