aboutsummaryrefslogtreecommitdiff
path: root/cpp03/ex02
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-11-12 10:54:47 +0100
committerCharles Cabergs <me@cacharle.xyz>2020-11-12 10:54:47 +0100
commit96dcf214a8c40529b251ea31ef037868583dd1da (patch)
treeecbb74fd1982829b550f5b5f5451497245db1358 /cpp03/ex02
parent2e0cf63a219d24ef07412deca9b0e6cb02882b46 (diff)
downloadpiscine_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.cpp31
-rw-r--r--cpp03/ex02/ClapTrap.hpp5
-rw-r--r--cpp03/ex02/FragTrap.cpp30
-rw-r--r--cpp03/ex02/FragTrap.hpp6
-rw-r--r--cpp03/ex02/ScavTrap.cpp35
-rw-r--r--cpp03/ex02/ScavTrap.hpp6
-rw-r--r--cpp03/ex02/main.cpp143
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;
}