aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--cpp02/ex01/main_DO_NOT_TURN_ME_IN.cpp9
-rw-r--r--cpp03/ex00/FragTrap.cpp19
-rw-r--r--cpp03/ex00/FragTrap.hpp5
-rw-r--r--cpp03/ex00/main.cpp62
-rw-r--r--cpp03/ex01/FragTrap.cpp21
-rw-r--r--cpp03/ex01/FragTrap.hpp5
-rw-r--r--cpp03/ex01/ScavTrap.cpp43
-rw-r--r--cpp03/ex01/ScavTrap.hpp7
-rw-r--r--cpp03/ex01/main.cpp111
-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
-rw-r--r--cpp03/ex03/ClapTrap.cpp31
-rw-r--r--cpp03/ex03/ClapTrap.hpp5
-rw-r--r--cpp03/ex03/FragTrap.cpp30
-rw-r--r--cpp03/ex03/FragTrap.hpp6
-rw-r--r--cpp03/ex03/NinjaTrap.cpp32
-rw-r--r--cpp03/ex03/NinjaTrap.hpp6
-rw-r--r--cpp03/ex03/ScavTrap.cpp35
-rw-r--r--cpp03/ex03/ScavTrap.hpp6
-rw-r--r--cpp03/ex03/main.cpp192
-rw-r--r--cpp03/ex04/ClapTrap.cpp31
-rw-r--r--cpp03/ex04/ClapTrap.hpp5
-rw-r--r--cpp03/ex04/FragTrap.cpp30
-rw-r--r--cpp03/ex04/FragTrap.hpp8
-rw-r--r--cpp03/ex04/NinjaTrap.cpp32
-rw-r--r--cpp03/ex04/NinjaTrap.hpp8
-rw-r--r--cpp03/ex04/ScavTrap.cpp35
-rw-r--r--cpp03/ex04/ScavTrap.hpp10
-rw-r--r--cpp03/ex04/SuperTrap.cpp56
-rw-r--r--cpp03/ex04/SuperTrap.hpp6
-rw-r--r--cpp03/ex04/main.cpp240
-rw-r--r--cpp06/ex00/DynamicConverter.cpp51
-rw-r--r--cpp06/ex00/DynamicConverter.hpp44
-rw-r--r--cpp06/ex00/detect.cpp13
-rw-r--r--cpp06/ex00/main.cpp93
-rw-r--r--cpp06/ex00/optional.hpp28
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