From 96dcf214a8c40529b251ea31ef037868583dd1da Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Thu, 12 Nov 2020 10:54:47 +0100 Subject: Fixing cpp03, moved more common logic in ClapTrap, Added better main --- cpp03/ex00/FragTrap.cpp | 19 +--- cpp03/ex00/FragTrap.hpp | 5 +- cpp03/ex00/main.cpp | 62 +++++++----- cpp03/ex01/FragTrap.cpp | 21 +---- cpp03/ex01/FragTrap.hpp | 5 +- cpp03/ex01/ScavTrap.cpp | 43 ++++----- cpp03/ex01/ScavTrap.hpp | 7 +- cpp03/ex01/main.cpp | 111 ++++++++++++++-------- cpp03/ex02/ClapTrap.cpp | 31 ++---- cpp03/ex02/ClapTrap.hpp | 5 +- cpp03/ex02/FragTrap.cpp | 30 ++---- cpp03/ex02/FragTrap.hpp | 6 +- cpp03/ex02/ScavTrap.cpp | 35 +++---- cpp03/ex02/ScavTrap.hpp | 6 +- cpp03/ex02/main.cpp | 143 ++++++++++++++++++++-------- cpp03/ex03/ClapTrap.cpp | 31 ++---- cpp03/ex03/ClapTrap.hpp | 5 +- cpp03/ex03/FragTrap.cpp | 30 ++---- cpp03/ex03/FragTrap.hpp | 6 +- cpp03/ex03/NinjaTrap.cpp | 32 ++----- cpp03/ex03/NinjaTrap.hpp | 6 +- cpp03/ex03/ScavTrap.cpp | 35 +++---- cpp03/ex03/ScavTrap.hpp | 6 +- cpp03/ex03/main.cpp | 192 ++++++++++++++++++++++++++----------- cpp03/ex04/ClapTrap.cpp | 31 ++---- cpp03/ex04/ClapTrap.hpp | 5 +- cpp03/ex04/FragTrap.cpp | 30 ++---- cpp03/ex04/FragTrap.hpp | 8 +- cpp03/ex04/NinjaTrap.cpp | 32 ++----- cpp03/ex04/NinjaTrap.hpp | 8 +- cpp03/ex04/ScavTrap.cpp | 35 +++---- cpp03/ex04/ScavTrap.hpp | 10 +- cpp03/ex04/SuperTrap.cpp | 56 ++++------- cpp03/ex04/SuperTrap.hpp | 6 +- cpp03/ex04/main.cpp | 240 ++++++++++++++++++++++++++++++++++++++--------- 35 files changed, 759 insertions(+), 574 deletions(-) (limited to 'cpp03') diff --git a/cpp03/ex00/FragTrap.cpp b/cpp03/ex00/FragTrap.cpp index 7229e59..38bce83 100644 --- a/cpp03/ex00/FragTrap.cpp +++ b/cpp03/ex00/FragTrap.cpp @@ -6,26 +6,12 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/11/10 13:34:50 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:43:53 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), - m_name(""), - m_meleeAttackDamage(30), - m_rangedAttackDamage(20), - m_armorDamageReduction(5) -{ - std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; -} - FragTrap::FragTrap(std::string const& name): m_hitPoints(100), m_maxHitPoints(100), @@ -42,6 +28,7 @@ FragTrap::FragTrap(std::string const& name): FragTrap::FragTrap(FragTrap const& other) { + std::cout << "FR4G-TP New from " << other.m_name << std::endl; *this = other; } @@ -122,3 +109,5 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) << " with " << attacks[rand() % 5] << std::endl; m_energyPoints -= 25; } + +FragTrap::FragTrap() {} diff --git a/cpp03/ex00/FragTrap.hpp b/cpp03/ex00/FragTrap.hpp index 6dd7107..8cb9ca5 100644 --- a/cpp03/ex00/FragTrap.hpp +++ b/cpp03/ex00/FragTrap.hpp @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/11/10 13:25:53 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:40:53 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class FragTrap { public: - FragTrap(); FragTrap(std::string const& name); FragTrap(FragTrap const& other); FragTrap& operator=(FragTrap const& other); @@ -42,6 +41,8 @@ private: unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + FragTrap(); }; #endif diff --git a/cpp03/ex00/main.cpp b/cpp03/ex00/main.cpp index d6f4723..dd3f8bd 100644 --- a/cpp03/ex00/main.cpp +++ b/cpp03/ex00/main.cpp @@ -6,12 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/11/10 14:07:05 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:42:38 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include #include +#include #include "FragTrap.hpp" int main(void) @@ -27,29 +28,40 @@ int main(void) seed = time(NULL); srand(seed); - FragTrap ft("bob"); - - std::cout << "=== ATTACK ===" << std::endl; - ft.rangedAttack("a dog"); - ft.meleeAttack("a cat"); - - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - ft.takeDamage(0); - ft.beRepaired(0); - ft.takeDamage(10); - ft.beRepaired(10); - - std::cout << std::endl << "=== VAULTHUNTER ===" << std::endl; - ft.vaulthunter_dot_exe("your mom"); - ft.vaulthunter_dot_exe("your dad"); - ft.vaulthunter_dot_exe("your brother"); - ft.vaulthunter_dot_exe("your sister"); - std::cout << "=== VAULTHUNTER NO ENERGY ===" << std::endl; - ft.vaulthunter_dot_exe("your grandma"); - - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - ft.takeDamage(1000); - ft.beRepaired(1000); - + { + std::cout << "============================== FRAG TRAP ==============================" << std::endl; + FragTrap ft("Fragger"); + std::cout << "################################################## ATTACKS" << std::endl; + ft.rangedAttack("a dog"); + ft.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ft.takeDamage(0); + ft.beRepaired(0); + ft.takeDamage(10); + ft.beRepaired(10); + ft.takeDamage(60); + ft.beRepaired(20); + ft.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ft.takeDamage(110); + ft.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + FragTrap ft2(ft); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + FragTrap ft3("foo"); + ft3 = ft; + } + std::cout << "################################################## VAULTHUNTER" << std::endl; + ft.vaulthunter_dot_exe("your mom"); + ft.vaulthunter_dot_exe("your dad"); + ft.vaulthunter_dot_exe("your brother"); + ft.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + ft.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } return 0; } diff --git a/cpp03/ex01/FragTrap.cpp b/cpp03/ex01/FragTrap.cpp index e548687..bbe398a 100644 --- a/cpp03/ex01/FragTrap.cpp +++ b/cpp03/ex01/FragTrap.cpp @@ -6,26 +6,12 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/11/10 14:12:57 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:44:08 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), - m_name(""), - m_meleeAttackDamage(30), - m_rangedAttackDamage(20), - m_armorDamageReduction(5) -{ - std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; -} - FragTrap::FragTrap(std::string const& name): m_hitPoints(100), m_maxHitPoints(100), @@ -42,6 +28,7 @@ FragTrap::FragTrap(std::string const& name): FragTrap::FragTrap(FragTrap const& other) { + std::cout << "FR4G-TP New from " << other.m_name << std::endl; *this = other; } @@ -112,7 +99,7 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) } std::string attacks[5] = { "boum boum", - "cursed for generation", + "cursed for generations", "sit and wait for your death", "mimic a gun with his hand and make 'piou piou' sound", "shot you in the face" @@ -122,3 +109,5 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) << " with " << attacks[rand() % 5] << std::endl; m_energyPoints -= 25; } + +FragTrap::FragTrap() {} diff --git a/cpp03/ex01/FragTrap.hpp b/cpp03/ex01/FragTrap.hpp index 635cb71..8cb9ca5 100644 --- a/cpp03/ex01/FragTrap.hpp +++ b/cpp03/ex01/FragTrap.hpp @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/11/10 14:12:49 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:40:53 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class FragTrap { public: - FragTrap(); FragTrap(std::string const& name); FragTrap(FragTrap const& other); FragTrap& operator=(FragTrap const& other); @@ -42,6 +41,8 @@ private: unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + FragTrap(); }; #endif diff --git a/cpp03/ex01/ScavTrap.cpp b/cpp03/ex01/ScavTrap.cpp index 16b07e1..47facac 100644 --- a/cpp03/ex01/ScavTrap.cpp +++ b/cpp03/ex01/ScavTrap.cpp @@ -6,26 +6,12 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:15:03 by charles #+# #+# */ -/* Updated: 2020/11/11 06:32:05 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:49:48 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(50), - m_maxEnergyPoints(50), - m_level(1), - m_name(""), - m_meleeAttackDamage(20), - m_rangedAttackDamage(15), - m_armorDamageReduction(3) -{ - std::cout << "New " << m_name << ": your gaming references suck" << std::endl; -} - ScavTrap::ScavTrap(std::string const& name): m_hitPoints(100), m_maxHitPoints(100), @@ -42,6 +28,7 @@ ScavTrap::ScavTrap(std::string const& name): ScavTrap::ScavTrap(ScavTrap const& other) { + std::cout << "SC4V-TP New from " << other.m_name << std::endl; *this = other; } @@ -65,18 +52,18 @@ ScavTrap::~ScavTrap() void ScavTrap::rangedAttack(std::string const& target) const { - std::cout << "SC4V-TP " << m_name - << " attacks " << target + std::cout << "SC4V-TP " << m_name + << " attacks " << target << " at range, causing " << m_rangedAttackDamage - << " points of damage!" << std::endl; + << " points of damage!" << std::endl; } void ScavTrap::meleeAttack(std::string const& target) const { - std::cout << "SC4V-TP " << m_name - << " attacks " << target + std::cout << "SC4V-TP " << m_name + << " attacks " << target << " in melee mode causing " << m_meleeAttackDamage - << " points of damage!" << std::endl; + << " points of damage!" << std::endl; } void ScavTrap::takeDamage(unsigned int amount) @@ -89,8 +76,8 @@ void ScavTrap::takeDamage(unsigned int amount) amount = m_hitPoints; m_hitPoints -= amount; std::cout << "SC4V-TP " << m_name - << " takes " << amount - << " damage" << std::endl; + << " takes " << amount + << " damage" << std::endl; } void ScavTrap::beRepaired(unsigned int amount) @@ -98,8 +85,8 @@ void ScavTrap::beRepaired(unsigned int amount) if (amount + m_hitPoints > m_maxHitPoints) amount = m_maxHitPoints - m_hitPoints; m_hitPoints += amount; - std::cout << "SC4V-TP " << m_name - << " gained " << amount + std::cout << "SC4V-TP " << m_name + << " gained " << amount << " hit points" << std::endl; } @@ -112,7 +99,9 @@ void ScavTrap::challengeNewcomer(std::string const& target) "draw your name by peeing in the snow", "punch me" }; - std::cout << "SC4V-TP " << m_name + std::cout << "SC4V-TP " << m_name << " challenge " << target - << " to " << challenges[rand() % 5] << std::endl; + << " to " << challenges[rand() % 5] << std::endl; } + +ScavTrap::ScavTrap() {} diff --git a/cpp03/ex01/ScavTrap.hpp b/cpp03/ex01/ScavTrap.hpp index 64fae68..42192a2 100644 --- a/cpp03/ex01/ScavTrap.hpp +++ b/cpp03/ex01/ScavTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:11:51 by charles #+# #+# */ -/* Updated: 2020/11/10 14:13:16 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:48:39 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class ScavTrap { public: - ScavTrap(); ScavTrap(std::string const& name); ScavTrap(ScavTrap const& other); ScavTrap& operator=(ScavTrap const& other); @@ -38,10 +37,12 @@ private: unsigned int m_energyPoints; unsigned int m_maxEnergyPoints; unsigned int m_level; - std::string m_name; + std::string m_name; unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + ScavTrap(); }; #endif diff --git a/cpp03/ex01/main.cpp b/cpp03/ex01/main.cpp index 13ed4e6..864041c 100644 --- a/cpp03/ex01/main.cpp +++ b/cpp03/ex01/main.cpp @@ -6,12 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:53:25 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:42:13 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include #include +#include #include "FragTrap.hpp" #include "ScavTrap.hpp" @@ -28,45 +29,77 @@ int main(void) seed = time(NULL); srand(seed); - FragTrap ft("bob"); - std::cout << "=== ATTACK ===" << std::endl; - ft.rangedAttack("a dog"); - ft.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - ft.takeDamage(0); - ft.beRepaired(0); - ft.takeDamage(10); - ft.beRepaired(10); - std::cout << std::endl << "=== VAULTHUNTER ===" << std::endl; - ft.vaulthunter_dot_exe("your mom"); - ft.vaulthunter_dot_exe("your dad"); - ft.vaulthunter_dot_exe("your brother"); - ft.vaulthunter_dot_exe("your sister"); - std::cout << "=== VAULTHUNTER NO ENERGY ===" << std::endl; - ft.vaulthunter_dot_exe("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - ft.takeDamage(1000); - ft.beRepaired(1000); + { + std::cout << "============================== FRAG TRAP ==============================" << std::endl; + FragTrap ft("Fragger"); + std::cout << "################################################## ATTACKS" << std::endl; + ft.rangedAttack("a dog"); + ft.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ft.takeDamage(0); + ft.beRepaired(0); + ft.takeDamage(10); + ft.beRepaired(10); + ft.takeDamage(60); + ft.beRepaired(20); + ft.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ft.takeDamage(110); + ft.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + FragTrap ft2(ft); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + FragTrap ft3("foo"); + ft3 = ft; + } + std::cout << "################################################## VAULTHUNTER" << std::endl; + ft.vaulthunter_dot_exe("your mom"); + ft.vaulthunter_dot_exe("your dad"); + ft.vaulthunter_dot_exe("your brother"); + ft.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + ft.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } - std::cout << std::endl << std::endl; + std::cout << std::endl; - ScavTrap scav("jean"); - std::cout << "=== ATTACK ===" << std::endl; - scav.rangedAttack("a dog"); - scav.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - scav.takeDamage(0); - scav.beRepaired(0); - scav.takeDamage(10); - scav.beRepaired(10); - std::cout << std::endl << "=== CHALLENGE NEW COMER ===" << std::endl; - scav.challengeNewcomer("your mom"); - scav.challengeNewcomer("your dad"); - scav.challengeNewcomer("your brother"); - scav.challengeNewcomer("your sister"); - scav.challengeNewcomer("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - scav.takeDamage(1000); - scav.beRepaired(1000); + { + std::cout << "============================== SCAV TRAP ==============================" << std::endl; + ScavTrap sv("Scaved"); + std::cout << "################################################## ATTACKS" << std::endl; + sv.rangedAttack("a dog"); + sv.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + sv.takeDamage(0); + sv.beRepaired(0); + sv.takeDamage(10); + sv.beRepaired(10); + sv.takeDamage(60); + sv.beRepaired(20); + sv.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + sv.takeDamage(110); + sv.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ScavTrap sv2(sv); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ScavTrap sv3("foo"); + sv3 = sv; + } + std::cout << "################################################## CHALLENGE NEW COMER" << std::endl; + sv.challengeNewcomer("your mom"); + sv.challengeNewcomer("your dad"); + sv.challengeNewcomer("your brother"); + sv.challengeNewcomer("your sister"); + sv.challengeNewcomer("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } return 0; } diff --git a/cpp03/ex02/ClapTrap.cpp b/cpp03/ex02/ClapTrap.cpp index 4c712c3..550cef4 100644 --- a/cpp03/ex02/ClapTrap.cpp +++ b/cpp03/ex02/ClapTrap.cpp @@ -6,32 +6,18 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:28:43 by charles #+# #+# */ -/* Updated: 2020/11/11 06:41:35 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:08:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ClapTrap.hpp" -ClapTrap::ClapTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), - m_name(""), - m_meleeAttackDamage(0), - m_rangedAttackDamage(0), - m_armorDamageReduction(0) -{ - std::cout << "CL4P-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ClapTrap::ClapTrap(std::string const& name): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), + m_hitPoints(0), + m_maxHitPoints(0), + m_energyPoints(0), + m_maxEnergyPoints(0), + m_level(0), m_name(name), m_meleeAttackDamage(0), m_rangedAttackDamage(0), @@ -42,6 +28,7 @@ ClapTrap::ClapTrap(std::string const& name): ClapTrap::ClapTrap(ClapTrap const& other) { + std::cout << "CL4P-TP New from " << other.m_name << std::endl; *this = other; } @@ -73,7 +60,7 @@ void ClapTrap::rangedAttack(std::string const& target) const void ClapTrap::meleeAttack(std::string const& target) const { - std::cout << "CL4P-TP " << m_name + std::cout << "CL4P-TP " << m_name << " attacks " << target << " in melee mode causing " << m_meleeAttackDamage << " points of damage!" << std::endl; @@ -102,3 +89,5 @@ void ClapTrap::beRepaired(unsigned int amount) << " gained " << amount << " hit points" << std::endl; } + +ClapTrap::ClapTrap() {} diff --git a/cpp03/ex02/ClapTrap.hpp b/cpp03/ex02/ClapTrap.hpp index 00fd168..8fcbf1f 100644 --- a/cpp03/ex02/ClapTrap.hpp +++ b/cpp03/ex02/ClapTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:20:45 by charles #+# #+# */ -/* Updated: 2020/11/11 06:39:00 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:43:44 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class ClapTrap { public: - ClapTrap(); ClapTrap(std::string const& name); ClapTrap(ClapTrap const& other); ClapTrap& operator=(ClapTrap const& other); @@ -41,6 +40,8 @@ protected: unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + ClapTrap(); }; #endif diff --git a/cpp03/ex02/FragTrap.cpp b/cpp03/ex02/FragTrap.cpp index 9ab2ffc..b63ee6b 100644 --- a/cpp03/ex02/FragTrap.cpp +++ b/cpp03/ex02/FragTrap.cpp @@ -6,47 +6,33 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:42:32 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:11 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap() : ClapTrap() -{ - m_energyPoints = 100; - m_maxEnergyPoints = 100; - m_meleeAttackDamage = 30; - m_rangedAttackDamage = 20; - m_armorDamageReduction = 5; - std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; -} - FragTrap::FragTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 100; m_maxEnergyPoints = 100; + m_level = 1; m_meleeAttackDamage = 30; m_rangedAttackDamage = 20; m_armorDamageReduction = 5; std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; } -FragTrap::FragTrap(FragTrap const& other) +FragTrap::FragTrap(FragTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "FR4G-TP New from "<< other.m_name << std::endl; } FragTrap& FragTrap::operator=(FragTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -74,3 +60,5 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) << " with " << attacks[rand() % 5] << std::endl; m_energyPoints -= 25; } + +FragTrap::FragTrap() {} diff --git a/cpp03/ex02/FragTrap.hpp b/cpp03/ex02/FragTrap.hpp index fc99532..76c62db 100644 --- a/cpp03/ex02/FragTrap.hpp +++ b/cpp03/ex02/FragTrap.hpp @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/11/10 14:40:04 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:44:59 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,13 +19,15 @@ class FragTrap : public ClapTrap { public: - FragTrap(); FragTrap(std::string const& name); FragTrap(FragTrap const& other); FragTrap& operator=(FragTrap const& other); ~FragTrap(); void vaulthunter_dot_exe(std::string const& target); + +private: + FragTrap(); }; #endif diff --git a/cpp03/ex02/ScavTrap.cpp b/cpp03/ex02/ScavTrap.cpp index 1acf126..40da89a 100644 --- a/cpp03/ex02/ScavTrap.cpp +++ b/cpp03/ex02/ScavTrap.cpp @@ -6,47 +6,33 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:15:03 by charles #+# #+# */ -/* Updated: 2020/11/11 06:42:58 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:26 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap() : ClapTrap() -{ - m_energyPoints = 50; - m_maxEnergyPoints = 50; - m_meleeAttackDamage = 20; - m_rangedAttackDamage = 15; - m_armorDamageReduction = 3; - std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ScavTrap::ScavTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 50; m_maxEnergyPoints = 50; + m_level = 1; m_meleeAttackDamage = 20; m_rangedAttackDamage = 15; m_armorDamageReduction = 3; std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; } -ScavTrap::ScavTrap(ScavTrap const& other) +ScavTrap::ScavTrap(ScavTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "SC4V-TP New from "<< other.m_name << std::endl; } ScavTrap& ScavTrap::operator=(ScavTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -64,7 +50,10 @@ void ScavTrap::challengeNewcomer(std::string const& target) "draw your name by peeing in the snow", "punch me" }; - std::cout << "SC4V-TP " << m_name + std::cout << "SC4V-TP " << m_name << " challenge " << target - << " to " << challenges[rand() % 5] << std::endl; + << " to " << challenges[rand() % 5] + << std::endl; } + +ScavTrap::ScavTrap() {} diff --git a/cpp03/ex02/ScavTrap.hpp b/cpp03/ex02/ScavTrap.hpp index b1c162d..2ad165b 100644 --- a/cpp03/ex02/ScavTrap.hpp +++ b/cpp03/ex02/ScavTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:11:51 by charles #+# #+# */ -/* Updated: 2020/11/10 14:38:59 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:45:12 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,13 +19,15 @@ class ScavTrap : public ClapTrap { public: - ScavTrap(); ScavTrap(std::string const& name); ScavTrap(ScavTrap const& other); ScavTrap& operator=(ScavTrap const& other); ~ScavTrap(); void challengeNewcomer(std::string const& target); + +private: + ScavTrap(); }; #endif diff --git a/cpp03/ex02/main.cpp b/cpp03/ex02/main.cpp index 3263cc7..b8a03b6 100644 --- a/cpp03/ex02/main.cpp +++ b/cpp03/ex02/main.cpp @@ -6,12 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:53:49 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:41:46 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include #include +#include #include "FragTrap.hpp" #include "ScavTrap.hpp" @@ -28,45 +29,109 @@ int main(void) seed = time(NULL); srand(seed); - FragTrap ft("bob"); - std::cout << "=== ATTACK ===" << std::endl; - ft.rangedAttack("a dog"); - ft.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - ft.takeDamage(0); - ft.beRepaired(0); - ft.takeDamage(10); - ft.beRepaired(10); - std::cout << std::endl << "=== VAULTHUNTER ===" << std::endl; - ft.vaulthunter_dot_exe("your mom"); - ft.vaulthunter_dot_exe("your dad"); - ft.vaulthunter_dot_exe("your brother"); - ft.vaulthunter_dot_exe("your sister"); - std::cout << "=== VAULTHUNTER NO ENERGY ===" << std::endl; - ft.vaulthunter_dot_exe("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - ft.takeDamage(1000); - ft.beRepaired(1000); + { + std::cout << "============================== FRAG TRAP ==============================" << std::endl; + FragTrap ft("Fragger"); + std::cout << "################################################## ATTACKS" << std::endl; + ft.rangedAttack("a dog"); + ft.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ft.takeDamage(0); + ft.beRepaired(0); + ft.takeDamage(10); + ft.beRepaired(10); + ft.takeDamage(60); + ft.beRepaired(20); + ft.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ft.takeDamage(110); + ft.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + FragTrap ft2(ft); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + FragTrap ft3("foo"); + ft3 = ft; + } + std::cout << "################################################## VAULTHUNTER" << std::endl; + ft.vaulthunter_dot_exe("your mom"); + ft.vaulthunter_dot_exe("your dad"); + ft.vaulthunter_dot_exe("your brother"); + ft.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + ft.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; - std::cout << std::endl << std::endl << std::endl; + { + std::cout << "============================== SCAV TRAP ==============================" << std::endl; + ScavTrap sv("Scaved"); + std::cout << "################################################## ATTACKS" << std::endl; + sv.rangedAttack("a dog"); + sv.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + sv.takeDamage(0); + sv.beRepaired(0); + sv.takeDamage(10); + sv.beRepaired(10); + sv.takeDamage(60); + sv.beRepaired(20); + sv.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + sv.takeDamage(110); + sv.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ScavTrap sv2(sv); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ScavTrap sv3("foo"); + sv3 = sv; + } + std::cout << "################################################## CHALLENGE NEW COMER" << std::endl; + sv.challengeNewcomer("your mom"); + sv.challengeNewcomer("your dad"); + sv.challengeNewcomer("your brother"); + sv.challengeNewcomer("your sister"); + sv.challengeNewcomer("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "============================== CLAP TRAP ==============================" << std::endl; + ClapTrap cl("Clapped"); + std::cout << "################################################## ATTACKS" << std::endl; + cl.rangedAttack("a dog"); + cl.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + cl.takeDamage(0); + cl.beRepaired(0); + cl.takeDamage(10); + cl.beRepaired(10); + cl.takeDamage(60); + cl.beRepaired(20); + cl.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + cl.takeDamage(110); + cl.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ClapTrap cl2(cl); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ClapTrap cl3("foo"); + cl3 = cl; + } + std::cout << "################################################## DESTRUCTOR" << std::endl; + } - ScavTrap scav("jean"); - std::cout << "=== ATTACK ===" << std::endl; - scav.rangedAttack("a dog"); - scav.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - scav.takeDamage(0); - scav.beRepaired(0); - scav.takeDamage(10); - scav.beRepaired(10); - std::cout << std::endl << "=== CHALLENGE NEW COMER ===" << std::endl; - scav.challengeNewcomer("your mom"); - scav.challengeNewcomer("your dad"); - scav.challengeNewcomer("your brother"); - scav.challengeNewcomer("your sister"); - scav.challengeNewcomer("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - scav.takeDamage(1000); - scav.beRepaired(1000); return 0; } diff --git a/cpp03/ex03/ClapTrap.cpp b/cpp03/ex03/ClapTrap.cpp index 4c712c3..550cef4 100644 --- a/cpp03/ex03/ClapTrap.cpp +++ b/cpp03/ex03/ClapTrap.cpp @@ -6,32 +6,18 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:28:43 by charles #+# #+# */ -/* Updated: 2020/11/11 06:41:35 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:08:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ClapTrap.hpp" -ClapTrap::ClapTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), - m_name(""), - m_meleeAttackDamage(0), - m_rangedAttackDamage(0), - m_armorDamageReduction(0) -{ - std::cout << "CL4P-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ClapTrap::ClapTrap(std::string const& name): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), + m_hitPoints(0), + m_maxHitPoints(0), + m_energyPoints(0), + m_maxEnergyPoints(0), + m_level(0), m_name(name), m_meleeAttackDamage(0), m_rangedAttackDamage(0), @@ -42,6 +28,7 @@ ClapTrap::ClapTrap(std::string const& name): ClapTrap::ClapTrap(ClapTrap const& other) { + std::cout << "CL4P-TP New from " << other.m_name << std::endl; *this = other; } @@ -73,7 +60,7 @@ void ClapTrap::rangedAttack(std::string const& target) const void ClapTrap::meleeAttack(std::string const& target) const { - std::cout << "CL4P-TP " << m_name + std::cout << "CL4P-TP " << m_name << " attacks " << target << " in melee mode causing " << m_meleeAttackDamage << " points of damage!" << std::endl; @@ -102,3 +89,5 @@ void ClapTrap::beRepaired(unsigned int amount) << " gained " << amount << " hit points" << std::endl; } + +ClapTrap::ClapTrap() {} diff --git a/cpp03/ex03/ClapTrap.hpp b/cpp03/ex03/ClapTrap.hpp index 00fd168..8fcbf1f 100644 --- a/cpp03/ex03/ClapTrap.hpp +++ b/cpp03/ex03/ClapTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:20:45 by charles #+# #+# */ -/* Updated: 2020/11/11 06:39:00 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:43:44 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class ClapTrap { public: - ClapTrap(); ClapTrap(std::string const& name); ClapTrap(ClapTrap const& other); ClapTrap& operator=(ClapTrap const& other); @@ -41,6 +40,8 @@ protected: unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + ClapTrap(); }; #endif diff --git a/cpp03/ex03/FragTrap.cpp b/cpp03/ex03/FragTrap.cpp index 9ab2ffc..b63ee6b 100644 --- a/cpp03/ex03/FragTrap.cpp +++ b/cpp03/ex03/FragTrap.cpp @@ -6,47 +6,33 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:42:32 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:11 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap() : ClapTrap() -{ - m_energyPoints = 100; - m_maxEnergyPoints = 100; - m_meleeAttackDamage = 30; - m_rangedAttackDamage = 20; - m_armorDamageReduction = 5; - std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; -} - FragTrap::FragTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 100; m_maxEnergyPoints = 100; + m_level = 1; m_meleeAttackDamage = 30; m_rangedAttackDamage = 20; m_armorDamageReduction = 5; std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; } -FragTrap::FragTrap(FragTrap const& other) +FragTrap::FragTrap(FragTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "FR4G-TP New from "<< other.m_name << std::endl; } FragTrap& FragTrap::operator=(FragTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -74,3 +60,5 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) << " with " << attacks[rand() % 5] << std::endl; m_energyPoints -= 25; } + +FragTrap::FragTrap() {} diff --git a/cpp03/ex03/FragTrap.hpp b/cpp03/ex03/FragTrap.hpp index fc99532..76c62db 100644 --- a/cpp03/ex03/FragTrap.hpp +++ b/cpp03/ex03/FragTrap.hpp @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/11/10 14:40:04 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:44:59 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,13 +19,15 @@ class FragTrap : public ClapTrap { public: - FragTrap(); FragTrap(std::string const& name); FragTrap(FragTrap const& other); FragTrap& operator=(FragTrap const& other); ~FragTrap(); void vaulthunter_dot_exe(std::string const& target); + +private: + FragTrap(); }; #endif diff --git a/cpp03/ex03/NinjaTrap.cpp b/cpp03/ex03/NinjaTrap.cpp index 384f77b..471879c 100644 --- a/cpp03/ex03/NinjaTrap.cpp +++ b/cpp03/ex03/NinjaTrap.cpp @@ -6,51 +6,33 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:33:00 by charles #+# #+# */ -/* Updated: 2020/11/11 06:49:09 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:47 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "NinjaTrap.hpp" -NinjaTrap::NinjaTrap() : ClapTrap() -{ - m_hitPoints = 60; - m_maxHitPoints = 60; - m_energyPoints = 120; - m_maxEnergyPoints = 120; - m_meleeAttackDamage = 60; - m_rangedAttackDamage = 5; - m_armorDamageReduction = 0; - std::cout << "NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; -} - NinjaTrap::NinjaTrap(std::string const& name) : ClapTrap(name) { m_hitPoints = 60; m_maxHitPoints = 60; m_energyPoints = 120; m_maxEnergyPoints = 120; + m_level = 1; m_meleeAttackDamage = 60; m_rangedAttackDamage = 5; m_armorDamageReduction = 0; - std::cout << " NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; + std::cout << "NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; } -NinjaTrap::NinjaTrap(NinjaTrap const& other) +NinjaTrap::NinjaTrap(NinjaTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "NINJ4-TP New from "<< other.m_name << std::endl; } NinjaTrap& NinjaTrap::operator=(NinjaTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -86,3 +68,5 @@ void NinjaTrap::ninjaShoebox(ClapTrap const& target) std::cout << "NINJ4-TP " << m_name << " attack clap trap, ISN'T THAT WHAT YOU WANTED" << std::endl; } + +NinjaTrap::NinjaTrap() {} diff --git a/cpp03/ex03/NinjaTrap.hpp b/cpp03/ex03/NinjaTrap.hpp index d075dba..db73de2 100644 --- a/cpp03/ex03/NinjaTrap.hpp +++ b/cpp03/ex03/NinjaTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:31:24 by charles #+# #+# */ -/* Updated: 2020/11/10 14:43:01 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:48:34 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class NinjaTrap : public ClapTrap { public: - NinjaTrap(); NinjaTrap(std::string const& name); NinjaTrap(NinjaTrap const& other); NinjaTrap& operator=(NinjaTrap const& other); @@ -30,6 +29,9 @@ public: void ninjaShoebox(FragTrap const& target); void ninjaShoebox(ScavTrap const& target); void ninjaShoebox(ClapTrap const& target); + +private: + NinjaTrap(); }; #endif diff --git a/cpp03/ex03/ScavTrap.cpp b/cpp03/ex03/ScavTrap.cpp index 1acf126..40da89a 100644 --- a/cpp03/ex03/ScavTrap.cpp +++ b/cpp03/ex03/ScavTrap.cpp @@ -6,47 +6,33 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:15:03 by charles #+# #+# */ -/* Updated: 2020/11/11 06:42:58 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:26 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap() : ClapTrap() -{ - m_energyPoints = 50; - m_maxEnergyPoints = 50; - m_meleeAttackDamage = 20; - m_rangedAttackDamage = 15; - m_armorDamageReduction = 3; - std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ScavTrap::ScavTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 50; m_maxEnergyPoints = 50; + m_level = 1; m_meleeAttackDamage = 20; m_rangedAttackDamage = 15; m_armorDamageReduction = 3; std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; } -ScavTrap::ScavTrap(ScavTrap const& other) +ScavTrap::ScavTrap(ScavTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "SC4V-TP New from "<< other.m_name << std::endl; } ScavTrap& ScavTrap::operator=(ScavTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -64,7 +50,10 @@ void ScavTrap::challengeNewcomer(std::string const& target) "draw your name by peeing in the snow", "punch me" }; - std::cout << "SC4V-TP " << m_name + std::cout << "SC4V-TP " << m_name << " challenge " << target - << " to " << challenges[rand() % 5] << std::endl; + << " to " << challenges[rand() % 5] + << std::endl; } + +ScavTrap::ScavTrap() {} diff --git a/cpp03/ex03/ScavTrap.hpp b/cpp03/ex03/ScavTrap.hpp index b1c162d..2ad165b 100644 --- a/cpp03/ex03/ScavTrap.hpp +++ b/cpp03/ex03/ScavTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:11:51 by charles #+# #+# */ -/* Updated: 2020/11/10 14:38:59 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:45:12 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,13 +19,15 @@ class ScavTrap : public ClapTrap { public: - ScavTrap(); ScavTrap(std::string const& name); ScavTrap(ScavTrap const& other); ScavTrap& operator=(ScavTrap const& other); ~ScavTrap(); void challengeNewcomer(std::string const& target); + +private: + ScavTrap(); }; #endif diff --git a/cpp03/ex03/main.cpp b/cpp03/ex03/main.cpp index c9f71a2..76141ed 100644 --- a/cpp03/ex03/main.cpp +++ b/cpp03/ex03/main.cpp @@ -6,13 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:55:12 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:40:11 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include #include -#include +#include #include "FragTrap.hpp" #include "ScavTrap.hpp" #include "NinjaTrap.hpp" @@ -30,64 +30,144 @@ int main(void) seed = time(NULL); srand(seed); - FragTrap ft("bob"); - std::cout << "=== ATTACK ===" << std::endl; - ft.rangedAttack("a dog"); - ft.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - ft.takeDamage(0); - ft.beRepaired(0); - ft.takeDamage(10); - ft.beRepaired(10); - std::cout << std::endl << "=== VAULTHUNTER ===" << std::endl; - ft.vaulthunter_dot_exe("your mom"); - ft.vaulthunter_dot_exe("your dad"); - ft.vaulthunter_dot_exe("your brother"); - ft.vaulthunter_dot_exe("your sister"); - std::cout << "=== VAULTHUNTER NO ENERGY ===" << std::endl; - ft.vaulthunter_dot_exe("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - ft.takeDamage(1000); - ft.beRepaired(1000); + { + std::cout << "============================== FRAG TRAP ==============================" << std::endl; + FragTrap ft("Fragger"); + std::cout << "################################################## ATTACKS" << std::endl; + ft.rangedAttack("a dog"); + ft.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ft.takeDamage(0); + ft.beRepaired(0); + ft.takeDamage(10); + ft.beRepaired(10); + ft.takeDamage(60); + ft.beRepaired(20); + ft.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ft.takeDamage(110); + ft.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + FragTrap ft2(ft); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + FragTrap ft3("foo"); + ft3 = ft; + } + std::cout << "################################################## VAULTHUNTER" << std::endl; + ft.vaulthunter_dot_exe("your mom"); + ft.vaulthunter_dot_exe("your dad"); + ft.vaulthunter_dot_exe("your brother"); + ft.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + ft.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; - std::cout << std::endl << std::endl; + { + std::cout << "============================== SCAV TRAP ==============================" << std::endl; + ScavTrap sv("Scaved"); + std::cout << "################################################## ATTACKS" << std::endl; + sv.rangedAttack("a dog"); + sv.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + sv.takeDamage(0); + sv.beRepaired(0); + sv.takeDamage(10); + sv.beRepaired(10); + sv.takeDamage(60); + sv.beRepaired(20); + sv.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + sv.takeDamage(110); + sv.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ScavTrap sv2(sv); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ScavTrap sv3("foo"); + sv3 = sv; + } + std::cout << "################################################## CHALLENGE NEW COMER" << std::endl; + sv.challengeNewcomer("your mom"); + sv.challengeNewcomer("your dad"); + sv.challengeNewcomer("your brother"); + sv.challengeNewcomer("your sister"); + sv.challengeNewcomer("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } - ScavTrap scav("jean"); - std::cout << "=== ATTACK ===" << std::endl; - scav.rangedAttack("a dog"); - scav.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - scav.takeDamage(0); - scav.beRepaired(0); - scav.takeDamage(10); - scav.beRepaired(10); - std::cout << std::endl << "=== CHALLENGE NEW COMER ===" << std::endl; - scav.challengeNewcomer("your mom"); - scav.challengeNewcomer("your dad"); - scav.challengeNewcomer("your brother"); - scav.challengeNewcomer("your sister"); - scav.challengeNewcomer("your grandma"); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - scav.takeDamage(1000); - scav.beRepaired(1000); + std::cout << std::endl; - std::cout << std::endl << std::endl; + { + std::cout << "============================== CLAP TRAP ==============================" << std::endl; + ClapTrap cl("Clapped"); + std::cout << "################################################## ATTACKS" << std::endl; + cl.rangedAttack("a dog"); + cl.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + cl.takeDamage(0); + cl.beRepaired(0); + cl.takeDamage(10); + cl.beRepaired(10); + cl.takeDamage(60); + cl.beRepaired(20); + cl.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + cl.takeDamage(110); + cl.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ClapTrap cl2(cl); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ClapTrap cl3("foo"); + cl3 = cl; + } + std::cout << "################################################## DESTRUCTOR" << std::endl; + } std::cout << std::endl; - NinjaTrap ninja("didier"); - std::cout << "=== ATTACK ===" << std::endl; - ninja.rangedAttack("a dog"); - ninja.meleeAttack("a cat"); - std::cout << std::endl << "=== DAMAGE ===" << std::endl; - ninja.takeDamage(10); - ninja.beRepaired(10); - std::cout << std::endl << "=== SHOE BOX ===" << std::endl; - ninja.ninjaShoebox(ninja); - ninja.ninjaShoebox(ft); - ninja.ninjaShoebox(scav); - ninja.ninjaShoebox(ClapTrap("oui")); - std::cout << std::endl << "=== OVER LIMIT ===" << std::endl; - ninja.takeDamage(1000); - ninja.beRepaired(1000); + + { + std::cout << "============================== NINJA TRAP ==============================" << std::endl; + NinjaTrap ni("Ninjer"); + std::cout << "################################################## ATTACKS" << std::endl; + ni.rangedAttack("a dog"); + ni.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ni.takeDamage(0); + ni.beRepaired(0); + ni.takeDamage(10); + ni.beRepaired(10); + ni.takeDamage(60); + ni.beRepaired(20); + ni.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ni.takeDamage(110); + ni.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + NinjaTrap ni2(ni); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + NinjaTrap ni3("foo"); + ni3 = ni; + } + std::cout << "################################################## SHOE BOX" << std::endl; + ni.ninjaShoebox(FragTrap("Innocent_frag_trap")); + ni.ninjaShoebox(ScavTrap("Anoying_scav_trap")); + ni.ninjaShoebox(NinjaTrap("Fellow_intelectual")); + ni.ninjaShoebox(ClapTrap("Basic_clap")); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } return 0; } diff --git a/cpp03/ex04/ClapTrap.cpp b/cpp03/ex04/ClapTrap.cpp index 4c712c3..550cef4 100644 --- a/cpp03/ex04/ClapTrap.cpp +++ b/cpp03/ex04/ClapTrap.cpp @@ -6,32 +6,18 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:28:43 by charles #+# #+# */ -/* Updated: 2020/11/11 06:41:35 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:08:15 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ClapTrap.hpp" -ClapTrap::ClapTrap(): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), - m_name(""), - m_meleeAttackDamage(0), - m_rangedAttackDamage(0), - m_armorDamageReduction(0) -{ - std::cout << "CL4P-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ClapTrap::ClapTrap(std::string const& name): - m_hitPoints(100), - m_maxHitPoints(100), - m_energyPoints(100), - m_maxEnergyPoints(100), - m_level(1), + m_hitPoints(0), + m_maxHitPoints(0), + m_energyPoints(0), + m_maxEnergyPoints(0), + m_level(0), m_name(name), m_meleeAttackDamage(0), m_rangedAttackDamage(0), @@ -42,6 +28,7 @@ ClapTrap::ClapTrap(std::string const& name): ClapTrap::ClapTrap(ClapTrap const& other) { + std::cout << "CL4P-TP New from " << other.m_name << std::endl; *this = other; } @@ -73,7 +60,7 @@ void ClapTrap::rangedAttack(std::string const& target) const void ClapTrap::meleeAttack(std::string const& target) const { - std::cout << "CL4P-TP " << m_name + std::cout << "CL4P-TP " << m_name << " attacks " << target << " in melee mode causing " << m_meleeAttackDamage << " points of damage!" << std::endl; @@ -102,3 +89,5 @@ void ClapTrap::beRepaired(unsigned int amount) << " gained " << amount << " hit points" << std::endl; } + +ClapTrap::ClapTrap() {} diff --git a/cpp03/ex04/ClapTrap.hpp b/cpp03/ex04/ClapTrap.hpp index 8d38307..8fcbf1f 100644 --- a/cpp03/ex04/ClapTrap.hpp +++ b/cpp03/ex04/ClapTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 15:20:45 by charles #+# #+# */ -/* Updated: 2020/11/11 07:29:18 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:43:44 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ class ClapTrap { public: - ClapTrap(); ClapTrap(std::string const& name); ClapTrap(ClapTrap const& other); ClapTrap& operator=(ClapTrap const& other); @@ -41,6 +40,8 @@ protected: unsigned int m_meleeAttackDamage; unsigned int m_rangedAttackDamage; unsigned int m_armorDamageReduction; + + ClapTrap(); }; #endif diff --git a/cpp03/ex04/FragTrap.cpp b/cpp03/ex04/FragTrap.cpp index 9ab2ffc..b63ee6b 100644 --- a/cpp03/ex04/FragTrap.cpp +++ b/cpp03/ex04/FragTrap.cpp @@ -6,47 +6,33 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/11/11 06:42:32 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:11 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap() : ClapTrap() -{ - m_energyPoints = 100; - m_maxEnergyPoints = 100; - m_meleeAttackDamage = 30; - m_rangedAttackDamage = 20; - m_armorDamageReduction = 5; - std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; -} - FragTrap::FragTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 100; m_maxEnergyPoints = 100; + m_level = 1; m_meleeAttackDamage = 30; m_rangedAttackDamage = 20; m_armorDamageReduction = 5; std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; } -FragTrap::FragTrap(FragTrap const& other) +FragTrap::FragTrap(FragTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "FR4G-TP New from "<< other.m_name << std::endl; } FragTrap& FragTrap::operator=(FragTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -74,3 +60,5 @@ void FragTrap::vaulthunter_dot_exe(std::string const& target) << " with " << attacks[rand() % 5] << std::endl; m_energyPoints -= 25; } + +FragTrap::FragTrap() {} diff --git a/cpp03/ex04/FragTrap.hpp b/cpp03/ex04/FragTrap.hpp index 283b219..8e9de1b 100644 --- a/cpp03/ex04/FragTrap.hpp +++ b/cpp03/ex04/FragTrap.hpp @@ -6,26 +6,30 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/11/11 07:04:32 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 09:14:11 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FRAGTRAP_HPP # define FRAGTRAP_HPP +# include +# include # include # include "ClapTrap.hpp" class FragTrap : virtual public ClapTrap { public: - FragTrap(); FragTrap(std::string const& name); FragTrap(FragTrap const& other); FragTrap& operator=(FragTrap const& other); ~FragTrap(); void vaulthunter_dot_exe(std::string const& target); + +protected: + FragTrap(); }; #endif diff --git a/cpp03/ex04/NinjaTrap.cpp b/cpp03/ex04/NinjaTrap.cpp index 384f77b..471879c 100644 --- a/cpp03/ex04/NinjaTrap.cpp +++ b/cpp03/ex04/NinjaTrap.cpp @@ -6,51 +6,33 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:33:00 by charles #+# #+# */ -/* Updated: 2020/11/11 06:49:09 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:47 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "NinjaTrap.hpp" -NinjaTrap::NinjaTrap() : ClapTrap() -{ - m_hitPoints = 60; - m_maxHitPoints = 60; - m_energyPoints = 120; - m_maxEnergyPoints = 120; - m_meleeAttackDamage = 60; - m_rangedAttackDamage = 5; - m_armorDamageReduction = 0; - std::cout << "NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; -} - NinjaTrap::NinjaTrap(std::string const& name) : ClapTrap(name) { m_hitPoints = 60; m_maxHitPoints = 60; m_energyPoints = 120; m_maxEnergyPoints = 120; + m_level = 1; m_meleeAttackDamage = 60; m_rangedAttackDamage = 5; m_armorDamageReduction = 0; - std::cout << " NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; + std::cout << "NINJ4-TP New " << m_name << ": your gaming references suck" << std::endl; } -NinjaTrap::NinjaTrap(NinjaTrap const& other) +NinjaTrap::NinjaTrap(NinjaTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "NINJ4-TP New from "<< other.m_name << std::endl; } NinjaTrap& NinjaTrap::operator=(NinjaTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -86,3 +68,5 @@ void NinjaTrap::ninjaShoebox(ClapTrap const& target) std::cout << "NINJ4-TP " << m_name << " attack clap trap, ISN'T THAT WHAT YOU WANTED" << std::endl; } + +NinjaTrap::NinjaTrap() {} diff --git a/cpp03/ex04/NinjaTrap.hpp b/cpp03/ex04/NinjaTrap.hpp index d075dba..86aa4f3 100644 --- a/cpp03/ex04/NinjaTrap.hpp +++ b/cpp03/ex04/NinjaTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:31:24 by charles #+# #+# */ -/* Updated: 2020/11/10 14:43:01 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:54:34 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,10 +17,9 @@ # include "FragTrap.hpp" # include "ScavTrap.hpp" -class NinjaTrap : public ClapTrap +class NinjaTrap : virtual public ClapTrap { public: - NinjaTrap(); NinjaTrap(std::string const& name); NinjaTrap(NinjaTrap const& other); NinjaTrap& operator=(NinjaTrap const& other); @@ -30,6 +29,9 @@ public: void ninjaShoebox(FragTrap const& target); void ninjaShoebox(ScavTrap const& target); void ninjaShoebox(ClapTrap const& target); + +protected: + NinjaTrap(); }; #endif diff --git a/cpp03/ex04/ScavTrap.cpp b/cpp03/ex04/ScavTrap.cpp index 1acf126..40da89a 100644 --- a/cpp03/ex04/ScavTrap.cpp +++ b/cpp03/ex04/ScavTrap.cpp @@ -6,47 +6,33 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:15:03 by charles #+# #+# */ -/* Updated: 2020/11/11 06:42:58 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:07:26 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap() : ClapTrap() -{ - m_energyPoints = 50; - m_maxEnergyPoints = 50; - m_meleeAttackDamage = 20; - m_rangedAttackDamage = 15; - m_armorDamageReduction = 3; - std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; -} - ScavTrap::ScavTrap(std::string const& name) : ClapTrap(name) { + m_hitPoints = 100; + m_maxHitPoints = 100; m_energyPoints = 50; m_maxEnergyPoints = 50; + m_level = 1; m_meleeAttackDamage = 20; m_rangedAttackDamage = 15; m_armorDamageReduction = 3; std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; } -ScavTrap::ScavTrap(ScavTrap const& other) +ScavTrap::ScavTrap(ScavTrap const& other) : ClapTrap(other) { - *this = other; + std::cout << "SC4V-TP New from "<< other.m_name << std::endl; } ScavTrap& ScavTrap::operator=(ScavTrap const& other) { - m_hitPoints = other.m_hitPoints; - m_maxHitPoints = other.m_maxHitPoints; - m_energyPoints = other.m_energyPoints; - m_maxEnergyPoints = other.m_maxEnergyPoints; - m_level = other.m_level; - m_meleeAttackDamage = other.m_meleeAttackDamage; - m_rangedAttackDamage = other.m_rangedAttackDamage; - m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } @@ -64,7 +50,10 @@ void ScavTrap::challengeNewcomer(std::string const& target) "draw your name by peeing in the snow", "punch me" }; - std::cout << "SC4V-TP " << m_name + std::cout << "SC4V-TP " << m_name << " challenge " << target - << " to " << challenges[rand() % 5] << std::endl; + << " to " << challenges[rand() % 5] + << std::endl; } + +ScavTrap::ScavTrap() {} diff --git a/cpp03/ex04/ScavTrap.hpp b/cpp03/ex04/ScavTrap.hpp index e908722..32e8dd4 100644 --- a/cpp03/ex04/ScavTrap.hpp +++ b/cpp03/ex04/ScavTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 14:11:51 by charles #+# #+# */ -/* Updated: 2020/11/11 07:04:45 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 09:18:43 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,18 +14,22 @@ # define SCAVTRAP_HPP # include +# include +# include # include "ClapTrap.hpp" -class ScavTrap : virtual public ClapTrap +class ScavTrap : public ClapTrap { public: - ScavTrap(); ScavTrap(std::string const& name); ScavTrap(ScavTrap const& other); ScavTrap& operator=(ScavTrap const& other); ~ScavTrap(); void challengeNewcomer(std::string const& target); + +private: + ScavTrap(); }; #endif diff --git a/cpp03/ex04/SuperTrap.cpp b/cpp03/ex04/SuperTrap.cpp index 1555956..bc5947d 100644 --- a/cpp03/ex04/SuperTrap.cpp +++ b/cpp03/ex04/SuperTrap.cpp @@ -6,69 +6,47 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:52:56 by charles #+# #+# */ -/* Updated: 2020/11/11 08:15:03 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:33:35 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "SuperTrap.hpp" -SuperTrap::SuperTrap() : ClapTrap(), FragTrap(), NinjaTrap() -{ - // m_hitPoints = 100; - // m_maxHitPoints = 100; - // m_energyPoints = 100; - // m_maxEnergyPoints = 100; - // m_level = 1; - // m_name = ""; - // m_meleeAttackDamage = 0; - // m_rangedAttackDamage = 0; - // m_armorDamageReduction = 0; - // std::cout << "SUP3R-TP New " << m_name << ": your gaming references suck" << std::endl; -} - SuperTrap::SuperTrap(std::string const& name) : ClapTrap(name), FragTrap(name), NinjaTrap(name) { m_hitPoints = 100; - // m_maxHitPoints = 100; - // m_energyPoints = 100; - // m_maxEnergyPoints = 100; - // m_level = 1; - // m_name = name; - // m_meleeAttackDamage = 0; - // m_rangedAttackDamage = 0; - // m_armorDamageReduction = 0; - // std::cout << "SUP3R-TP New " << m_name << ": your gaming references suck" << std::endl; + m_maxHitPoints = 100; + m_energyPoints = 120; + m_maxEnergyPoints = 120; + m_level = 1; + m_name = name; + m_meleeAttackDamage = 60; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "SUP3R-TP New " << m_name << ": your gaming references suck" << std::endl; } -SuperTrap::SuperTrap(SuperTrap const& other) -{ - *this = other; -} +SuperTrap::SuperTrap(SuperTrap const& other) : ClapTrap(other), FragTrap(other), NinjaTrap(other) {} SuperTrap& SuperTrap::operator=(SuperTrap const& other) { - // m_hitPoints = other.m_hitPoints; - // m_maxHitPoints = other.m_maxHitPoints; - // m_energyPoints = other.m_energyPoints; - // m_maxEnergyPoints = other.m_maxEnergyPoints; - // m_level = other.m_level; - // m_meleeAttackDamage = other.m_meleeAttackDamage; - // m_rangedAttackDamage = other.m_rangedAttackDamage; - // m_armorDamageReduction = other.m_armorDamageReduction; + ClapTrap::operator=(other); return *this; } SuperTrap::~SuperTrap() { - // std::cout << "SUP3R-TP Delete "<< m_name << ": your gaming references still suck" << std::endl; + std::cout << "SUP3R-TP Delete "<< m_name << ": your gaming references still suck" << std::endl; } void SuperTrap::rangedAttack(std::string const& target) const { - // FragTrap::rangedArray(target); + FragTrap::rangedAttack(target); } void SuperTrap::meleeAttack(std::string const& target) const { - // NinjaTrap::rangedArray(target); + NinjaTrap::meleeAttack(target); } + +SuperTrap::SuperTrap() {} diff --git a/cpp03/ex04/SuperTrap.hpp b/cpp03/ex04/SuperTrap.hpp index f660e20..ac76037 100644 --- a/cpp03/ex04/SuperTrap.hpp +++ b/cpp03/ex04/SuperTrap.hpp @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 17:48:31 by charles #+# #+# */ -/* Updated: 2020/11/11 07:13:14 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 08:50:07 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,6 @@ class SuperTrap : public FragTrap, public NinjaTrap { public: - SuperTrap(); SuperTrap(std::string const& name); SuperTrap(SuperTrap const& other); SuperTrap& operator=(SuperTrap const& other); @@ -29,6 +28,9 @@ public: void rangedAttack(std::string const& target) const; void meleeAttack(std::string const& target) const; + +private: + SuperTrap(); }; #endif diff --git a/cpp03/ex04/main.cpp b/cpp03/ex04/main.cpp index 3d387ae..0358760 100644 --- a/cpp03/ex04/main.cpp +++ b/cpp03/ex04/main.cpp @@ -6,57 +6,213 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/11/11 08:19:33 by cacharle ### ########.fr */ +/* Updated: 2020/11/12 10:13:44 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include +#include +#include #include "FragTrap.hpp" #include "ScavTrap.hpp" #include "NinjaTrap.hpp" +#include "SuperTrap.hpp" int main(void) { - // srand(time(NULL)); - - // FragTrap ft("bob"); - // ft.rangedAttack("a dog"); - // ft.meleeAttack("a cat"); - // ft.takeDamage(10); - // ft.beRepaired(10); - // ft.vaulthunter_dot_exe("your mom"); - // ft.vaulthunter_dot_exe("your dad"); - // ft.vaulthunter_dot_exe("your brother"); - // ft.vaulthunter_dot_exe("your sister"); - // ft.vaulthunter_dot_exe("your grandma"); - // ft.takeDamage(1000); - // ft.beRepaired(1000); - // - // std::cout << std::endl; - // ScavTrap scav("jean"); - // scav.rangedAttack("a dog"); - // scav.meleeAttack("a cat"); - // scav.takeDamage(10); - // scav.beRepaired(10); - // scav.challengeNewcomer("your mom"); - // scav.challengeNewcomer("your dad"); - // scav.challengeNewcomer("your brother"); - // scav.challengeNewcomer("your sister"); - // scav.challengeNewcomer("your grandma"); - // scav.takeDamage(1000); - // scav.beRepaired(1000); - // - // std::cout << std::endl; - // NinjaTrap ninja("didier"); - // ninja.rangedAttack("a dog"); - // ninja.meleeAttack("a cat"); - // ninja.takeDamage(10); - // ninja.beRepaired(10); - // ninja.ninjaShoebox(ninja); - // ninja.ninjaShoebox(ft); - // ninja.ninjaShoebox(scav); - // ninja.ninjaShoebox(ClapTrap("oui")); - // ninja.takeDamage(1000); - // ninja.beRepaired(1000); + int seed; + std::ifstream devRandom("/dev/random"); + if (devRandom.is_open()) + { + devRandom.read((char*)&seed, sizeof(int)); + devRandom.close(); + } + else + seed = time(NULL); + srand(seed); + + { + std::cout << "============================== FRAG TRAP ==============================" << std::endl; + FragTrap ft("Fragger"); + std::cout << "################################################## ATTACKS" << std::endl; + ft.rangedAttack("a dog"); + ft.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ft.takeDamage(0); + ft.beRepaired(0); + ft.takeDamage(10); + ft.beRepaired(10); + ft.takeDamage(60); + ft.beRepaired(20); + ft.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ft.takeDamage(110); + ft.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + FragTrap ft2(ft); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + FragTrap ft3("foo"); + ft3 = ft; + } + std::cout << "################################################## VAULTHUNTER" << std::endl; + ft.vaulthunter_dot_exe("your mom"); + ft.vaulthunter_dot_exe("your dad"); + ft.vaulthunter_dot_exe("your brother"); + ft.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + ft.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "============================== SCAV TRAP ==============================" << std::endl; + ScavTrap sv("Scaved"); + std::cout << "################################################## ATTACKS" << std::endl; + sv.rangedAttack("a dog"); + sv.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + sv.takeDamage(0); + sv.beRepaired(0); + sv.takeDamage(10); + sv.beRepaired(10); + sv.takeDamage(60); + sv.beRepaired(20); + sv.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + sv.takeDamage(110); + sv.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ScavTrap sv2(sv); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ScavTrap sv3("foo"); + sv3 = sv; + } + std::cout << "################################################## CHALLENGE NEW COMER" << std::endl; + sv.challengeNewcomer("your mom"); + sv.challengeNewcomer("your dad"); + sv.challengeNewcomer("your brother"); + sv.challengeNewcomer("your sister"); + sv.challengeNewcomer("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "============================== CLAP TRAP ==============================" << std::endl; + ClapTrap cl("Clapped"); + std::cout << "################################################## ATTACKS" << std::endl; + cl.rangedAttack("a dog"); + cl.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + cl.takeDamage(0); + cl.beRepaired(0); + cl.takeDamage(10); + cl.beRepaired(10); + cl.takeDamage(60); + cl.beRepaired(20); + cl.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + cl.takeDamage(110); + cl.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + ClapTrap cl2(cl); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + ClapTrap cl3("foo"); + cl3 = cl; + } + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "============================== NINJA TRAP ==============================" << std::endl; + NinjaTrap ni("Ninjer"); + std::cout << "################################################## ATTACKS" << std::endl; + ni.rangedAttack("a dog"); + ni.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + ni.takeDamage(0); + ni.beRepaired(0); + ni.takeDamage(10); + ni.beRepaired(10); + ni.takeDamage(60); + ni.beRepaired(20); + ni.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + ni.takeDamage(110); + ni.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + NinjaTrap ni2(ni); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + NinjaTrap ni3("foo"); + ni3 = ni; + } + std::cout << "################################################## SHOE BOX" << std::endl; + ni.ninjaShoebox(FragTrap("Innocent_frag_trap")); + ni.ninjaShoebox(ScavTrap("Anoying_scav_trap")); + ni.ninjaShoebox(NinjaTrap("Fellow_intelectual")); + ni.ninjaShoebox(ClapTrap("Basic_clap")); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "============================== SUPER TRAP ==============================" << std::endl; + SuperTrap su("SuperMan"); + std::cout << "################################################## ATTACKS" << std::endl; + su.rangedAttack("a dog"); + su.meleeAttack("a cat"); + std::cout << "################################################## DAMAGE" << std::endl; + su.takeDamage(0); + su.beRepaired(0); + su.takeDamage(10); + su.beRepaired(10); + su.takeDamage(60); + su.beRepaired(20); + su.beRepaired(40); + std::cout << "################################################## DAMAGE OVERFLOW" << std::endl; + su.takeDamage(110); + su.beRepaired(110); + { + std::cout << "################################################## COPY CONSTRUCTOR" << std::endl; + SuperTrap su2(su); + } + { + std::cout << "################################################## OPERATOR=" << std::endl; + SuperTrap su3("foo"); + su3 = su; + } + std::cout << "################################################## SHOE BOX" << std::endl; + su.ninjaShoebox(FragTrap("Innocent_frag_trap")); + su.ninjaShoebox(ScavTrap("Anoying_scav_trap")); + su.ninjaShoebox(NinjaTrap("Fellow_intelectual")); + su.ninjaShoebox(ClapTrap("Basic_clap")); + std::cout << "################################################## VAULTHUNTER" << std::endl; + su.vaulthunter_dot_exe("your mom"); + su.vaulthunter_dot_exe("your dad"); + su.vaulthunter_dot_exe("your brother"); + su.vaulthunter_dot_exe("your sister"); + std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl; + su.vaulthunter_dot_exe("your grandma"); + std::cout << "################################################## DESTRUCTOR" << std::endl; + } + return 0; } -- cgit