diff --git a/d03/ex01/ClapTrap.cpp b/d03/ex01/ClapTrap.cpp index d2ad79d..54a4994 100644 --- a/d03/ex01/ClapTrap.cpp +++ b/d03/ex01/ClapTrap.cpp @@ -1,5 +1,16 @@ #include "ClapTrap.hpp" +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + /********************************************* * CONSTRUCTORS *********************************************/ @@ -12,7 +23,7 @@ ClapTrap::ClapTrap( std::string name ) { _energy = _dEnergy; _attack = _dAttack; _number = getTotalNumber(); - std::cout << _class << " " << _name << " nb:" << _number << " created\n"; + std::cout << _class << " " << _name << "-" << _number << " created\n"; return; } @@ -21,7 +32,7 @@ ClapTrap::ClapTrap( ClapTrap const & src ) { _class = _dClass; *this = src; _number = getTotalNumber(); - std::cout << _class << " " << _name << "-" << _number << " copied from " << src._class << "-" << src._name << "-" << src._number << "\n"; + std::cout << _class << " " << _name << "-" << _number << " copied from " << src._class << " " << src._name << "-" << src._number << "\n"; return; } @@ -77,7 +88,7 @@ void ClapTrap::attack(const std::string & target) { std::ostringstream state; 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; + action << _class << " " << _name << "-" << _number; if (_energy > 0 && _hit > 0) { @@ -105,7 +116,7 @@ void ClapTrap::takeDamage(unsigned int amount) { std::ostringstream state; 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; + action << _class << " " << _name << "-" << _number; if (_hit > 0) { @@ -127,7 +138,7 @@ void ClapTrap::beRepaired(unsigned int amount) { std::ostringstream state; 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; + action << _class << " " << _name << "-" << _number; if (_energy > 0 && _hit > 0) { diff --git a/d03/ex01/ClapTrap.hpp b/d03/ex01/ClapTrap.hpp index 7238065..a0beeca 100644 --- a/d03/ex01/ClapTrap.hpp +++ b/d03/ex01/ClapTrap.hpp @@ -4,7 +4,6 @@ #include #include #include -#include class ClapTrap { diff --git a/d03/ex01/Makefile b/d03/ex01/Makefile index 646ad10..6c6c6d0 100644 --- a/d03/ex01/Makefile +++ b/d03/ex01/Makefile @@ -7,8 +7,7 @@ NAME = robots CC = c++ -#CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 -CFLAGS = $(INCLUDES) -std=c++98 +CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 VPATH = $(D_SRCS) diff --git a/d03/ex01/ScavTrap.cpp b/d03/ex01/ScavTrap.cpp index 6eec95b..fa611e7 100644 --- a/d03/ex01/ScavTrap.cpp +++ b/d03/ex01/ScavTrap.cpp @@ -13,7 +13,7 @@ ScavTrap::ScavTrap( std::string name ) : ClapTrap(name) { return; } -ScavTrap::ScavTrap( ScavTrap const & src ) : ClapTrap() { +ScavTrap::ScavTrap( ScavTrap const & src ) { _class = _dClass; *this = src; _number = getTotalNumber(); @@ -35,20 +35,8 @@ ScavTrap::~ScavTrap( void ) { *********************************************/ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { - - if ( this != &rhs ) - { - ClapTrap::operator=(rhs); -// _name = rhs.getName(); -// _hit = rhs.getHit(); -// _energy = rhs.getEnergy(); -// _attack = rhs.getAttack(); -// _name = rhs.getName(); - } - - std::cout << _class << "T " << _name << "-" << _number << " assigned\n"; + ClapTrap::operator=(rhs); return *this; - } /********************************************* diff --git a/d03/ex01/color.h b/d03/ex01/color.h deleted file mode 100644 index e313f5f..0000000 --- a/d03/ex01/color.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef COLOR_H -# define COLOR_H - -# define GRAY "\e[0;30m" -# define RED "\e[0;31m" -# define GREEN "\e[0;32m" -# define YELLOW "\e[0;33m" -# define BLUE "\e[0;34m" -# define PURPLE "\e[0;35m" -# define CYAN "\e[0;36m" -# define WHITE "\e[0;37m" - -# define B_GRAY "\e[1;30m" -# define B_RED "\e[1;31m" -# define B_GREEN "\e[1;32m" -# define B_YELLOW "\e[1;33m" -# define B_BLUE "\e[1;34m" -# define B_PURPLE "\e[1;35m" -# define B_CYAN "\e[1;36m" -# define B_WHITE "\e[1;37m" - -# define RESET "\e[0m" - -#endif diff --git a/d03/ex01/main.cpp b/d03/ex01/main.cpp index f856305..82ebc00 100644 --- a/d03/ex01/main.cpp +++ b/d03/ex01/main.cpp @@ -1,47 +1,34 @@ +#include "ClapTrap.hpp" #include "ScavTrap.hpp" -void goAttack(ClapTrap & robot1, ClapTrap & robot2) { +#include +#include +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +# define COLOR1 B_YELLOW + +template < typename U, typename V > +void goAttack(U & robot1, V & robot2) { + std::stringstream ss; + std::string num; + ss << robot2.getNumber(); + ss >> num; std::cout << "."; - robot1.attack(robot2.getName()); + robot1.attack(robot2.getName() + "-" + num); std::cout << " "; robot2.takeDamage(robot1.getAttack()); std::cout << " "; robot2.beRepaired(robot1.getAttack()); - -} - -void goAttack(ScavTrap & robot1, ScavTrap & robot2) { - - std::cout << "."; - robot1.attack(robot2.getName()); - std::cout << " "; - robot2.takeDamage(robot1.getAttack()); - std::cout << " "; - robot2.beRepaired(robot1.getAttack()); - -} - -void goAttack(ClapTrap & robot1, ScavTrap & robot2) { - - std::cout << "."; - robot1.attack(robot2.getName()); - std::cout << " "; - robot2.takeDamage(robot1.getAttack()); - std::cout << " "; - robot2.beRepaired(robot1.getAttack()); - -} - -void goAttack(ScavTrap & robot1, ClapTrap & robot2) { - - std::cout << "."; - robot1.attack(robot2.getName()); - std::cout << " "; - robot2.takeDamage(robot1.getAttack()); - std::cout << " "; - robot2.beRepaired(robot1.getAttack()); - } int main() { @@ -52,42 +39,44 @@ int main() { ScavTrap robot3("robot3"); ClapTrap robot4("robot4"); -std::cout << "\nassignement 1 (ClapTrap(ScavTrap)):\n"; +std::cout << COLOR1 "\nassignement 1 (ClapTrap(ScavTrap)):\n" RESET; ClapTrap robot5(robot2); // robot5.guardGate(); goAttack(robot5, robot2); -std::cout << "\nassignement 2 (ScavTrap(ScavTrap)):\n"; +std::cout << COLOR1 "\nassignement 2 (ScavTrap(ScavTrap)):\n" RESET; ScavTrap robot6(robot2); robot6.guardGate(); goAttack(robot6, robot2); robot2.takeDamage(robot6.getAttack()); - robot6 = robot6; + robot6 = robot2; goAttack(robot6, robot2); -std::cout << "\nassignement 3 (ScavTrap(ClapTrap)):\n"; +std::cout << COLOR1 "\nassignement 3 (ScavTrap(ClapTrap)):\n" RESET; // ScavTrap robot7(robot1); -std::cout << "\nassignement 4 (ClapTrap(ClapTrap)):\n"; +std::cout << COLOR1 "\nassignement 4 (ClapTrap(ClapTrap)):\n" RESET; ClapTrap robot7(robot1); goAttack(robot7, robot1); -std::cout << "\nwar:\n"; -// goAttack(robot1, robot2); -// goAttack(robot2, robot1); -// goAttack(robot1, robot3); -// robot2.guardGate(); -// goAttack(robot1, robot4); -// goAttack(robot4, robot2); -// goAttack(robot2, robot3); -// goAttack(robot2, robot4); -// robot3.guardGate(); -// goAttack(robot3, robot1); -// robot2.guardGate(); -// goAttack(robot3, robot4); -// goAttack(robot2, robot1); -// goAttack(robot2, robot4); -// goAttack(robot1, robot3); +std::cout << COLOR1 "\nwar:\n" RESET; + goAttack(robot1, robot2); + goAttack(robot2, robot1); + goAttack(robot1, robot3); + robot2.guardGate(); + goAttack(robot1, robot4); + goAttack(robot4, robot2); + goAttack(robot2, robot3); + goAttack(robot2, robot4); + robot3.guardGate(); + goAttack(robot3, robot1); + robot2.guardGate(); + goAttack(robot3, robot4); + goAttack(robot2, robot1); + goAttack(robot2, robot4); + goAttack(robot1, robot3); + +std::cout << COLOR1 "\ndestruction:\n" RESET; return 0; } diff --git a/d03/ex01/robots b/d03/ex01/robots deleted file mode 100755 index 66b53a3..0000000 Binary files a/d03/ex01/robots and /dev/null differ diff --git a/d03/test_inheritance/a.out b/d03/test_inheritance/a.out index 5f80b70..c12ee8d 100755 Binary files a/d03/test_inheritance/a.out and b/d03/test_inheritance/a.out differ diff --git a/d03/test_inheritance/main.cpp b/d03/test_inheritance/main.cpp index 9694812..fd50b30 100644 --- a/d03/test_inheritance/main.cpp +++ b/d03/test_inheritance/main.cpp @@ -2,38 +2,38 @@ class Base { public: - Base() { - std::cout << "base default constructor\n";} - Base(int i) { - std::cout << "base parameters constructor\n";} - Base(Base const & src) { - std::cout << "base copy constructor\n"; *this = src;} + Base () : _n(1) {} Base & operator=(Base const & rhs) { - std::cout << "base assignation operator\n"; return *this;} - ~Base() { - std::cout << "base default destructor\n";} + _n = rhs.getN(); + std::cout << "base assignation operator\n"; + return *this; + } + int getN() const { + return _n; + } + void putN(int i) { + _n = i; + } +protected: + int _n; }; class Derived : public Base { public: - Derived() { - std::cout << "derived default constructor\n";} - Derived(int i) { - std::cout << "derived parameters constructor\n";} - Derived(Derived const & src) { - std::cout << "derived copy constructor\n"; *this = src;} Derived & operator=(Derived const & rhs) { - std::cout << "derived assignation operator\n"; return *this;} - ~Derived() { - std::cout << "derived default destructor\n";} + Base::operator=(rhs); + std::cout << "derived assignation operator\n"; + return *this;} }; int main () { - Base base1(1); std::cout << "\n"; - Derived derived1(1); std::cout << "\n"; - Base base2(derived1); std::cout << "\n"; - Derived derived2(base1); + Derived foo1; + Derived foo2; + foo2.putN(2); + std::cout << foo1.getN() << " " << foo2.getN() << "\n"; + foo2 = foo1; + std::cout << foo1.getN() << " " << foo2.getN() << "\n"; return 0; }