From 812791dc77a512a4ad55a8286f567e0435c6e975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 28 May 2025 11:17:58 +0200 Subject: [PATCH 1/2] feat(Makefile): add PHONY targets + run target --- ex00/Makefile | 5 +++++ ex01/Makefile | 5 +++++ ex02/Makefile | 5 +++++ ex03/Makefile | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/ex00/Makefile b/ex00/Makefile index be748c8..1154551 100644 --- a/ex00/Makefile +++ b/ex00/Makefile @@ -16,6 +16,8 @@ main_objs = main.o $(srcs:.cpp=.o) all_objs = $(main_objs) deps = $(all_objs:.o=.d) +.PHONY: all clean fclean re run + all: $(NAME) -include $(deps) @@ -37,3 +39,6 @@ fclean: clean re: +make fclean +make all + +run: $(NAME) + ./$(NAME) diff --git a/ex01/Makefile b/ex01/Makefile index 6c8c45f..4866aa6 100644 --- a/ex01/Makefile +++ b/ex01/Makefile @@ -17,6 +17,8 @@ main_objs = main.o $(srcs:.cpp=.o) all_objs = $(main_objs) deps = $(all_objs:.o=.d) +.PHONY: all clean fclean re run + all: $(NAME) -include $(deps) @@ -38,3 +40,6 @@ fclean: clean re: +make fclean +make all + +run: $(NAME) + ./$(NAME) diff --git a/ex02/Makefile b/ex02/Makefile index c2202fe..3f440d3 100644 --- a/ex02/Makefile +++ b/ex02/Makefile @@ -18,6 +18,8 @@ main_objs = main.o $(srcs:.cpp=.o) all_objs = $(main_objs) deps = $(all_objs:.o=.d) +.PHONY: all clean fclean re run + all: $(NAME) -include $(deps) @@ -39,3 +41,6 @@ fclean: clean re: +make fclean +make all + +run: $(NAME) + ./$(NAME) diff --git a/ex03/Makefile b/ex03/Makefile index 10f3b80..cda03f3 100644 --- a/ex03/Makefile +++ b/ex03/Makefile @@ -19,6 +19,8 @@ main_objs = main.o $(srcs:.cpp=.o) all_objs = $(main_objs) deps = $(all_objs:.o=.d) +.PHONY: all clean fclean re run + all: $(NAME) -include $(deps) @@ -40,3 +42,6 @@ fclean: clean re: +make fclean +make all + +run: $(NAME) + ./$(NAME) From a843186f5eecc3f80086b4d53712cbb69beb6ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 28 May 2025 11:17:58 +0200 Subject: [PATCH 2/2] fix(ex03): never construct more than one ClapTrap when constructing DiamondTrap --- ex03/DiamondTrap.cpp | 21 +++++++++------------ ex03/FragTrap.cpp | 10 +++++++--- ex03/FragTrap.hpp | 5 +++++ ex03/ScavTrap.cpp | 10 +++++++--- ex03/ScavTrap.hpp | 5 +++++ 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/ex03/DiamondTrap.cpp b/ex03/DiamondTrap.cpp index 75dd7ff..86209e4 100644 --- a/ex03/DiamondTrap.cpp +++ b/ex03/DiamondTrap.cpp @@ -1,12 +1,10 @@ #include "DiamondTrap.hpp" #include -DiamondTrap::DiamondTrap() : FragTrap(), ScavTrap() { - const FragTrap fragtrap = FragTrap(); - - hit_points = fragtrap.get_hit_points(); - energy_points = ScavTrap::energy_points; - attack_damage = fragtrap.get_attack_damage(); +DiamondTrap::DiamondTrap() { + hit_points = FragTrap::default_hit_points; + energy_points = ScavTrap::default_energy_points; + attack_damage = FragTrap::default_attack_damage; ClapTrap::name = name + "_clap_name"; std::cout << "DiamondTrap::DiamondTrap()" << std::endl; @@ -17,15 +15,14 @@ DiamondTrap::DiamondTrap(const DiamondTrap &other) { hit_points = other.hit_points; energy_points = other.energy_points; attack_damage = other.attack_damage; - std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)" << std::endl; + std::cout << "DiamondTrap::DiamondTrap(const DiamondTrap &other)" + << std::endl; } DiamondTrap::DiamondTrap(std::string name) : name(name) { - const FragTrap fragtrap = FragTrap(name); - - hit_points = fragtrap.get_hit_points(); - energy_points = ScavTrap::energy_points; - attack_damage = fragtrap.get_attack_damage(); + hit_points = FragTrap::default_hit_points; + energy_points = ScavTrap::default_energy_points; + attack_damage = FragTrap::default_attack_damage; ClapTrap::name = name + "_clap_name"; std::cout << "DiamondTrap::DiamondTrap(" << name << ")" << std::endl; diff --git a/ex03/FragTrap.cpp b/ex03/FragTrap.cpp index 56a85a1..e1bbce7 100644 --- a/ex03/FragTrap.cpp +++ b/ex03/FragTrap.cpp @@ -1,11 +1,15 @@ #include "FragTrap.hpp" #include +const unsigned int FragTrap::default_hit_points(100); +const unsigned int FragTrap::default_energy_points(100); +const unsigned int FragTrap::default_attack_damage(30); + FragTrap::FragTrap() { std::cout << "FragTrap::FragTrap()" << std::endl; - hit_points = 100; - energy_points = 100; - attack_damage = 30; + hit_points = FragTrap::default_hit_points; + energy_points = FragTrap::default_energy_points; + attack_damage = FragTrap::default_attack_damage; } FragTrap::FragTrap(const FragTrap &other) { diff --git a/ex03/FragTrap.hpp b/ex03/FragTrap.hpp index c942ec3..06613c2 100644 --- a/ex03/FragTrap.hpp +++ b/ex03/FragTrap.hpp @@ -12,6 +12,11 @@ public: FragTrap &operator=(const FragTrap &other); void highFivesGuys(); + +protected: + static const unsigned int default_hit_points; + static const unsigned int default_energy_points; + static const unsigned int default_attack_damage; }; #endif diff --git a/ex03/ScavTrap.cpp b/ex03/ScavTrap.cpp index d2acf91..0c2206c 100644 --- a/ex03/ScavTrap.cpp +++ b/ex03/ScavTrap.cpp @@ -1,11 +1,15 @@ #include "ScavTrap.hpp" #include +const unsigned int ScavTrap::default_hit_points(100); +const unsigned int ScavTrap::default_energy_points(50); +const unsigned int ScavTrap::default_attack_damage(20); + ScavTrap::ScavTrap() { std::cout << "ScavTrap::ScavTrap()" << std::endl; - hit_points = 100; - energy_points = 50; - attack_damage = 20; + hit_points = ScavTrap::default_hit_points; + energy_points = ScavTrap::default_energy_points; + attack_damage = ScavTrap::default_attack_damage; } ScavTrap::ScavTrap(const ScavTrap &other) { diff --git a/ex03/ScavTrap.hpp b/ex03/ScavTrap.hpp index f1ecc36..593ac1d 100644 --- a/ex03/ScavTrap.hpp +++ b/ex03/ScavTrap.hpp @@ -12,6 +12,11 @@ public: ScavTrap &operator=(const ScavTrap &other); void guardGate(); + +protected: + static const unsigned int default_hit_points; + static const unsigned int default_energy_points; + static const unsigned int default_attack_damage; }; #endif