diff options
41 files changed, 851 insertions, 720 deletions
diff --git a/cpp02/ex01/main_DO_NOT_TURN_ME_IN.cpp b/cpp02/ex01/main_DO_NOT_TURN_ME_IN.cpp index f2eb5e0..ea1cd08 100644 --- a/cpp02/ex01/main_DO_NOT_TURN_ME_IN.cpp +++ b/cpp02/ex01/main_DO_NOT_TURN_ME_IN.cpp @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/13 11:51:15 by charles #+# #+# */ -/* Updated: 2020/11/10 10:00:32 by cacharle ### ########.fr */ +/* Updated: 2020/11/11 13:53:50 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,5 +32,12 @@ int main(void) std::cout << "c is " << c.toInt() << " as integer" << std::endl; std::cout << "d is " << d.toInt() << " as integer" << std::endl; + std::cout << std::endl << "===============================================" << std::endl; + std::cout << "a is " << a.toFloat() << " as float" << std::endl; + std::cout << "b is " << b.toFloat() << " as float" << std::endl; + std::cout << "c is " << c.toFloat() << " as float" << std::endl; + std::cout << "d is " << d.toFloat() << " as float" << std::endl; + std::cout << "===============================================" << std::endl << std::endl; + return 0; } 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> #include <fstream> +#include <iostream> #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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> #include <fstream> +#include <iostream> #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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> #include <fstream> +#include <iostream> #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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> #include <fstream> -#include <ctime> +#include <iostream> #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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <iostream> +# include <string> # include <cstdlib> # 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> +# include <iostream> +# include <string> # 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <cstdlib> +#include <fstream> +#include <iostream> #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; } diff --git a/cpp06/ex00/DynamicConverter.cpp b/cpp06/ex00/DynamicConverter.cpp deleted file mode 100644 index c22d469..0000000 --- a/cpp06/ex00/DynamicConverter.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* DynamicConverter.cpp :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/04/16 11:48:33 by charles #+# #+# */ -/* Updated: 2020/04/16 12:25:58 by charles ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "DynamicConverter.hpp" - -DynamicConverter(DynamicConverter const& other) -{ - *this = other; -} - -DynamicConverter& operator=(DynamicConverter const& other) -{ - if (*this == other) - return *this; - m_origin = other.m_origin; - m_type = other.m_type; - m_int = other.m_int; - m_char = other.m_char; - m_float = other.m_float; - m_double = other.m_double; - return *this; -} - -~DynamicConverter() -{} - -DynamicConverter(std::string const& origin) - : m_origin(origin) -{ - if (isCharLitteral(origin)) - m_type = DetectedTypeChar; - else if (isIntLitteral(origin)) - else if (isFloatLitteral(origin)) - else if (isDoubleLitteral(origin)) - - -} - -bool isCharLitteral(std::string const& s) -{ - if (!origin.length() == 3 && origin[0] == '\'' && origin[2] == '\''); -} diff --git a/cpp06/ex00/DynamicConverter.hpp b/cpp06/ex00/DynamicConverter.hpp deleted file mode 100644 index 3f400a2..0000000 --- a/cpp06/ex00/DynamicConverter.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* DynamicConverter.hpp :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/04/16 11:35:47 by charles #+# #+# */ -/* Updated: 2020/04/16 11:56:10 by charles ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef INCLUDE_HPP -# define INCLUDE_HPP - -class DynamicConverter -{ -public: - DynamicConverter(DynamicConverter const& other); - DynamicConverter& operator=(DynamicConverter const& other); - ~DynamicConverter(); - - DynamicConverter(std::string const& origin); - - enum DetectedType - { - DetectedTypeInt, - DetectedTypeChar, - DetectedTypeFloat, - DetectedTypeDouble, - }; - -private: - DynamicConverter(); - - std::string m_origin; - DetectedType m_type; - Optional<int> m_int; - Optional<char> m_char; - Optional<float> m_float; - Optional<double> m_double; -}; - -#endif diff --git a/cpp06/ex00/detect.cpp b/cpp06/ex00/detect.cpp deleted file mode 100644 index 5dab8fb..0000000 --- a/cpp06/ex00/detect.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* detect.cpp :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/04/16 11:32:53 by charles #+# #+# */ -/* Updated: 2020/04/16 11:45:28 by charles ### ########.fr */ -/* */ -/* ************************************************************************** */ - - diff --git a/cpp06/ex00/main.cpp b/cpp06/ex00/main.cpp index 35d64b9..ec30bb8 100644 --- a/cpp06/ex00/main.cpp +++ b/cpp06/ex00/main.cpp @@ -6,27 +6,102 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/16 10:54:10 by charles #+# #+# */ -/* Updated: 2020/04/16 12:23:06 by charles ### ########.fr */ +/* Updated: 2020/11/11 09:21:08 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <iostream> #include <sstream> +#include <string> int main(int argc, char **argv) { - // if (argc != 2) - // { - // std::cout << "Usage: " << argv[0] << " litteral" << std::endl; - // return 1; - // } + if (argc != 2) + { + std::cerr << "Usage: " << argv[0] << " litteral" << std::endl; + return 1; + } - int i; - std::istringstream("bonjour") >> i; + std::string s(argv[1]); + if (s.empty()) + { + std::cerr << "Cannot be empty" << std::endl; + return 1; + } + + bool negative = false; + if (s[0] == '-' || s[0] == '+') + { + if (s[0] == '-') + negative = true; + s.erase(0, 1); + } + + char c; + int i; + float f; + double d; + + if (s == "nan" || s == "inf") + { + d = s == "nan" ? NaN : inf; + if (negative) + d = -d; + f = static_cast<float>(d); + i = static_cast<int>(d); + c = static_cast<char>(d); + } + if (s == "nanf" || s == "inff") + { + f = s == "nanf" ? NaN : inff; + if (negative) + f = -f; + d = static_cast<double>(f); + i = static_cast<int>(f); + c = static_cast<char>(f); + } + + if (isdigit(s[0])) + { + std::stringstream ss(s); + + if (s.find(".") == -1) + { + ss >> i; + d = static_cast<double>(i); + f = static_cast<float>(i); + c = static_cast<char>(i); + } + else if (s.find("f") != -1) + { + ss >> f; + d = static_cast<double>(f); + i = static_cast<int>(f); + c = static_cast<char>(f); + } + else + { + ss >> d; + f = static_cast<float>(d); + i = static_cast<int>(d); + c = static_cast<char>(d); + } + } + else if (!negative && s.length == 1) + { + c = s[0]; + d = static_cast<double>(c); + f = static_cast<float>(c); + i = static_cast<int>(c); + } + else + { + std::cout << "Parsing error" << std::endl; + return 1; + } - std::cout << i << std::endl; return 0; } diff --git a/cpp06/ex00/optional.hpp b/cpp06/ex00/optional.hpp deleted file mode 100644 index 2c77ae3..0000000 --- a/cpp06/ex00/optional.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* optional.hpp :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/04/16 11:43:24 by charles #+# #+# */ -/* Updated: 2020/04/16 11:45:26 by charles ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef OPTIONAL_HPP -# define OPTIONAL_HPP - -template<typename T> -class Optional -{ -public: - Optional(); - bool hasValue() const; - T& getValue(); - -private: - T m_value; -}; - -#endif |
