diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-11-12 10:54:47 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-11-12 10:54:47 +0100 |
| commit | 96dcf214a8c40529b251ea31ef037868583dd1da (patch) | |
| tree | ecbb74fd1982829b550f5b5f5451497245db1358 /cpp03/ex02 | |
| parent | 2e0cf63a219d24ef07412deca9b0e6cb02882b46 (diff) | |
| download | piscine_cpp-96dcf214a8c40529b251ea31ef037868583dd1da.tar.gz piscine_cpp-96dcf214a8c40529b251ea31ef037868583dd1da.tar.bz2 piscine_cpp-96dcf214a8c40529b251ea31ef037868583dd1da.zip | |
Fixing cpp03, moved more common logic in ClapTrap, Added better main
Diffstat (limited to 'cpp03/ex02')
| -rw-r--r-- | cpp03/ex02/ClapTrap.cpp | 31 | ||||
| -rw-r--r-- | cpp03/ex02/ClapTrap.hpp | 5 | ||||
| -rw-r--r-- | cpp03/ex02/FragTrap.cpp | 30 | ||||
| -rw-r--r-- | cpp03/ex02/FragTrap.hpp | 6 | ||||
| -rw-r--r-- | cpp03/ex02/ScavTrap.cpp | 35 | ||||
| -rw-r--r-- | cpp03/ex02/ScavTrap.hpp | 6 | ||||
| -rw-r--r-- | cpp03/ex02/main.cpp | 143 |
7 files changed, 146 insertions, 110 deletions
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; } |
