diff --git a/d03/ex01/ClapTrap.cpp b/d03/ex01/ClapTrap.cpp index 6236989..d2ad79d 100644 --- a/d03/ex01/ClapTrap.cpp +++ b/d03/ex01/ClapTrap.cpp @@ -11,7 +11,7 @@ ClapTrap::ClapTrap( std::string name ) { _hit = _dHit; _energy = _dEnergy; _attack = _dAttack; - _number = ClapTrap::_totalNumber; + _number = getTotalNumber(); std::cout << _class << " " << _name << " nb:" << _number << " created\n"; return; } @@ -20,7 +20,8 @@ ClapTrap::ClapTrap( ClapTrap const & src ) { ClapTrap::_increaseNumber(); _class = _dClass; *this = src; - std::cout << _class << " " << _name << " nb:" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; + _number = getTotalNumber(); + std::cout << _class << " " << _name << "-" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; return; } @@ -29,7 +30,7 @@ ClapTrap::ClapTrap( ClapTrap const & src ) { *********************************************/ ClapTrap::~ClapTrap( void ) { - std::cout << _class << " " << _name << " nb:" << _number << " destructed\n"; + std::cout << _class << " " << _name << "-" << _number << " destructed\n"; return; } @@ -48,7 +49,7 @@ ClapTrap & ClapTrap::operator=( ClapTrap const & rhs ) { _number = rhs.getNumber(); } - std::cout << _class << " " << _name << " nb:" << _number << " assigned\n"; + std::cout << _class << " " << _name << "-" << _number << " assigned\n"; return *this; } @@ -63,6 +64,7 @@ int ClapTrap::getHit() const {return _hit;} int ClapTrap::getEnergy() const {return _energy;} int ClapTrap::getAttack() const {return _attack;} int ClapTrap::getNumber() const {return _number;} +int ClapTrap::getTotalNumber() const {return _totalNumber;} void ClapTrap::_increaseNumber() {ClapTrap::_totalNumber++;} /********************************************* diff --git a/d03/ex01/ClapTrap.hpp b/d03/ex01/ClapTrap.hpp index 40d1916..7238065 100644 --- a/d03/ex01/ClapTrap.hpp +++ b/d03/ex01/ClapTrap.hpp @@ -29,12 +29,14 @@ public: protected: - std::string _name; - std::string _class; - int _hit; - int _energy; - int _attack; - int _number; + int getTotalNumber() const; + + std::string _name; + std::string _class; + int _hit; + int _energy; + int _attack; + int _number; void _increaseNumber(); diff --git a/d03/ex01/Makefile b/d03/ex01/Makefile index 6c6c6d0..646ad10 100644 --- a/d03/ex01/Makefile +++ b/d03/ex01/Makefile @@ -7,7 +7,8 @@ NAME = robots CC = c++ -CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 +#CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 +CFLAGS = $(INCLUDES) -std=c++98 VPATH = $(D_SRCS) diff --git a/d03/ex01/ScavTrap.cpp b/d03/ex01/ScavTrap.cpp index 6edcea3..6eec95b 100644 --- a/d03/ex01/ScavTrap.cpp +++ b/d03/ex01/ScavTrap.cpp @@ -9,14 +9,15 @@ ScavTrap::ScavTrap( std::string name ) : ClapTrap(name) { _hit = _dHit; _energy = _dEnergy; _attack = _dAttack; - std::cout << _class << " " << _name << " nb:" << _number << " created\n"; + std::cout << _class << " " << _name << "-" << _number << " created\n"; return; } ScavTrap::ScavTrap( ScavTrap const & src ) : ClapTrap() { _class = _dClass; *this = src; - std::cout << _class << " " << _name << " nb:" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; + _number = getTotalNumber(); + std::cout << _class << " " << _name << "-" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; return; } @@ -25,7 +26,7 @@ ScavTrap::ScavTrap( ScavTrap const & src ) : ClapTrap() { *********************************************/ ScavTrap::~ScavTrap( void ) { - std::cout << _class << " " << _name << " nb:" << _number << " destructed\n"; + std::cout << _class << " " << _name << "-" << _number << " destructed\n"; return; } @@ -37,13 +38,15 @@ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { if ( this != &rhs ) { - _hit = rhs.getHit(); - _energy = rhs.getEnergy(); - _attack = rhs.getAttack(); - _name = rhs.getName(); + ClapTrap::operator=(rhs); +// _name = rhs.getName(); +// _hit = rhs.getHit(); +// _energy = rhs.getEnergy(); +// _attack = rhs.getAttack(); +// _name = rhs.getName(); } - std::cout << _class << " " << _name << " nb:" << _number << " assigned\n"; + std::cout << _class << "T " << _name << "-" << _number << " assigned\n"; return *this; } @@ -53,7 +56,7 @@ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { *********************************************/ void ScavTrap::guardGate() { - std::cout << _class << " " << _name << " entered special mode Gate Keeper\n"; + std::cout << _class << " " << _name << "-" << _number << " entered special mode Gate Keeper\n"; } /********************************************* diff --git a/d03/ex01/main.cpp b/d03/ex01/main.cpp index e0c8e88..f856305 100644 --- a/d03/ex01/main.cpp +++ b/d03/ex01/main.cpp @@ -46,33 +46,33 @@ void goAttack(ScavTrap & robot1, ClapTrap & robot2) { int main() { -// ClapTrap robot1("robot1"); -// ScavTrap robot2("robot2"); -// ScavTrap robot3("robot3"); -// ClapTrap robot4("robot4"); + ClapTrap robot1("robot1"); + ScavTrap robot2("robot2"); + robot2.guardGate(); + ScavTrap robot3("robot3"); + ClapTrap robot4("robot4"); -std::cout << "assignement 1:\n"; - ScavTrap robotmp1("robot5"); - robotmp1.guardGate(); - ClapTrap robot6(robotmp1); // PBM : it says it's a ScavTrap but it has no guardGate()... -// robot6.guardGate(); - goAttack(robot6, robotmp1); +std::cout << "\nassignement 1 (ClapTrap(ScavTrap)):\n"; + ClapTrap robot5(robot2); +// robot5.guardGate(); + goAttack(robot5, robot2); -//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(); -// +std::cout << "\nassignement 2 (ScavTrap(ScavTrap)):\n"; + ScavTrap robot6(robot2); + robot6.guardGate(); + goAttack(robot6, robot2); + robot2.takeDamage(robot6.getAttack()); + robot6 = robot6; + goAttack(robot6, robot2); + +std::cout << "\nassignement 3 (ScavTrap(ClapTrap)):\n"; +// ScavTrap robot7(robot1); + +std::cout << "\nassignement 4 (ClapTrap(ClapTrap)):\n"; + ClapTrap robot7(robot1); + goAttack(robot7, robot1); + +std::cout << "\nwar:\n"; // goAttack(robot1, robot2); // goAttack(robot2, robot1); // goAttack(robot1, robot3); diff --git a/d03/ex01/robots b/d03/ex01/robots index 62ff9ff..66b53a3 100755 Binary files a/d03/ex01/robots and b/d03/ex01/robots differ