From 7a9435b86951f00008bcee0666d3b75922652c94 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Mon, 21 Feb 2022 15:45:38 +0100 Subject: [PATCH] d03 ex01 refondus avec meilleurs gestion de la classe de base --- d03/ex01/ClapTrap.cpp | 118 +++++------- d03/ex01/ClapTrap.hpp | 11 +- d03/ex01/robots | Bin 38080 -> 38328 bytes d03/jodufour/Makefile | 78 ++++++++ d03/jodufour/ex01.out | Bin 0 -> 60376 bytes d03/jodufour/objs/class/ClapTrap.d | 3 + d03/jodufour/objs/class/ClapTrap.o | Bin 0 -> 33680 bytes d03/jodufour/objs/class/ScavTrap.d | 6 + d03/jodufour/objs/class/ScavTrap.o | Bin 0 -> 32448 bytes d03/jodufour/objs/main.d | 6 + d03/jodufour/objs/main.o | Bin 0 -> 24304 bytes d03/jodufour/private/class/ClapTrap.hpp | 59 ++++++ d03/jodufour/private/class/ScavTrap.hpp | 39 ++++ d03/jodufour/srcs/class/ClapTrap.cpp | 235 ++++++++++++++++++++++++ d03/jodufour/srcs/class/ScavTrap.cpp | 148 +++++++++++++++ d03/jodufour/srcs/main.cpp | 53 ++++++ 16 files changed, 683 insertions(+), 73 deletions(-) create mode 100644 d03/jodufour/Makefile create mode 100755 d03/jodufour/ex01.out create mode 100644 d03/jodufour/objs/class/ClapTrap.d create mode 100644 d03/jodufour/objs/class/ClapTrap.o create mode 100644 d03/jodufour/objs/class/ScavTrap.d create mode 100644 d03/jodufour/objs/class/ScavTrap.o create mode 100644 d03/jodufour/objs/main.d create mode 100644 d03/jodufour/objs/main.o create mode 100644 d03/jodufour/private/class/ClapTrap.hpp create mode 100644 d03/jodufour/private/class/ScavTrap.hpp create mode 100644 d03/jodufour/srcs/class/ClapTrap.cpp create mode 100644 d03/jodufour/srcs/class/ScavTrap.cpp create mode 100644 d03/jodufour/srcs/main.cpp diff --git a/d03/ex01/ClapTrap.cpp b/d03/ex01/ClapTrap.cpp index 5c857fb..248b3f4 100644 --- a/d03/ex01/ClapTrap.cpp +++ b/d03/ex01/ClapTrap.cpp @@ -1,88 +1,58 @@ #include "ClapTrap.hpp" -/* - * statics - */ +/********************************************* + * CONSTRUCTORS + *********************************************/ -int ClapTrap::_totalNumber = 0; - -/* - * assign values for default or secondary constructors - */ - -void ClapTrap::assignValues( ClapTrap & src ) { - src._class = "ClapTrap"; - src._hit = 10; - src._energy = 10; - src._attack = 1; - src._number = getNumber(); -} - -/* - * default/parametric constructor - */ - -ClapTrap::ClapTrap( void ) { - assignValues(*this); - std::cout << "claptrap default creation without name\n"; +ClapTrap::ClapTrap( std::string name ) { + ClapTrap::_increaseNumber(); + _name = name; + _class = _dClass; + _hit = _dHit; + _energy = _dEnergy; + _attack = _dAttack; + _number = getNumber(); + std::cout << _class << " " << _name << " nb:" << _number << " created\n"; return; } -/* - * destructor - */ - -ClapTrap::~ClapTrap( void ) { - std::cout << _class << " " << _name << " destructed\n"; - return; -} - -/* - * copy constructor - */ - ClapTrap::ClapTrap( ClapTrap const & src ) { *this = src; - std::cout << _class << " " << _name << " copied\n"; + std::cout << _class << " " << _name << " nb:" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; return; } -/* - * assignement operator - */ +/********************************************* + * DESTRUCTORS + *********************************************/ + +ClapTrap::~ClapTrap( void ) { + std::cout << _class << " " << _name << " nb:" << _number << " destructed\n"; + return; +} + +/********************************************* + * OPERATORS + *********************************************/ ClapTrap & ClapTrap::operator=( ClapTrap const & rhs ) { if ( this != &rhs ) { - ClapTrap::_increaseNumber(); - _number = getNumber(); - _class = "ClapTrap"; _hit = rhs.getHit(); _energy = rhs.getEnergy(); _attack = rhs.getAttack(); _name = rhs.getName(); } - std::cout << _class << " " << _name << " assigned\n"; + std::cout << _class << " " << _name << " nb:" << _number << " assigned\n"; return *this; } -/* - * parameters constructor - */ - -ClapTrap::ClapTrap( std::string name ) : _name(name) { - ClapTrap::_increaseNumber(); - assignValues(*this); - std::cout << _class << " " << _name << " named creation with number " << _number << "\n"; - return; -} - -/* - * getters - */ +/********************************************* + * ACCESSORS + *********************************************/ std::string ClapTrap::getName() const {return _name;} std::string ClapTrap::getClass() const {return _class;} @@ -92,9 +62,9 @@ int ClapTrap::getAttack() const {return _attack;} int ClapTrap::getNumber() const {return ClapTrap::_totalNumber;} void ClapTrap::_increaseNumber() {ClapTrap::_totalNumber++;} -/* - * robots - */ +/********************************************* + * PUBLIC MEMBER FUNCTIONS + *********************************************/ void ClapTrap::attack(const std::string & target) { @@ -132,20 +102,15 @@ void ClapTrap::takeDamage(unsigned int amount) { state << B_CYAN "[" B_GREEN << _class[0] << _number << B_PURPLE "h,e,a" B_CYAN ":" B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "->"; action << _class << " " << _name; - if (_energy > 0 && _hit > 0) + if (_hit > 0) { _hit -= amount; if (_hit < 0) _hit = 0; action << " looses " B_YELLOW << amount << RESET << " hit points" << '\n'; } - else - { - if (_energy <= 0) - action << " cannot take damage because " B_RED " is out of energy" RESET "\n"; - else if (_hit <= 0) - action << " cannot take damage because " B_RED " is out of hit" RESET "\n"; - } + else if (_hit <= 0) + action << " cannot take damage because " B_RED " is out of hit" RESET "\n"; state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; std::cout << state.str() << action.str(); @@ -178,3 +143,16 @@ void ClapTrap::beRepaired(unsigned int amount) { state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; std::cout << state.str() << action.str(); } + +/********************************************* + * STATICS + *********************************************/ + +int ClapTrap::_totalNumber = 0; + +std::string const ClapTrap::_dName = "robot"; +std::string const ClapTrap::_dClass = "ClapTrap"; +int const ClapTrap::_dHit = 10; +int const ClapTrap::_dEnergy = 10; +int const ClapTrap::_dAttack = 0; + diff --git a/d03/ex01/ClapTrap.hpp b/d03/ex01/ClapTrap.hpp index 63eec37..40d1916 100644 --- a/d03/ex01/ClapTrap.hpp +++ b/d03/ex01/ClapTrap.hpp @@ -10,7 +10,7 @@ class ClapTrap { public: - ClapTrap( std::string name ); + ClapTrap( std::string name = ClapTrap::_dName ); ClapTrap( ClapTrap const & src ); // copy constructor ~ClapTrap( void ); // destructor @@ -38,13 +38,18 @@ protected: void _increaseNumber(); - ClapTrap( void ); // default/parametric constructor - private: void assignValues(ClapTrap & src); static int _totalNumber; + static const std::string _dName; + static const std::string _dClass; + static const int _dHit; + static const int _dEnergy; + static const int _dAttack; + static const int _dNumber; + }; #endif diff --git a/d03/ex01/robots b/d03/ex01/robots index b7594480abe17864d575ba8230c2bc9ccca1f51c..524ea858daae38be70dd24d8332521f742742f6e 100755 GIT binary patch literal 38328 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 diff --git a/d03/jodufour/Makefile b/d03/jodufour/Makefile new file mode 100644 index 0000000..8f35f9d --- /dev/null +++ b/d03/jodufour/Makefile @@ -0,0 +1,78 @@ +###################################### +# COMMANDS # +###################################### +CXX = c++ -c +LINK = c++ +MKDIR = mkdir -p +RM = rm -rf + +###################################### +# EXECUTABLE # +###################################### +NAME = ex01.out + +####################################### +# DIRECTORIES # +####################################### +SRC_DIR = srcs/ +OBJ_DIR = objs/ +PRV_DIR = private/ + +###################################### +# SOURCE FILES # +###################################### +SRC = \ + ${addprefix class/, \ + ClapTrap.cpp \ + ScavTrap.cpp \ + } \ + main.cpp + +###################################### +# OBJECT FILES # +###################################### +OBJ = ${SRC:.cpp=.o} +OBJ := ${addprefix ${OBJ_DIR}, ${OBJ}} + +DEP = ${OBJ:.o=.d} + +####################################### +# FLAGS # +####################################### +CPPFLAGS = -Wall -Wextra -Werror +CPPFLAGS += -std=c++98 +CPPFLAGS += -MMD -MP +CPPFLAGS += -I${PRV_DIR} + +LDFLAGS = + +ifeq (${DEBUG}, 1) + CPPFLAGS += -g + CPPFLAGS += -DDEBUG=1 +endif + +####################################### +# RULES # +####################################### +${NAME}: ${OBJ} + ${LINK} ${OBJ} ${LDFLAGS} ${OUTPUT_OPTION} + +all: ${NAME} + +-include ${DEP} + +${OBJ_DIR}%.o: ${SRC_DIR}%.cpp + @${MKDIR} ${@D} + ${CXX} ${CPPFLAGS} $< ${OUTPUT_OPTION} + +clean: + ${RM} ${OBJ_DIR} ${NAME} vgcore.* + +fclean: + ${RM} ${OBJ_DIR} ${NAME} vgcore.* + +re: clean all + +fre: fclean all + +.PHONY: all clean fclean re fre diff --git a/d03/jodufour/ex01.out b/d03/jodufour/ex01.out new file mode 100755 index 0000000000000000000000000000000000000000..37ca85ed1c5de9cda5ccb5f328d0b4e8957343ed GIT binary patch literal 60376 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 UkEYpyBwgCUYdHF-2d>l&h&&Z6*S9eQn=6 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 N=dRceL)q2;e*l_kVIlwk literal 0 HcmV?d00001 diff --git a/d03/jodufour/objs/class/ScavTrap.d b/d03/jodufour/objs/class/ScavTrap.d new file mode 100644 index 0000000..9523dbf --- /dev/null +++ b/d03/jodufour/objs/class/ScavTrap.d @@ -0,0 +1,6 @@ +objs/class/ScavTrap.o: srcs/class/ScavTrap.cpp private/class/ScavTrap.hpp \ + private/class/ClapTrap.hpp + +private/class/ScavTrap.hpp: + +private/class/ClapTrap.hpp: diff --git a/d03/jodufour/objs/class/ScavTrap.o b/d03/jodufour/objs/class/ScavTrap.o new file mode 100644 index 0000000000000000000000000000000000000000..13f80e8e5bffd502b17c86504e276bb5a62b7e50 GIT binary patch literal 32448 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 literal 0 HcmV?d00001 diff --git a/d03/jodufour/objs/main.d b/d03/jodufour/objs/main.d new file mode 100644 index 0000000..b22d75a --- /dev/null +++ b/d03/jodufour/objs/main.d @@ -0,0 +1,6 @@ +objs/main.o: srcs/main.cpp private/class/ScavTrap.hpp \ + private/class/ClapTrap.hpp + +private/class/ScavTrap.hpp: + +private/class/ClapTrap.hpp: diff --git a/d03/jodufour/objs/main.o b/d03/jodufour/objs/main.o new file mode 100644 index 0000000000000000000000000000000000000000..ab06d7a180446a912a9253eb509536c1a04c9878 GIT binary patch literal 24304 zcmb`P3w%_?)xc->W;Y4DNj3>j@ez@yNFKaIq!^T7A_zzTt)S~>vq@GryX!vkKoNXY zO##6NidvD@_g6)Hpok*2YVpx3+LqeZTJ^(LT5Ww*>yz)CGiUD3PIkYaeaw&CGxMJ_ zXU?2EckbNXyR2%MH^=F42$dXSrpS~O72<=_Gx>VT){8?yb4g?0JB=5=_ogMpo`$cm zqH*2IO^toKR)2Ny;JZ{_vk~)8a@`h!2e|Z9SQ+tm+WPETO>O^N9!2#s$-vOt~#!j9rxq?02)@K!$z52 z^LVoNYk6|Mjcy!u`*xk7d5wAHbq`c$`fFUbYm>CykM{#;Sb6P}oh;Nk!My5Zs8Us- znI=2w$NK>^Or209V6JRZpt0{KjeYAHp%-a%%`VIvXHB)j{-m$es$Oe_d7~9XVH;40 z+B6Wd-I|St}&}Eztwg$TNmos8=J$eE%_A2^7XK zRvBtsvk~)Z3>y?zKC!R;ct3!KWmMMfvLmZo$r@ROZ|YyH1bP2q1psF#RR#0&A#ZAuh|!xqTAGzKG6Pc zOlMyb%7}ek92kK{Wb{WgmZZy%APf?>a4PP~0{0we?&U!j)I(mwxuo%d;6n7c?H7hrexyHUdBvFqN?XPGF#iG=)i;c7vVnyRlJYpi1vz{(H;xZ~? z`*$COA)fWLIA}fLbUfr7S9;|DF{9+h0b+hJS^2g{eCG5*{yMAddawAYReqOOyk=GI@QM#CFXY!1Onc8O zUMML0+AIE9P<~a3xXM*|Yl*ni<%RqoT;;zk5g)rM_m_w@ZZG8TcDHXT6ZAqp=Py`9XHp&<<&IIM zl`gB)H)MEexns!?A)LoKtWqJY$-*jas+{gQ-s2n^1yJAwK4X{=E~jIv$13%Bpw1

