aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp04/ex00/Sorcerer.cpp5
-rw-r--r--cpp04/ex00/main.cpp2
-rw-r--r--cpp04/ex01/AWeapon.hpp3
-rw-r--r--cpp04/ex01/Character.hpp2
-rw-r--r--cpp04/ex01/Enemy.hpp5
-rw-r--r--cpp04/ex01/main.cpp4
-rw-r--r--cpp04/ex02/ISpaceMarine.hpp2
-rw-r--r--cpp04/ex02/Squad.cpp8
-rw-r--r--cpp04/ex02/main.cpp4
-rw-r--r--cpp04/ex03/Character.cpp5
-rw-r--r--cpp04/ex03/MateriaSource.cpp12
-rw-r--r--cpp04/ex03/main.cpp213
-rw-r--r--subjects/cpp04.en.pdfbin1422231 -> 1391044 bytes
13 files changed, 239 insertions, 26 deletions
diff --git a/cpp04/ex00/Sorcerer.cpp b/cpp04/ex00/Sorcerer.cpp
index c3d0999..21c313b 100644
--- a/cpp04/ex00/Sorcerer.cpp
+++ b/cpp04/ex00/Sorcerer.cpp
@@ -6,15 +6,14 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/13 20:29:19 by charles #+# #+# */
-/* Updated: 2020/11/12 12:55:36 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 08:45:02 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "Sorcerer.hpp"
Sorcerer::Sorcerer(std::string const& name, std::string const& title) :
- m_name(name),
- m_title(title)
+ m_name(name), m_title(title)
{
std::cout << name << ", " << title << ", is born!" << std::endl;
}
diff --git a/cpp04/ex00/main.cpp b/cpp04/ex00/main.cpp
index 8bf96bf..d8eb897 100644
--- a/cpp04/ex00/main.cpp
+++ b/cpp04/ex00/main.cpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/13 20:47:34 by charles #+# #+# */
-/* Updated: 2020/11/12 13:11:26 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 08:42:34 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/cpp04/ex01/AWeapon.hpp b/cpp04/ex01/AWeapon.hpp
index 0296cd5..cfd803c 100644
--- a/cpp04/ex01/AWeapon.hpp
+++ b/cpp04/ex01/AWeapon.hpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 11:22:06 by charles #+# #+# */
-/* Updated: 2020/11/12 13:34:13 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 08:53:43 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -35,7 +35,6 @@ protected:
private:
AWeapon();
-
};
#endif
diff --git a/cpp04/ex01/Character.hpp b/cpp04/ex01/Character.hpp
index 08f1b59..8fa1829 100644
--- a/cpp04/ex01/Character.hpp
+++ b/cpp04/ex01/Character.hpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 13:42:25 by charles #+# #+# */
-/* Updated: 2020/11/13 11:14:03 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 09:06:25 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/cpp04/ex01/Enemy.hpp b/cpp04/ex01/Enemy.hpp
index 8b0dbf1..954e147 100644
--- a/cpp04/ex01/Enemy.hpp
+++ b/cpp04/ex01/Enemy.hpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 13:23:40 by charles #+# #+# */
-/* Updated: 2020/11/12 13:55:07 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 09:01:14 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -20,10 +20,9 @@ class Enemy
public:
Enemy(Enemy const& other);
Enemy& operator=(Enemy const& other);
- virtual ~Enemy();
Enemy(int hp, std::string const& type);
-
+ virtual ~Enemy();
std::string const& getType() const;
int getHP() const;
diff --git a/cpp04/ex01/main.cpp b/cpp04/ex01/main.cpp
index 5b907bd..7b0729c 100644
--- a/cpp04/ex01/main.cpp
+++ b/cpp04/ex01/main.cpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 09:05:58 by charles #+# #+# */
-/* Updated: 2020/11/13 12:00:52 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 09:16:14 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -215,8 +215,6 @@ int main()
c.recoverAP();
std::cout << c;
c.attack(r);
-
- // std::cout << "################ DESTRUCTORS" << std::endl;
}
return 0;
diff --git a/cpp04/ex02/ISpaceMarine.hpp b/cpp04/ex02/ISpaceMarine.hpp
index ebb5583..b5dde76 100644
--- a/cpp04/ex02/ISpaceMarine.hpp
+++ b/cpp04/ex02/ISpaceMarine.hpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 15:12:33 by charles #+# #+# */
-/* Updated: 2020/04/14 15:28:26 by charles ### ########.fr */
+/* Updated: 2020/11/17 09:26:59 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
diff --git a/cpp04/ex02/Squad.cpp b/cpp04/ex02/Squad.cpp
index 1cc59f0..7ff6906 100644
--- a/cpp04/ex02/Squad.cpp
+++ b/cpp04/ex02/Squad.cpp
@@ -6,15 +6,17 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 15:08:35 by charles #+# #+# */
-/* Updated: 2020/11/13 12:13:57 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 09:25:58 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "Squad.hpp"
-Squad::Squad() : m_units(new ISpaceMarine*[0]), m_size(0) {}
+Squad::Squad()
+ : m_units(new ISpaceMarine*[0]), m_size(0) {}
-Squad::Squad(Squad const& other) : m_units(NULL), m_size(0) { *this = other; }
+Squad::Squad(Squad const& other)
+ : m_units(NULL), m_size(0) { *this = other; }
Squad& Squad::operator=(Squad const& other)
{
diff --git a/cpp04/ex02/main.cpp b/cpp04/ex02/main.cpp
index c53dadb..ae2c73a 100644
--- a/cpp04/ex02/main.cpp
+++ b/cpp04/ex02/main.cpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 15:50:35 by charles #+# #+# */
-/* Updated: 2020/11/13 12:36:22 by cacharle ### ########.fr */
+/* Updated: 2020/11/17 09:32:46 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -105,7 +105,7 @@ int main()
std::cout << "Origin Count: " << s.getCount() << std::endl;
std::cout << "################ ASSIGN" << std::endl;
- Squad s3;
+ Squad s3(s2);
s3 = s;
std::cout << "Copy Count: " << s3.getCount() << std::endl;
s3.push(new TacticalMarine());
diff --git a/cpp04/ex03/Character.cpp b/cpp04/ex03/Character.cpp
index bc58588..57fcfeb 100644
--- a/cpp04/ex03/Character.cpp
+++ b/cpp04/ex03/Character.cpp
@@ -6,14 +6,14 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 16:45:54 by charles #+# #+# */
-/* Updated: 2020/11/15 17:10:46 by charles ### ########.fr */
+/* Updated: 2020/11/17 08:30:21 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "Character.hpp"
Character::Character(std::string const& name)
- : m_name(name), m_inventory_size(0) {}
+ : m_inventory_size(0), m_name(name) {}
Character::Character(Character const& other)
: m_inventory_size(0) { *this = other; }
@@ -44,6 +44,7 @@ void Character::unequip(int idx)
{
if (idx < 0 || idx >= m_inventory_size)
return;
+ delete m_inventory[idx];
for (int i = idx; i < m_inventory_size - 1; i++)
m_inventory[i] = m_inventory[i + 1];
m_inventory_size--;
diff --git a/cpp04/ex03/MateriaSource.cpp b/cpp04/ex03/MateriaSource.cpp
index 0d21ab8..6747a93 100644
--- a/cpp04/ex03/MateriaSource.cpp
+++ b/cpp04/ex03/MateriaSource.cpp
@@ -6,13 +6,14 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 17:19:10 by charles #+# #+# */
-/* Updated: 2020/11/15 17:22:19 by charles ### ########.fr */
+/* Updated: 2020/11/17 08:32:37 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "MateriaSource.hpp"
-MateriaSource::MateriaSource() : m_learned_size(0) {}
+MateriaSource::MateriaSource()
+ : m_learned_size(0) {}
MateriaSource::MateriaSource(MateriaSource const& other)
: m_learned_size(0) { *this = other; }
@@ -30,9 +31,12 @@ MateriaSource::~MateriaSource() { destroyLearned(); }
void MateriaSource::learnMateria(AMateria* materia)
{
- if (m_learned_size >= 4 || materia == NULL)
+ if (m_learned_size >= LEARNED_MAX_SIZE || materia == NULL)
+ {
+ delete materia;
return;
- m_learned[m_learned_size] = materia->clone();
+ }
+ m_learned[m_learned_size] = materia;
m_learned_size++;
}
diff --git a/cpp04/ex03/main.cpp b/cpp04/ex03/main.cpp
index 6444877..bede834 100644
--- a/cpp04/ex03/main.cpp
+++ b/cpp04/ex03/main.cpp
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/14 17:58:01 by charles #+# #+# */
-/* Updated: 2020/11/15 17:23:07 by charles ### ########.fr */
+/* Updated: 2020/11/17 08:33:22 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -35,4 +35,215 @@ int main()
delete me;
delete src;
}
+
+ Character ch("YO");
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "================== ICE ==================" << std::endl;
+ Ice i;
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ Ice i2(i);
+ std::cout << "Type: " << i2.getType() << ", XP: " << i2.getXP() << std::endl;
+ Ice i3;
+ i3 = i2;
+ std::cout << "Type: " << i2.getType() << ", XP: " << i2.getXP() << std::endl;
+ AMateria *i4 = new Ice(i);
+ std::cout << "Type: " << i4->getType() << ", XP: " << i4->getXP() << std::endl;
+
+ std::cout << "################## NO ASSIGN TYPE" << std::endl;
+ AMateria *c = new Cure();
+ *c = i3;
+ std::cout << "Type: " << c->getType() << ", XP: " << c->getXP() << std::endl;
+
+ std::cout << "################## CLONE" << std::endl;
+ AMateria *cl = i3.clone();
+ std::cout << "Type: " << cl->getType() << ", XP: " << cl->getXP() << std::endl;
+
+ std::cout << "################## USE" << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+ i.use(ch);
+ std::cout << "Type: " << i.getType() << ", XP: " << i.getXP() << std::endl;
+
+ delete cl;
+ delete c;
+ delete i4;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "================== ICE ==================" << std::endl;
+ Cure c;
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ Cure c2(c);
+ std::cout << "Type: " << c2.getType() << ", XP: " << c2.getXP() << std::endl;
+ Cure c3;
+ c3 = c2;
+ std::cout << "Type: " << c2.getType() << ", XP: " << c2.getXP() << std::endl;
+ AMateria *c4 = new Cure(c);
+ std::cout << "Type: " << c4->getType() << ", XP: " << c4->getXP() << std::endl;
+
+ std::cout << "################## NO ASSIGN TYPE" << std::endl;
+ AMateria *i = new Ice();
+ *i = c3;
+ std::cout << "Type: " << i->getType() << ", XP: " << i->getXP() << std::endl;
+
+ std::cout << "################## CLONE" << std::endl;
+ AMateria *cl = c3.clone();
+ std::cout << "Type: " << cl->getType() << ", XP: " << cl->getXP() << std::endl;
+
+ std::cout << "################## USE" << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+ c.use(ch);
+ std::cout << "Type: " << c.getType() << ", XP: " << c.getXP() << std::endl;
+
+ delete cl;
+ delete i;
+ delete c4;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "================== CHARACTER ==================" << std::endl;
+ Character c("Jean-Didier");
+ std::cout << "Name: " << c.getName() << std::endl;
+ Character c2(c);
+ std::cout << "Name: " << c2.getName() << std::endl;
+ Character c3("SHOULD NOT BE PRINTED");
+ c3 = c;
+ std::cout << "Name: " << c3.getName() << std::endl;
+
+ std::cout << "################## EQUIP/USE" << std::endl;
+ c.equip(new Ice());
+ c.equip(new Cure());
+ c.use(0, ch);
+ c.use(1, ch);
+ c.equip(new Cure());
+ c.equip(new Ice());
+ c.use(2, ch);
+ c.use(3, ch);
+ c.use(-1, ch);
+ c.use(4, ch);
+ c.unequip(0);
+ c.use(0, ch);
+ c.use(3, ch);
+ c.unequip(0);
+ c.use(0, ch);
+ c.use(2, ch);
+ c.unequip(0);
+ c.use(0, ch);
+ c.use(1, ch);
+ c.unequip(0);
+ c.use(0, ch);
+ c.unequip(0);
+ c.unequip(0);
+ c.unequip(0);
+ c.unequip(0);
+ c.unequip(0);
+ c.equip(NULL);
+ c.use(0, ch);
+ c.equip(NULL);
+ c.use(1, ch);
+
+ std::cout << "################## DEEP COPY" << std::endl;
+ c.equip(new Ice());
+ c.use(0, ch);
+ Character copy(c);
+ std::cout << "Copied name: " << copy.getName() << std::endl;
+ copy.use(0, ch);
+ c.equip(new Cure());
+ c.use(1, ch);
+ copy.use(1, ch);
+ Character assigned("SHOULD NOT BE PRINTED");
+ assigned = c;
+ std::cout << "Assign name: " << copy.getName() << std::endl;
+ assigned.use(1, ch);
+ c.equip(new Ice());
+ c.use(2, ch);
+ assigned.use(2, ch);
+
+ std::cout << "################## INTERFACE" << std::endl;
+ ICharacter *ic = new Character(c);
+ std::cout << "Interface name: " << ic->getName() << std::endl;
+ ic->use(0, ch);
+ ic->use(1, ch);
+ ic->use(2, ch);
+ ic->equip(new Ice());
+ ic->use(3, ch);
+ ic->unequip(1);
+ ic->use(1, ch);
+ delete ic;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "================== MATERIA SRC ==================" << std::endl;
+ MateriaSource ms;
+ ms.learnMateria(new Ice());
+ MateriaSource ms2(ms);
+ MateriaSource ms3;
+ ms3.learnMateria(new Cure());
+ ms3 = ms;
+ std::cout << ms3.createMateria("cure") << std::endl;
+ AMateria *m;
+ m = ms.createMateria("ice");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+ m = ms2.createMateria("ice");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+ m = ms3.createMateria("ice");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+
+ m = ms.createMateria("");
+ std::cout << m << std::endl;
+ m = ms.createMateria("foo");
+ std::cout << m << std::endl;
+ ms.learnMateria(NULL);
+
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ ms.learnMateria(new Ice());
+ m = ms.createMateria("ice");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+
+ std::cout << "################## INTERFACE" << std::endl;
+ IMateriaSource *ims = new MateriaSource(ms2);
+ m = ims->createMateria("ice");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+ ims->learnMateria(new Cure());
+ m = ims->createMateria("cure");
+ std::cout << "Type: " << m->getType() << ", XP: " << m->getXP() << std::endl;
+ delete m;
+ delete ims;
+ }
}
diff --git a/subjects/cpp04.en.pdf b/subjects/cpp04.en.pdf
index e4b7d6b..4d789a3 100644
--- a/subjects/cpp04.en.pdf
+++ b/subjects/cpp04.en.pdf
Binary files differ