From 1640b9a15de46cb09ab2678b47a9acac3931e0ab Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Thu, 17 Feb 2022 15:31:05 +0100 Subject: [PATCH] d03 ex00 messages et actions plus au point --- d03/ex00/ClapTrap.cpp | 87 ++++++++++++++++++++++++++++++++---------- d03/ex00/ClapTrap.hpp | 1 + d03/ex00/action | Bin 19272 -> 28048 bytes d03/ex00/main.cpp | 40 +++++++++++++++++++ 4 files changed, 108 insertions(+), 20 deletions(-) diff --git a/d03/ex00/ClapTrap.cpp b/d03/ex00/ClapTrap.cpp index 0a6ec83..ba90105 100644 --- a/d03/ex00/ClapTrap.cpp +++ b/d03/ex00/ClapTrap.cpp @@ -5,6 +5,7 @@ */ ClapTrap::ClapTrap( void ) { + std::cout << "claptrap created without name\n"; return; } @@ -13,6 +14,7 @@ ClapTrap::ClapTrap( void ) { */ ClapTrap::~ClapTrap( void ) { + std::cout << "claptrap " << _name << " destructed\n"; return; } @@ -21,6 +23,7 @@ ClapTrap::~ClapTrap( void ) { */ ClapTrap::ClapTrap( ClapTrap const & src ) { + std::cout << "claptrap " << _name << " copied\n"; *this = src; return; } @@ -30,6 +33,7 @@ ClapTrap::ClapTrap( ClapTrap const & src ) { */ ClapTrap & ClapTrap::operator=( ClapTrap const & rhs ) { + std::cout << "claptrap " << _name << " assigned\n"; if ( this != &rhs ) { @@ -47,6 +51,7 @@ ClapTrap & ClapTrap::operator=( ClapTrap const & rhs ) { */ ClapTrap::ClapTrap( std::string name ) : _name(name) { + std::cout << "claptrap " << _name << " created\n"; _hit = 10; _energy = 10; _attack = 1; @@ -67,36 +72,78 @@ int ClapTrap::getAttack() const {return _attack;} */ void ClapTrap::attack(const std::string & target) { - std::cout << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; - _energy--; + std::ostringstream action; + std::ostringstream state; - std::cout << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET - << " ClapTrap " << _name - << " attacked " << target - << ", causing " B_YELLOW << _attack << RESET - << " points of damage!" << '\n'; + state << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; + action << " ClapTrap " << _name; + + if (_energy && _hit) + { + _energy--; + action << " attacked " << target << ", causing " B_YELLOW << _attack << RESET << " points of damage!" << '\n'; + } + else + { + _attack = 0; + if (!_energy) + action << "cannot attack because " B_RED " is out of energy\n" RESET; + else if (!_hit) + action << "cannot attack because " B_RED " is out of hit\n" RESET; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); } void ClapTrap::takeDamage(unsigned int amount) { - std::cout << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; - _hit -= amount; + std::ostringstream action; + std::ostringstream state; - std::cout << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET - << " ClapTrap " << _name - << " looses " B_YELLOW << amount << RESET - << " points of damage :/" << '\n'; + state << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; + action << " ClapTrap " << _name; + + if (_energy && _hit) + { + _hit -= amount; + action << " looses " B_YELLOW << amount << RESET << " points of damage :/" << '\n'; + } + else + { + if (!_energy) + action << "cannot take damage because " B_RED " is out of energy\n" RESET; + else if (!_hit) + action << "cannot take damage because " B_RED " is out of hit\n" RESET; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); } void ClapTrap::beRepaired(unsigned int amount) { - std::cout << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; - _energy--; - _hit += amount; + std::ostringstream action; + std::ostringstream state; - std::cout << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET - << " ClapTrap " << _name - << " repaired itself and gained " B_YELLOW << amount << RESET - << " points of life :)" << '\n'; + state << B_CYAN "[" B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; + action << " ClapTrap " << _name; + + if (_energy && _hit) + { + _energy--; + _hit += amount; + action << " repaired itself and gained " B_YELLOW << amount << RESET << " points of life :)" << '\n'; + } + else + { + if (!_energy) + action << "cannot repair itself because " B_RED " is out of energy\n" RESET; + else if (!_hit) + action << "cannot repair itself because " B_RED " is out of hit\n" RESET; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); } diff --git a/d03/ex00/ClapTrap.hpp b/d03/ex00/ClapTrap.hpp index d5cb57d..615c26f 100644 --- a/d03/ex00/ClapTrap.hpp +++ b/d03/ex00/ClapTrap.hpp @@ -2,6 +2,7 @@ # define CLAPTRAP_HPP #include +#include #include #include diff --git a/d03/ex00/action b/d03/ex00/action index eadfc6c2d4d7259bba377d1d052e29d086f18acc..12250c7887f6285e6b2175a9d580b2cd54dd16dc 100755 GIT binary patch literal 28048 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 f#P