md>Zqv_yAq-TI})O@QlPbgmEb3N2~7ssUV5fM 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 B2D$(M literal 0 HcmV?d00001 diff --git a/d03/jodufour/private/class/ClapTrap.hpp b/d03/jodufour/private/class/ClapTrap.hpp new file mode 100644 index 0000000..3597dcf --- /dev/null +++ b/d03/jodufour/private/class/ClapTrap.hpp @@ -0,0 +1,59 @@ +#ifndef CLAPTRAP_HPP +# define CLAPTRAP_HPP + +# include + +# ifndef DEBUG +# define DEBUG 0 +# endif + +class ClapTrap +{ +private: + // Attributes + static std::string const _defaultName; + static unsigned int const _defaultHitPoints; + static unsigned int const _defaultEnergyPoints; + static unsigned int const _defaultAttackDamages; + +protected: + // Attributes + std::string _name; + unsigned int _hitPoints; + unsigned int _energyPoints; + unsigned int _attackDamages; + + // Constructors + ClapTrap( + std::string const &name, + unsigned int const hitPoints, + unsigned int const energyPoints, + unsigned int const attackDamages); + +public: + // Constructors + ClapTrap(std::string const &name = ClapTrap::_defaultName); + ClapTrap(ClapTrap const &src); + + // Destructors + virtual ~ClapTrap(void); + + // Accessors + std::string const &getName(void) const; + + unsigned int getHitPoints(void) const; + unsigned int getEnergyPoints(void) const; + unsigned int getAttackDamages(void) const; + + // Member functions + virtual void attack(std::string const &target); + void beRepaired(unsigned int const amount); + void takeDamage(unsigned int const amount); + + // Operators + ClapTrap &operator=(ClapTrap const &rhs); +}; + +std::ostream &operator<<(std::ostream &o, ClapTrap const &rhs); + +#endif diff --git a/d03/jodufour/private/class/ScavTrap.hpp b/d03/jodufour/private/class/ScavTrap.hpp new file mode 100644 index 0000000..cad8a2a --- /dev/null +++ b/d03/jodufour/private/class/ScavTrap.hpp @@ -0,0 +1,39 @@ +#ifndef SCAVTRAP_HPP +# define SCAVTRAP_HPP + +# include "ClapTrap.hpp" + +# ifndef DEBUG +# define DEBUG 0 +# endif + +class ScavTrap : public ClapTrap +{ +private: + // Attributes + bool _activeMode; + + static std::string const _defaultName; + static unsigned int const _defaultHitPoints; + static unsigned int const _defaultEnergyPoints; + static unsigned int const _defaultAttackDamages; + +public: + // Constructors + ScavTrap(std::string const &name = ScavTrap::_defaultName); + ScavTrap(ScavTrap const &src); + + // Destructors + virtual ~ScavTrap(void); + + // Member functions + virtual void attack(std::string const &target); + void guardGate(void); + + // Operators + ScavTrap &operator=(ScavTrap const &rhs); +}; + +std::ostream &operator<<(std::ostream &o, ScavTrap const &rhs); + +#endif diff --git a/d03/jodufour/srcs/class/ClapTrap.cpp b/d03/jodufour/srcs/class/ClapTrap.cpp new file mode 100644 index 0000000..9733927 --- /dev/null +++ b/d03/jodufour/srcs/class/ClapTrap.cpp @@ -0,0 +1,235 @@ +#include "class/ClapTrap.hpp" + +// ************************************************************************** // +// Constructors // +// ************************************************************************** // + +ClapTrap::ClapTrap(std::string const &name) : + _name(name), + _hitPoints(ClapTrap::_defaultHitPoints), + _energyPoints(ClapTrap::_defaultEnergyPoints), + _attackDamages(ClapTrap::_defaultAttackDamages) +{ + if (DEBUG) + std::cout + << "Creating ClapTrap " + << this->_name + << " (" << this->_hitPoints << ")" + << " (" << this->_energyPoints << ")" + << " (" << this->_attackDamages << ")" + << std::endl; +} + +ClapTrap::ClapTrap(ClapTrap const &src) : + _name(src._name), + _hitPoints(src._hitPoints), + _energyPoints(src._energyPoints), + _attackDamages(src._attackDamages) +{ + if (DEBUG) + std::cout + << "Creating ClapTrap " + << this->_name + << " (" << this->_hitPoints << ")" + << " (" << this->_energyPoints << ")" + << " (" << this->_attackDamages << ")" + << std::endl; +} + +ClapTrap::ClapTrap( + std::string const &name, + unsigned int const hitPoints, + unsigned int const energyPoints, + unsigned int const attackDamages) : + _name(name), + _hitPoints(hitPoints), + _energyPoints(energyPoints), + _attackDamages(attackDamages) +{ + if (DEBUG) + std::cout + << "Creating ClapTrap " + << this->_name + << " (" << this->_hitPoints << ")" + << " (" << this->_energyPoints << ")" + << " (" << this->_attackDamages << ")" + << std::endl; +} + +// ************************************************************************* // +// Destructors // +// ************************************************************************* // + +ClapTrap::~ClapTrap(void) +{ + if (DEBUG) + std::cout + << "Destroying ClapTrap " + << this->_name + << std::endl; +} + +// ************************************************************************* // +// Accessors // +// ************************************************************************* // + +std::string const &ClapTrap::getName(void) const +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::getName()" + << std::endl; + return this->_name; +} + +unsigned int ClapTrap::getHitPoints(void) const +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::getHitPoints()" + << std::endl; + return this->_hitPoints; +} + +unsigned int ClapTrap::getEnergyPoints(void) const +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::getEnergyPoints()" + << std::endl; + return this->_energyPoints; +} + +unsigned int ClapTrap::getAttackDamages(void) const +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::getAttackDamages()" + << std::endl; + return this->_attackDamages; +} + +// ************************************************************************* // +// Public Member Functions // +// ************************************************************************* // + +void ClapTrap::attack(std::string const &target) +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::attack()" + << std::endl; + std::cout + << "ClapTrap " + << this->_name; + if (this->_hitPoints && this->_energyPoints) + std::cout + << " deals " + << this->_attackDamages + << " damages to "; + else if (!this->_hitPoints) + std::cout + << " hasn't enough hit points to attack "; + else + std::cout + << " hasn't enough energy points to attack "; + std::cout + << target + << std::endl; + this->_energyPoints -= !!this->_energyPoints; +} + +void ClapTrap::beRepaired(unsigned int const amount) +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::beRepaired()" + << std::endl; + std::cout + << "ClapTrap " + << this->_name; + if (this->_hitPoints && this->_energyPoints) + { + std::cout + << " repairs itself for an amount of " + << amount; + this->_hitPoints += amount; + } + else if (!this->_hitPoints) + std::cout + << " hasn't enough hit points to repair itself"; + else + std::cout + << " hasn't enough energy points to repair itself"; + std::cout << std::endl; + this->_energyPoints -= !!this->_energyPoints; +} + +void ClapTrap::takeDamage(unsigned int const amount) +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::takeDamage()" + << std::endl; + std::cout + << "ClapTrap " + << this->_name; + if (this->_hitPoints && this->_energyPoints) + { + std::cout + << " takes " + << amount + << " damages"; + if (this->_hitPoints < amount) + this->_hitPoints = 0; + else + this->_hitPoints -= amount; + } + else if (!this->_hitPoints) + std::cout + << " hasn't enough hit points to take damages"; + else + std::cout + << " hasn't enough energy points to take damages"; + std::cout << std::endl; +} + +// ************************************************************************* // +// Operators // +// ************************************************************************* // + +ClapTrap &ClapTrap::operator=(ClapTrap const &rhs) +{ + if (DEBUG) + std::cout + << "Calling ClapTrap::operator=()" + << std::endl; + if (this != &rhs) + { + this->_name = rhs._name; + this->_hitPoints = rhs._hitPoints; + this->_energyPoints = rhs._energyPoints; + this->_attackDamages = rhs._attackDamages; + } + return *this; +} + +std::ostream &operator<<(std::ostream &o, ClapTrap const &rhs) +{ + o + << "ClapTrap:" << std::endl + << "\t" "name: " << rhs.getName() << std::endl + << "\t" "hitPoints: " << rhs.getHitPoints() << std::endl + << "\t" "energyPoints: " << rhs.getEnergyPoints() << std::endl + << "\t" "attackDamages: " << rhs.getAttackDamages() << std::endl; + return o; +} + +// ************************************************************************** // +// Private Attributes // +// ************************************************************************** // + +std::string const ClapTrap::_defaultName = std::string("defaultName"); +unsigned int const ClapTrap::_defaultHitPoints = 10; +unsigned int const ClapTrap::_defaultEnergyPoints = 10; +unsigned int const ClapTrap::_defaultAttackDamages = 0; diff --git a/d03/jodufour/srcs/class/ScavTrap.cpp b/d03/jodufour/srcs/class/ScavTrap.cpp new file mode 100644 index 0000000..441f9e3 --- /dev/null +++ b/d03/jodufour/srcs/class/ScavTrap.cpp @@ -0,0 +1,148 @@ +#include "class/ScavTrap.hpp" + +// ************************************************************************** // +// Constructors // +// ************************************************************************** // + +ScavTrap::ScavTrap(std::string const &name) : + ClapTrap( + name, + ScavTrap::_defaultHitPoints, + ScavTrap::_defaultEnergyPoints, + ScavTrap::_defaultAttackDamages), + _activeMode(false) +{ + if (DEBUG) + std::cout + << std::boolalpha + << "Creating ScavTrap " + << this->_name + << " (" << this->_hitPoints << ")" + << " (" << this->_energyPoints << ")" + << " (" << this->_attackDamages << ")" + << " (" << this->_activeMode << ")" + << std::endl; +} + +ScavTrap::ScavTrap(ScavTrap const &src) : + ClapTrap( + src._name, + src._hitPoints, + src._energyPoints, + src._attackDamages) +{ + if (DEBUG) + std::cout + << std::boolalpha + << "Creating ScavTrap " + << this->_name + << " (" << this->_hitPoints << ")" + << " (" << this->_energyPoints << ")" + << " (" << this->_attackDamages << ")" + << " (" << this->_activeMode << ")" + << std::endl; +} + +// ************************************************************************* // +// Destructors // +// ************************************************************************* // + +ScavTrap::~ScavTrap(void) +{ + if (DEBUG) + std::cout + << "Destroying ScavTrap " + << this->_name + << std::endl; +} + +// ************************************************************************* // +// Public Member Functions // +// ************************************************************************* // + +void ScavTrap::attack(std::string const &target) +{ + if (DEBUG) + std::cout + << "Calling ScavTrap::attack()" + << std::endl; + std::cout + << "ScavTrap " + << this->_name; + if (this->_hitPoints && this->_energyPoints) + std::cout + << " deals " + << this->_attackDamages + << " damages to "; + else if (!this->_hitPoints) + std::cout + << " hasn't enough hit points to attack "; + else + std::cout + << " hasn't enough energy points to attack "; + std::cout + << target + << std::endl; + this->_energyPoints -= !!this->_energyPoints; +} + +void ScavTrap::guardGate(void) +{ + if (DEBUG) + std::cout + << "Calling ScavTrap::guardGate()" + << std::endl; + std::cout + << "ScavTrap " + << this->_name; + if (!this->_activeMode) + std::cout + << " enters "; + else + std::cout + << " leaves "; + std::cout + << "Gate keeper mode" + << std::endl; + this->_activeMode ^= true; +} + +// ************************************************************************* // +// Operators // +// ************************************************************************* // + +ScavTrap &ScavTrap::operator=(ScavTrap const &rhs) +{ + if (DEBUG) + std::cout + << "Calling ScavTrap::operator=()" + << std::endl; + if (this != &rhs) + { + this->_name = rhs._name; + this->_hitPoints = rhs._hitPoints; + this->_energyPoints = rhs._energyPoints; + this->_attackDamages = rhs._attackDamages; + this->_activeMode = rhs._activeMode; + } + return *this; +} + +std::ostream &operator<<(std::ostream &o, ScavTrap const &rhs) +{ + o << "ScavTrap:" << std::endl + << "\t" "name: " << rhs.getName() << std::endl + << "\t" "hitPoints: " << rhs.getHitPoints() << std::endl + << "\t" "energyPoints: " << rhs.getEnergyPoints() << std::endl + << "\t" "attackDamages: " << rhs.getAttackDamages() << std::endl; + return o; +} + +// ************************************************************************** // +// Private Attributes // +// ************************************************************************** // + +std::string const ScavTrap::_defaultName = std::string("defaultName"); +unsigned int const ScavTrap::_defaultHitPoints = 100; +unsigned int const ScavTrap::_defaultEnergyPoints = 50; +unsigned int const ScavTrap::_defaultAttackDamages = 20; diff --git a/d03/jodufour/srcs/main.cpp b/d03/jodufour/srcs/main.cpp new file mode 100644 index 0000000..dfe9c25 --- /dev/null +++ b/d03/jodufour/srcs/main.cpp @@ -0,0 +1,53 @@ +#include +#include "class/ScavTrap.hpp" + +int main(void) +{ + ClapTrap robot1("robot1"); + ScavTrap robot2("robot2"); + ScavTrap robot3("robot3"); + ClapTrap robot4("robot4"); + +std::cout << "\nassignement 1:\n"; + ScavTrap robotmp1("robot5"); + robotmp1.guardGate(); +std::cout << "copy:\n"; + ClapTrap robot6(robotmp1); // PBM : it says it's a ScavTrap but it has no guardGate()... +// robot6.guardGate(); +std::cout << "END assignement 1:\n\n"; + +//std::cout << "assignement 2:\n"; +// ScavTrap robotmp2("robot7"); +// ScavTrap robot8(robotmp2); +// robot8.guardGate(); +// +//std::cout << "assignement 3:\n"; +// ClapTrap robotmp3("robot9"); // PBM : assignation doesn't work... +//// ScavTrap robot10(robotmp3); +//// robot10.guardGate(); +// +//std::cout << "assignement 4:\n"; +// ClapTrap robotmp4("robot11"); +// ClapTrap robot12(robotmp4); +//// robot12.guardGate(); + + + + ClapTrap ct(std::string("T800")); + ScavTrap st(std::string("T1000")); + + std::cout << ct << std::endl; + std::cout << st << std::endl; + + st = ScavTrap(std::string("TX")); + + std::cout << st << std::endl; + + st.attack(std::string("Sarah CONNOR")); + + st.guardGate(); + st.guardGate(); + st.guardGate(); + + return EXIT_SUCCESS; +}