diff options
Diffstat (limited to 'cpp04')
| -rw-r--r-- | cpp04/ex00/Sorcerer.cpp | 5 | ||||
| -rw-r--r-- | cpp04/ex00/main.cpp | 2 | ||||
| -rw-r--r-- | cpp04/ex01/AWeapon.hpp | 3 | ||||
| -rw-r--r-- | cpp04/ex01/Character.hpp | 2 | ||||
| -rw-r--r-- | cpp04/ex01/Enemy.hpp | 5 | ||||
| -rw-r--r-- | cpp04/ex01/main.cpp | 4 | ||||
| -rw-r--r-- | cpp04/ex02/ISpaceMarine.hpp | 2 | ||||
| -rw-r--r-- | cpp04/ex02/Squad.cpp | 8 | ||||
| -rw-r--r-- | cpp04/ex02/main.cpp | 4 | ||||
| -rw-r--r-- | cpp04/ex03/Character.cpp | 5 | ||||
| -rw-r--r-- | cpp04/ex03/MateriaSource.cpp | 12 | ||||
| -rw-r--r-- | cpp04/ex03/main.cpp | 213 |
12 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; + } } |
