From 718fe08eaec872dcd416141141d6aa36a94f75ed Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Wed, 23 Feb 2022 17:05:56 +0100 Subject: [PATCH] d03 ex03 a priori ok --- d03/ex01/ClapTrap.cpp | 11 ----------- d03/ex01/ClapTrap.hpp | 11 +++++++++++ d03/ex01/ScavTrap.cpp | 28 ++++++++++++++++++++++++++++ d03/ex01/ScavTrap.hpp | 12 ++++++++++++ d03/ex01/robots | Bin 0 -> 47680 bytes d03/ex02/ClapTrap.cpp | 11 ----------- d03/ex02/ClapTrap.hpp | 11 +++++++++++ d03/ex02/ScavTrap.cpp | 28 ++++++++++++++++++++++++++++ d03/ex02/ScavTrap.hpp | 12 ++++++++++++ d03/ex02/robots | Bin 53144 -> 53320 bytes d03/ex03/ClapTrap.cpp | 11 ----------- d03/ex03/ClapTrap.hpp | 16 ++++++++++++++++ d03/ex03/DiamondTrap.cpp | 11 ++++++----- d03/ex03/DiamondTrap.hpp | 18 ++++++++++++++++++ d03/ex03/FragTrap.cpp | 34 +++++++++++++++++++++++++++++++--- d03/ex03/FragTrap.hpp | 3 ++- d03/ex03/Makefile | 5 ++++- d03/ex03/ScavTrap.cpp | 28 ++++++++++++++++++++++++++++ d03/ex03/ScavTrap.hpp | 19 ++++++++++++++++++- d03/ex03/main.cpp | 7 ++++--- d03/ex03/robots | Bin 55080 -> 55504 bytes 21 files changed, 229 insertions(+), 47 deletions(-) create mode 100755 d03/ex01/robots diff --git a/d03/ex01/ClapTrap.cpp b/d03/ex01/ClapTrap.cpp index 54a4994..2a00cc4 100644 --- a/d03/ex01/ClapTrap.cpp +++ b/d03/ex01/ClapTrap.cpp @@ -1,16 +1,5 @@ #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 *********************************************/ diff --git a/d03/ex01/ClapTrap.hpp b/d03/ex01/ClapTrap.hpp index a0beeca..fa8d411 100644 --- a/d03/ex01/ClapTrap.hpp +++ b/d03/ex01/ClapTrap.hpp @@ -5,6 +5,17 @@ #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" + class ClapTrap { public: diff --git a/d03/ex01/ScavTrap.cpp b/d03/ex01/ScavTrap.cpp index fa611e7..6ceacd4 100644 --- a/d03/ex01/ScavTrap.cpp +++ b/d03/ex01/ScavTrap.cpp @@ -43,6 +43,34 @@ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { * PUBLIC MEMBER FUNCTIONS *********************************************/ +void ScavTrap::attack(const std::string & target) { + + std::ostringstream action; + 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 << "-" << _number << B_CYAN " SPECIAL SCAV" RESET; + + if (_energy > 0 && _hit > 0) + { + _energy--; + if (_energy < 0) + _energy = 0; + action << " attacked " << target << ", causing " B_YELLOW << _attack << RESET << " points of damage" << '\n'; + } + else + { + _attack = 0; + if (_energy <= 0) + action << " cannot attack because " B_RED " is out of energy" RESET"\n"; + else if (_hit <= 0) + action << " cannot attack because " B_RED " is out of hit" RESET "\n"; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); +} + void ScavTrap::guardGate() { std::cout << _class << " " << _name << "-" << _number << " entered special mode Gate Keeper\n"; } diff --git a/d03/ex01/ScavTrap.hpp b/d03/ex01/ScavTrap.hpp index 7a627fc..2fe17f4 100644 --- a/d03/ex01/ScavTrap.hpp +++ b/d03/ex01/ScavTrap.hpp @@ -5,6 +5,17 @@ #include #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" + class ScavTrap : public ClapTrap { public: @@ -16,6 +27,7 @@ public: ScavTrap & operator=( ScavTrap const & rhs ); // assignement operator void guardGate(); + void attack(const std::string & target); private: diff --git a/d03/ex01/robots b/d03/ex01/robots new file mode 100755 index 0000000000000000000000000000000000000000..a69d2a597c3965cb9e82a22ab1a6ebae2af57e3b GIT binary patch literal 47680 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 F{{c)2E>!>k literal 0 HcmV?d00001 diff --git a/d03/ex02/ClapTrap.cpp b/d03/ex02/ClapTrap.cpp index 54a4994..2a00cc4 100644 --- a/d03/ex02/ClapTrap.cpp +++ b/d03/ex02/ClapTrap.cpp @@ -1,16 +1,5 @@ #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 *********************************************/ diff --git a/d03/ex02/ClapTrap.hpp b/d03/ex02/ClapTrap.hpp index a0beeca..fa8d411 100644 --- a/d03/ex02/ClapTrap.hpp +++ b/d03/ex02/ClapTrap.hpp @@ -5,6 +5,17 @@ #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" + class ClapTrap { public: diff --git a/d03/ex02/ScavTrap.cpp b/d03/ex02/ScavTrap.cpp index fa611e7..6ceacd4 100644 --- a/d03/ex02/ScavTrap.cpp +++ b/d03/ex02/ScavTrap.cpp @@ -43,6 +43,34 @@ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { * PUBLIC MEMBER FUNCTIONS *********************************************/ +void ScavTrap::attack(const std::string & target) { + + std::ostringstream action; + 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 << "-" << _number << B_CYAN " SPECIAL SCAV" RESET; + + if (_energy > 0 && _hit > 0) + { + _energy--; + if (_energy < 0) + _energy = 0; + action << " attacked " << target << ", causing " B_YELLOW << _attack << RESET << " points of damage" << '\n'; + } + else + { + _attack = 0; + if (_energy <= 0) + action << " cannot attack because " B_RED " is out of energy" RESET"\n"; + else if (_hit <= 0) + action << " cannot attack because " B_RED " is out of hit" RESET "\n"; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); +} + void ScavTrap::guardGate() { std::cout << _class << " " << _name << "-" << _number << " entered special mode Gate Keeper\n"; } diff --git a/d03/ex02/ScavTrap.hpp b/d03/ex02/ScavTrap.hpp index 7a627fc..2fe17f4 100644 --- a/d03/ex02/ScavTrap.hpp +++ b/d03/ex02/ScavTrap.hpp @@ -5,6 +5,17 @@ #include #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" + class ScavTrap : public ClapTrap { public: @@ -16,6 +27,7 @@ public: ScavTrap & operator=( ScavTrap const & rhs ); // assignement operator void guardGate(); + void attack(const std::string & target); private: diff --git a/d03/ex02/robots b/d03/ex02/robots index 5dbb391516a40051e5fb7b5e039f90b17ae3452f..9a7e85916d16db6781b8dbfa8be87acef7b44f9d 100755 GIT binary patch delta 6365 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 delta 5502 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 M(_?Tr6Iv4g3(6X+VE_OC diff --git a/d03/ex03/ClapTrap.cpp b/d03/ex03/ClapTrap.cpp index 54a4994..2a00cc4 100644 --- a/d03/ex03/ClapTrap.cpp +++ b/d03/ex03/ClapTrap.cpp @@ -1,16 +1,5 @@ #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 *********************************************/ diff --git a/d03/ex03/ClapTrap.hpp b/d03/ex03/ClapTrap.hpp index a0beeca..e4a586c 100644 --- a/d03/ex03/ClapTrap.hpp +++ b/d03/ex03/ClapTrap.hpp @@ -5,6 +5,22 @@ #include #include +#ifndef COLORS_MACRO +# define COLORS_MACRO + +# 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 + class ClapTrap { public: diff --git a/d03/ex03/DiamondTrap.cpp b/d03/ex03/DiamondTrap.cpp index e8a344d..666f12d 100644 --- a/d03/ex03/DiamondTrap.cpp +++ b/d03/ex03/DiamondTrap.cpp @@ -28,7 +28,7 @@ DiamondTrap::DiamondTrap( DiamondTrap const & src ) { *********************************************/ DiamondTrap::~DiamondTrap( void ) { - std::cout << _class << " " << DiamondTrap::_name << " destructed\n"; + std::cout << _class << " " << _name << "-" << _number << " destructed\n"; return; } @@ -46,7 +46,8 @@ DiamondTrap & DiamondTrap::operator=( DiamondTrap const & rhs ) { *********************************************/ void DiamondTrap::whoAmI() { - std::cout << _class << " " << DiamondTrap::_name << " wait for a high fives, common guys\n"; + std::cout << _class << B_CYAN " I AM DIAMOND" RESET << " " << _name << "-" << _number; + std::cout << B_CYAN " and clap" RESET << " " << ClapTrap::_name << "-" << _number << "\n"; } /********************************************* @@ -55,7 +56,7 @@ void DiamondTrap::whoAmI() { std::string const DiamondTrap::_dName = "robot"; std::string const DiamondTrap::_dClass = "DiamondTrap"; -int const DiamondTrap::_dHit = 100; -int const DiamondTrap::_dEnergy = 100; -int const DiamondTrap::_dAttack = 50; +int const DiamondTrap::_dHit = FragTrap::_dHit; +int const DiamondTrap::_dEnergy = ScavTrap::_dEnergy; +int const DiamondTrap::_dAttack = FragTrap::_dAttack; diff --git a/d03/ex03/DiamondTrap.hpp b/d03/ex03/DiamondTrap.hpp index 63cd4a0..6f78ddd 100644 --- a/d03/ex03/DiamondTrap.hpp +++ b/d03/ex03/DiamondTrap.hpp @@ -7,6 +7,22 @@ # include "FragTrap.hpp" # include "ScavTrap.hpp" +#ifndef COLORS_MACRO +# define COLORS_MACRO + +# 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 + class DiamondTrap : public FragTrap, public ScavTrap { public: @@ -19,6 +35,8 @@ public: void whoAmI(); + using ScavTrap::attack; + private: std::string _name; diff --git a/d03/ex03/FragTrap.cpp b/d03/ex03/FragTrap.cpp index c8b4285..16c32be 100644 --- a/d03/ex03/FragTrap.cpp +++ b/d03/ex03/FragTrap.cpp @@ -26,7 +26,7 @@ FragTrap::FragTrap( FragTrap const & src ) { *********************************************/ FragTrap::~FragTrap( void ) { - std::cout << _class << " " << FragTrap::_name << " destructed\n"; + std::cout << _class << " " << _name << "-" << _number << " destructed\n"; return; } @@ -43,8 +43,36 @@ FragTrap & FragTrap::operator=( FragTrap const & rhs ) { * PUBLIC MEMBER FUNCTIONS *********************************************/ +//void FragTrap::attack(const std::string & target) { +// +// std::ostringstream action; +// 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 << "-" << _number << B_CYAN " SPECIAL FRAG" RESET; +// +// if (_energy > 0 && _hit > 0) +// { +// _energy--; +// if (_energy < 0) +// _energy = 0; +// action << " attacked " << target << ", causing " B_YELLOW << _attack << RESET << " points of damage" << '\n'; +// } +// else +// { +// _attack = 0; +// if (_energy <= 0) +// action << " cannot attack because " B_RED " is out of energy" RESET"\n"; +// else if (_hit <= 0) +// action << " cannot attack because " B_RED " is out of hit" RESET "\n"; +// } +// +// state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; +// std::cout << state.str() << action.str(); +//} + void FragTrap::highFivesGuys() { - std::cout << _class << " " << FragTrap::_name << " wait for a high fives, common guys\n"; + std::cout << _class << " " << _name << "-" << _number << " wait for a high fives, common guys\n"; } /********************************************* @@ -55,5 +83,5 @@ std::string const FragTrap::_dName = "robot"; std::string const FragTrap::_dClass = "FragTrap"; int const FragTrap::_dHit = 100; int const FragTrap::_dEnergy = 100; -int const FragTrap::_dAttack = 50; +int const FragTrap::_dAttack = 30; diff --git a/d03/ex03/FragTrap.hpp b/d03/ex03/FragTrap.hpp index b1abd7a..0fbfe71 100644 --- a/d03/ex03/FragTrap.hpp +++ b/d03/ex03/FragTrap.hpp @@ -16,8 +16,9 @@ public: FragTrap & operator=( FragTrap const & rhs ); // assignement operator void highFivesGuys(); +// void attack(const std::string & target); -private: +protected: static const std::string _dName; static const std::string _dClass; diff --git a/d03/ex03/Makefile b/d03/ex03/Makefile index a616a9a..b31dfea 100644 --- a/d03/ex03/Makefile +++ b/d03/ex03/Makefile @@ -7,7 +7,10 @@ NAME = robots CC = c++ -CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 +CFLAGS = -Wall -Wextra -Werror \ + -Wshadow \ + $(INCLUDES) \ + -std=c++98 VPATH = $(D_SRCS) diff --git a/d03/ex03/ScavTrap.cpp b/d03/ex03/ScavTrap.cpp index fa611e7..6ceacd4 100644 --- a/d03/ex03/ScavTrap.cpp +++ b/d03/ex03/ScavTrap.cpp @@ -43,6 +43,34 @@ ScavTrap & ScavTrap::operator=( ScavTrap const & rhs ) { * PUBLIC MEMBER FUNCTIONS *********************************************/ +void ScavTrap::attack(const std::string & target) { + + std::ostringstream action; + 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 << "-" << _number << B_CYAN " SPECIAL SCAV" RESET; + + if (_energy > 0 && _hit > 0) + { + _energy--; + if (_energy < 0) + _energy = 0; + action << " attacked " << target << ", causing " B_YELLOW << _attack << RESET << " points of damage" << '\n'; + } + else + { + _attack = 0; + if (_energy <= 0) + action << " cannot attack because " B_RED " is out of energy" RESET"\n"; + else if (_hit <= 0) + action << " cannot attack because " B_RED " is out of hit" RESET "\n"; + } + + state << B_BLUE << _hit << "," << _energy << "," << _attack << B_CYAN "]" RESET; + std::cout << state.str() << action.str(); +} + void ScavTrap::guardGate() { std::cout << _class << " " << _name << "-" << _number << " entered special mode Gate Keeper\n"; } diff --git a/d03/ex03/ScavTrap.hpp b/d03/ex03/ScavTrap.hpp index adb914c..0c25ee4 100644 --- a/d03/ex03/ScavTrap.hpp +++ b/d03/ex03/ScavTrap.hpp @@ -5,6 +5,22 @@ #include #include "ClapTrap.hpp" +#ifndef COLORS_MACRO +# define COLORS_MACRO + +# 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 + class ScavTrap : public virtual ClapTrap { public: @@ -16,8 +32,9 @@ public: ScavTrap & operator=( ScavTrap const & rhs ); // assignement operator void guardGate(); + void attack(const std::string & target); -private: +protected: static const std::string _dName; static const std::string _dClass; diff --git a/d03/ex03/main.cpp b/d03/ex03/main.cpp index 1297e29..25a3413 100644 --- a/d03/ex03/main.cpp +++ b/d03/ex03/main.cpp @@ -22,9 +22,9 @@ int main() { FragTrap robot1("robot1"); ClapTrap robot2("robot2"); ScavTrap robot3("robot3"); - std::cout << "tout\n"; + std::cout << "start\n"; DiamondTrap robot4("robot4"); - std::cout << "tend\n"; + std::cout << "end\n"; ClapTrap robot5("robot5"); ScavTrap robot6("robot6"); FragTrap robot7("robot7"); @@ -54,7 +54,7 @@ robot3.guardGate(); goAttack(robot1, robot9); goAttack(robot9, robot6); goAttack(robot9, robot2); -robot4.guardGate(); +robot6.guardGate(); robot1.highFivesGuys(); robot7.highFivesGuys(); goAttack(robot3, robot4); @@ -65,6 +65,7 @@ robot7.highFivesGuys(); goAttack(robot2, robot4); goAttack(robot9, robot6); goAttack(robot3, robot2); +robot4.whoAmI(); goAttack(robot6, robot5); goAttack(robot4, robot9); goAttack(robot7, robot6); diff --git a/d03/ex03/robots b/d03/ex03/robots index 5e22321973093a3d5a700736ab3b021b0da15fd4..23d4c8b6f795bcaff3bed408d3c1ef5240ff4a6f 100755 GIT binary patch literal 55504 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 R1w?+v6QXjwtAVS^{x7kkV(I_@