From 5b194610901bf657bc4b16b6eafc052ecfc89fe8 Mon Sep 17 00:00:00 2001 From: lenovo Date: Mon, 12 Dec 2022 22:34:11 +0100 Subject: [PATCH] resolved one error and one segfault in xpp02 --- README.md | 27 ---- cpp_module_00/Warlock.hpp | 29 +++-- cpp_module_00/a.out | Bin 18440 -> 18440 bytes cpp_module_01/ASpell.cpp | 3 +- cpp_module_01/ASpell.hpp | 37 +++--- cpp_module_01/ATarget.cpp | 3 +- cpp_module_01/ATarget.hpp | 36 +++--- cpp_module_01/Dummy.cpp | 1 - cpp_module_01/Dummy.hpp | 15 ++- cpp_module_01/Fwoosh.hpp | 13 +- cpp_module_01/Warlock.hpp | 78 +++++------ cpp_module_01/a.out | Bin 65544 -> 57880 bytes cpp_module_01/main.cpp | 16 +-- cpp_module_01/test | Bin 0 -> 65448 bytes cpp_module_02/ASpell.cpp | 6 +- cpp_module_02/ASpell.hpp | 55 ++++---- cpp_module_02/ATarget.cpp | 6 +- cpp_module_02/ATarget.hpp | 51 ++++---- cpp_module_02/BrickWall.hpp | 19 ++- cpp_module_02/Dummy.cpp | 1 - cpp_module_02/Dummy.hpp | 19 ++- cpp_module_02/Fireball.hpp | 17 ++- cpp_module_02/Fwoosh.hpp | 17 ++- cpp_module_02/Polymorph.cpp | 1 - cpp_module_02/Polymorph.hpp | 17 ++- cpp_module_02/SpellBook.cpp | 2 +- cpp_module_02/SpellBook.hpp | 75 ++++++----- cpp_module_02/TargetGenerator.hpp | 71 ++++++---- cpp_module_02/Warlock.cpp | 2 +- cpp_module_02/Warlock.hpp | 67 +++++----- cpp_module_02/a.out | Bin 87864 -> 109496 bytes cpp_module_02/main.cpp | 208 ++++++++++++++++++++++++++++-- cpp_module_02/subject.en.txt | 1 + 33 files changed, 567 insertions(+), 326 deletions(-) create mode 100755 cpp_module_01/test diff --git a/README.md b/README.md index 39af52c..bf2a11c 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,2 @@ # README # -This README would normally document whatever steps are necessary to get your application up and running. - -### What is this repository for? ### - -* Quick summary -* Version -* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo) - -### How do I get set up? ### - -* Summary of set up -* Configuration -* Dependencies -* Database configuration -* How to run tests -* Deployment instructions - -### Contribution guidelines ### - -* Writing tests -* Code review -* Other guidelines - -### Who do I talk to? ### - -* Repo owner or admin -* Other community or team contact \ No newline at end of file diff --git a/cpp_module_00/Warlock.hpp b/cpp_module_00/Warlock.hpp index 7bd80d5..fb77763 100644 --- a/cpp_module_00/Warlock.hpp +++ b/cpp_module_00/Warlock.hpp @@ -1,10 +1,11 @@ #ifndef WARLOCK_HPP -# define WARLOCK_HPP +#define WARLOCK_HPP -# include -# include +#include +#include -class Warlock { +class Warlock +{ private: Warlock(); Warlock(Warlock const & other); @@ -14,34 +15,36 @@ class Warlock { std::string title; public: - Warlock(std::string const & name, std::string const & title) + Warlock(std::string const name, std::string const title) { this->name = name; this->title = title; std::cout << this->name << ": This looks like another boring day.\n"; - }; + } ~Warlock() { std::cout << this->name << ": My job here is done!\n"; - }; + } std::string const & getName() const { - return (this->name); - }; + return this->name; + } std::string const & getTitle() const { - return (this->title); - }; + return this->title; + } + void setTitle(std::string const & title) { this->title = title; - }; + } void introduce() const { std::cout << this->name << ": I am " << this->name << ", " << this->title << "!\n"; - }; + } }; #endif + diff --git a/cpp_module_00/a.out b/cpp_module_00/a.out index e79733446e6239c1bd652975e7acaab0954f7150..8226c11a7d6de8b9116110f1753e973b93a30e76 100755 GIT binary patch delta 2560 zcmZuy3s6*57(QoTJX{5N-CdM;zBU8j^Znvxr8EC)kdp2bNtlgpPZ%DhL{^n_#Q%=qJ|v@jn0nQUqHWK|0V^07m0*0;j}vzr+0f)sr9TV7wlXb^^Uz)J)ebxE4*OF5D+PU6;NL;Z^~MR{-0gvk z+R!pr_|(GmvYOPgT2oi3}msj zDbnPV2mx;EN25h3{k)fZ*1r zr{;rOKRgTvxl&MKpJZeqIDQ(Jgde?fkFaP$D|i%{PmH0S@00 zSy5ZUkAj5ng&{6|I$^&_wvsf=s|64!5M)yq1>3W@Rm;1vW+>LEDx|&~pybMv8GKWi zejDi>y=YrqaSq>=`w0K>zbP~0-R24OSs8NxF2B|4Y& zJ0?JEv<+7mi@`2V`5Rj$@y95`nDVR-L0ga7VBbaIUz+F*ZcAB)TlR(PX?f2G-Ja$#LUk)nsLE{O*Cmr(JDBC$jU0 zw!aj3&vZJW_6`WgP^+}{*XX*=)1K%$4W=_=x<3MHy_hRnKkE3W#+;5R zx*u~zD?I-!SoQ)fRz2r}I`|=$>Bvv}5$9+JTT$0mcYw({L zd=&C!?3iO7tz!cY*|q;)oZe3m|J%rg$Gb+JgZK#MT1z83sVyFWVBZ+{b%|xpo}c!I z5FD&GmijYBY-JeU_yJZkTW)YpYk`3IBeCi=l$49fhMz|YpSfnNqqfwbY10HrXimW% zYW)cCaS(>{t6&y%KL!?B3}-z8oaTP4ynn$@33>fnr9C+|X%({Spn6SFD_T`|^H>U- zmn>Jgjg5%A&?R!X3%N$(q@0<4~)jd0Y7;AhikU%`lme^@{qN(sak8 zsNM-h-E&V-*K<%o?uCl4tjYTyzfUWS+paTuZp;snHch&k*@#up7P zQ18Nimc%E1AeF{hr8i@3P|F;EPQ%9seEf8Nt)K;e1Mo)Rlcw_(Q~ZMv59cuD|Hc&W zpoFDoxwqEAPnh}ZX&Tc~6R1jJt%+nlz~%7ic%bWNA)0@frjvYOnb7S9iokwaPfqcXdhzlv6}yaL%d8-7}5!5_&$JJ`Pw$b42} zmT3vgw93v+ph+SLq+1*~A$V>$wg^op8w8(T&}5+of74*#S>U*cn!I?}e5RC2I$Z)J z&}cE10G=czl5%GV2!&jBA3Q67MNd!2Q``qo>_C<_3(a^)(-_i-o`a^8^%Tm^jTU3) z15hB2g+?Hi$kHR?c~U&D;FGylq|E&ls+$FS?RJI4q3{>ttVgm_GrPV*rmwMMD`e*u zSRs+5k-iz~TGZs70v0RCkPQ>ONjSzsvu3VgVzfx6i^Ovc%Y%HY$oGjS6UcFVI?q}S z=bBL6q1KQQHdxd|ivsQ!x@e%_#UrMKjq8f4w!FP_*VY}S%iXWM%&0Bj?0&UqbKv{p qeNsSi`AsyIjg>wh6K(?BovhVXN_PepyBj2`v#vEobco$vv* -# include +#include +#include class ATarget; -class ASpell { - - private: +class ASpell +{ + protected: std::string name; std::string effects; public: ASpell() - {}; + {} ASpell(ASpell const & other) { *this = other; - }; + } ASpell & operator=(ASpell const & other) { this->name = other.name; this->effects = other.effects; - return (*this); - }; + return *this; + } ASpell(std::string const & name, std::string const & effects) { this->name = name; this->effects = effects; - }; + } virtual ~ASpell() - {}; + {} std::string const & getName() const { - return (this->name); - }; + return this->name; + } std::string const & getEffects() const { - return (this->effects); - }; + return this->effects; + } - void launch(ATarget const & atarget) const; + void launch(ATarget const &) const; virtual ASpell * clone() const = 0; + }; #include "ATarget.hpp" #endif - - diff --git a/cpp_module_01/ATarget.cpp b/cpp_module_01/ATarget.cpp index 61d5361..b0f2720 100644 --- a/cpp_module_01/ATarget.cpp +++ b/cpp_module_01/ATarget.cpp @@ -3,4 +3,5 @@ void ATarget::getHitBySpell(ASpell const & aspell) const { std::cout << this->type << " has been " << aspell.getEffects() << "!\n"; -}; +} + diff --git a/cpp_module_01/ATarget.hpp b/cpp_module_01/ATarget.hpp index c74e741..38a9012 100644 --- a/cpp_module_01/ATarget.hpp +++ b/cpp_module_01/ATarget.hpp @@ -1,45 +1,47 @@ #ifndef ATARGET_HPP -# define ATARGET_HPP +#define ATARGET_HPP -# include -# include +#include +#include class ASpell; -class ATarget { - - private: +class ATarget +{ + protected: std::string type; public: ATarget() - {}; + {} ATarget(ATarget const & other) { - *this = other; - }; + * this = other; + } ATarget & operator=(ATarget const & other) { this->type = other.type; - return (*this); - }; + return *this; + } ATarget(std::string const & type) { this->type = type; - }; - ~ATarget() - {}; + } + virtual ~ATarget() + {} std::string const & getType() const { - return (this->type); - }; + return this->type; + } - void getHitBySpell(ASpell const & aspell) const; + void getHitBySpell(ASpell const &) const; virtual ATarget * clone() const = 0; + }; #include "ASpell.hpp" #endif + diff --git a/cpp_module_01/Dummy.cpp b/cpp_module_01/Dummy.cpp index 6eb8744..2e8ab16 100644 --- a/cpp_module_01/Dummy.cpp +++ b/cpp_module_01/Dummy.cpp @@ -1,2 +1 @@ #include "Dummy.hpp" - diff --git a/cpp_module_01/Dummy.hpp b/cpp_module_01/Dummy.hpp index f9debbc..a482921 100644 --- a/cpp_module_01/Dummy.hpp +++ b/cpp_module_01/Dummy.hpp @@ -1,20 +1,21 @@ #ifndef DUMMY_HPP -# define DUMMY_HPP +#define DUMMY_HPP -# include "ATarget.hpp" - -class Dummy: public ATarget { +#include "ATarget.hpp" +class Dummy: public ATarget +{ public: Dummy(): ATarget("Target Practice Dummy") - {}; + {} ~Dummy() - {}; + {} virtual ATarget * clone() const { return (new Dummy()); - }; + } }; #endif + diff --git a/cpp_module_01/Fwoosh.hpp b/cpp_module_01/Fwoosh.hpp index 046ad8f..0809ee3 100644 --- a/cpp_module_01/Fwoosh.hpp +++ b/cpp_module_01/Fwoosh.hpp @@ -1,20 +1,21 @@ #ifndef FWOOSH_HPP #define FWOOSH_HPP -# include "ASpell.hpp" - -class Fwoosh: public ASpell { +#include "ASpell.hpp" +class Fwoosh: public ASpell +{ public: Fwoosh(): ASpell("Fwoosh", "fwooshed") - {}; + {} ~Fwoosh() - {}; + {} virtual ASpell * clone() const { return (new Fwoosh()); - }; + } }; #endif + diff --git a/cpp_module_01/Warlock.hpp b/cpp_module_01/Warlock.hpp index d09d8f0..329830b 100644 --- a/cpp_module_01/Warlock.hpp +++ b/cpp_module_01/Warlock.hpp @@ -1,15 +1,15 @@ #ifndef WARLOCK_HPP -# define WARLOCK_HPP +#define WARLOCK_HPP -# include -# include -# include +#include +#include +#include -# include "ASpell.hpp" -# include "ATarget.hpp" - -class Warlock { +#include "ASpell.hpp" +#include "ATarget.hpp" +class Warlock +{ private: Warlock(); Warlock(Warlock const & other); @@ -17,71 +17,73 @@ class Warlock { std::string name; std::string title; - std::map arr; + std::map arr; public: Warlock(std::string const & name, std::string const & title) { this->name = name; - this->title = title; + this->title = title; std::cout << this->name << ": This looks like another boring day.\n"; - }; + } ~Warlock() { std::cout << this->name << ": My job here is done!\n"; - std::map::iterator it_begin = this->arr.begin(); - std::map::iterator it_end = this->arr.end(); - while (it_begin != it_end) { - delete it_begin->second; - ++it_begin; - } + + std::map::iterator it; + + for (it = arr.begin(); it != arr.end(); ++it) + delete it->second; + this->arr.clear(); - }; + } std::string const & getName() const { - return (this->name); - }; + return this->name; + } std::string const & getTitle() const { - return (this->title); - }; + return this->title; + } void setTitle(std::string const & title) { this->title = title; - }; + } void introduce() const { std::cout << this->name << ": I am " << this->name << ", " << this->title << "!\n"; - }; + } void learnSpell(ASpell * aspell) { if (aspell) { - arr.insert(std::pair + arr.insert(std::pair ( aspell->getName(), aspell->clone() )); } - }; - void forgetSpell(std::string name) + } + void forgetSpell(std::string spell_name) { - std::map::iterator it = arr.find(name); - if (it == arr.end()) - return; - delete it->second; - arr.erase(name); - }; - void launchSpell(std::string name, ATarget const & target) - { - ASpell * spell = arr[name]; + ASpell * spell = arr[spell_name]; if (spell) - spell->launch(target); - }; + { + delete spell; + arr.erase(spell_name); + } + } + void launchSpell(std::string spell_name, ATarget const & atarget) + { + ASpell * spell = arr[spell_name]; + if (spell) + spell->launch(atarget); + } }; #endif + diff --git a/cpp_module_01/a.out b/cpp_module_01/a.out index 8ad5690b0810bc6f1095dae75d98219acdb40b9c..f65a3d85d1ce2dbb0911b83139ada30124f26c28 100755 GIT binary patch literal 57880 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 KY)1h{()hp47|JF9 diff --git a/cpp_module_01/main.cpp b/cpp_module_01/main.cpp index 3d12dfe..9ffb04d 100644 --- a/cpp_module_01/main.cpp +++ b/cpp_module_01/main.cpp @@ -4,17 +4,17 @@ int main() { - Warlock richard("Richard", "the Titled"); + Warlock richard("Richard", "the Titled"); - Dummy bob; - Fwoosh* fwoosh = new Fwoosh(); + Dummy bob; + Fwoosh* fwoosh = new Fwoosh(); - richard.learnSpell(fwoosh); + richard.learnSpell(fwoosh); - richard.introduce(); - richard.launchSpell("Fwoosh", bob); + richard.introduce(); + richard.launchSpell("Fwoosh", bob); - richard.forgetSpell("Fwoosh"); - richard.launchSpell("Fwoosh", bob); + richard.forgetSpell("Fwoosh"); + richard.launchSpell("Fwoosh", bob); delete fwoosh; } diff --git a/cpp_module_01/test b/cpp_module_01/test new file mode 100755 index 0000000000000000000000000000000000000000..4061c6f0162a4c031107ad783498c8e59d2aac46 GIT binary patch literal 65448 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 r&e;f6jrw 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 literal 0 HcmV?d00001 diff --git a/cpp_module_02/ASpell.cpp b/cpp_module_02/ASpell.cpp index 2cb07c0..867abf3 100644 --- a/cpp_module_02/ASpell.cpp +++ b/cpp_module_02/ASpell.cpp @@ -1,5 +1,7 @@ #include "ASpell.hpp" -void ASpell::launch(ATarget const & atarget) const { +void ASpell::launch(ATarget const & atarget) const +{ atarget.getHitBySpell(*this); -}; +} + diff --git a/cpp_module_02/ASpell.hpp b/cpp_module_02/ASpell.hpp index be0a66c..36819b9 100644 --- a/cpp_module_02/ASpell.hpp +++ b/cpp_module_02/ASpell.hpp @@ -1,45 +1,54 @@ #ifndef ASPELL_HPP -# define ASPELL_HPP +#define ASPELL_HPP -# include -# include +#include +#include class ATarget; -class ASpell { - private: +class ASpell +{ + protected: std::string name; std::string effects; public: - ASpell() { - }; - ASpell(ASpell const & other) { + ASpell() + {} + ASpell(ASpell const & other) + { *this = other; - }; - ASpell & operator=(ASpell const & other) { + } + ASpell & operator=(ASpell const & other) + { this->name = other.name; this->effects = other.effects; - return (*this); - }; - ASpell(std::string const & name, std::string const & effects) { + return *this; + } + ASpell(std::string const & name, std::string const & effects) + { this->name = name; this->effects = effects; - }; - virtual ~ASpell() { - }; + } + virtual ~ASpell() + {} - std::string const & getName() const { - return (this->name); - }; - std::string const & getEffects() const { - return (this->effects); - }; - void launch(ATarget const & atarget) const; + std::string const & getName() const + { + return this->name; + } + std::string const & getEffects() const + { + return this->effects; + } + + void launch(ATarget const &) const; virtual ASpell * clone() const = 0; + }; #include "ATarget.hpp" #endif + diff --git a/cpp_module_02/ATarget.cpp b/cpp_module_02/ATarget.cpp index 3685615..b0f2720 100644 --- a/cpp_module_02/ATarget.cpp +++ b/cpp_module_02/ATarget.cpp @@ -1,5 +1,7 @@ #include "ATarget.hpp" -void ATarget::getHitBySpell(ASpell const & aspell) const { +void ATarget::getHitBySpell(ASpell const & aspell) const +{ std::cout << this->type << " has been " << aspell.getEffects() << "!\n"; -}; +} + diff --git a/cpp_module_02/ATarget.hpp b/cpp_module_02/ATarget.hpp index 4a31b0c..38a9012 100644 --- a/cpp_module_02/ATarget.hpp +++ b/cpp_module_02/ATarget.hpp @@ -1,40 +1,47 @@ #ifndef ATARGET_HPP -# define ATARGET_HPP +#define ATARGET_HPP -# include -# include +#include +#include class ASpell; -class ATarget { - private: - +class ATarget +{ + protected: std::string type; public: - ATarget() { - }; - ATarget(std::string const & type) { - this->type = type; - }; - ATarget(ATarget const & other) { - *this = other; - }; - ATarget & operator=(ATarget const & other) { + ATarget() + {} + ATarget(ATarget const & other) + { + * this = other; + } + ATarget & operator=(ATarget const & other) + { this->type = other.type; - return (*this); - }; - virtual ~ATarget() {}; + return *this; + } + ATarget(std::string const & type) + { + this->type = type; + } + virtual ~ATarget() + {} - std::string const & getType() const { - return (this->type); - }; + std::string const & getType() const + { + return this->type; + } - void getHitBySpell(ASpell const & aspell) const; + void getHitBySpell(ASpell const &) const; virtual ATarget * clone() const = 0; + }; #include "ASpell.hpp" #endif + diff --git a/cpp_module_02/BrickWall.hpp b/cpp_module_02/BrickWall.hpp index 01afd84..7993a06 100644 --- a/cpp_module_02/BrickWall.hpp +++ b/cpp_module_02/BrickWall.hpp @@ -1,16 +1,21 @@ #ifndef BRICKWALL_HPP -# define BRICKWALL_HPP +#define BRICKWALL_HPP -# include "ATarget.hpp" +#include "ATarget.hpp" -class BrickWall: public ATarget { +class BrickWall: public ATarget +{ public: - BrickWall(): ATarget("Inconspicuous Red-brick Wall") {}; - ~BrickWall() {}; + BrickWall(): ATarget("Inconspicuous Red-brick Wall") + {} + ~BrickWall() + {} - virtual ATarget * clone() const { + virtual ATarget * clone() const + { return (new BrickWall()); - }; + } }; #endif + diff --git a/cpp_module_02/Dummy.cpp b/cpp_module_02/Dummy.cpp index 6eb8744..2e8ab16 100644 --- a/cpp_module_02/Dummy.cpp +++ b/cpp_module_02/Dummy.cpp @@ -1,2 +1 @@ #include "Dummy.hpp" - diff --git a/cpp_module_02/Dummy.hpp b/cpp_module_02/Dummy.hpp index 9d4167f..a482921 100644 --- a/cpp_module_02/Dummy.hpp +++ b/cpp_module_02/Dummy.hpp @@ -1,16 +1,21 @@ #ifndef DUMMY_HPP -# define DUMMY_HPP +#define DUMMY_HPP -# include "ATarget.hpp" +#include "ATarget.hpp" -class Dummy: public ATarget { +class Dummy: public ATarget +{ public: - Dummy(): ATarget("Target Practice Dummy") {}; - ~Dummy() {}; + Dummy(): ATarget("Target Practice Dummy") + {} + ~Dummy() + {} - virtual ATarget * clone() const { + virtual ATarget * clone() const + { return (new Dummy()); - }; + } }; #endif + diff --git a/cpp_module_02/Fireball.hpp b/cpp_module_02/Fireball.hpp index c961156..e7e4d5f 100644 --- a/cpp_module_02/Fireball.hpp +++ b/cpp_module_02/Fireball.hpp @@ -1,16 +1,21 @@ #ifndef FIREBALL_HPP #define FIREBALL_HPP -# include "ASpell.hpp" +#include "ASpell.hpp" -class Fireball: public ASpell { +class Fireball: public ASpell +{ public: - Fireball(): ASpell("Fireball", "burnt to a crisp") {}; - ~Fireball() {}; + Fireball(): ASpell("Fireball", "burnt to a crisp") + {} + ~Fireball() + {} - virtual ASpell * clone() const { + virtual ASpell * clone() const + { return (new Fireball()); - }; + } }; #endif + diff --git a/cpp_module_02/Fwoosh.hpp b/cpp_module_02/Fwoosh.hpp index d49fbbc..0809ee3 100644 --- a/cpp_module_02/Fwoosh.hpp +++ b/cpp_module_02/Fwoosh.hpp @@ -1,16 +1,21 @@ #ifndef FWOOSH_HPP #define FWOOSH_HPP -# include "ASpell.hpp" +#include "ASpell.hpp" -class Fwoosh: public ASpell { +class Fwoosh: public ASpell +{ public: - Fwoosh(): ASpell("Fwoosh", "fwooshed") {}; - ~Fwoosh() {}; + Fwoosh(): ASpell("Fwoosh", "fwooshed") + {} + ~Fwoosh() + {} - virtual ASpell * clone() const { + virtual ASpell * clone() const + { return (new Fwoosh()); - }; + } }; #endif + diff --git a/cpp_module_02/Polymorph.cpp b/cpp_module_02/Polymorph.cpp index ac17197..58a35cd 100644 --- a/cpp_module_02/Polymorph.cpp +++ b/cpp_module_02/Polymorph.cpp @@ -1,2 +1 @@ #include "Polymorph.hpp" - diff --git a/cpp_module_02/Polymorph.hpp b/cpp_module_02/Polymorph.hpp index 1f104ce..39f4ed4 100644 --- a/cpp_module_02/Polymorph.hpp +++ b/cpp_module_02/Polymorph.hpp @@ -1,16 +1,21 @@ #ifndef POLYMORPH_HPP #define POLYMORPH_HPP -# include "ASpell.hpp" +#include "ASpell.hpp" -class Polymorph: public ASpell { +class Polymorph: public ASpell +{ public: - Polymorph(): ASpell("Polymorph", "turned into a critter") {}; - ~Polymorph() {}; + Polymorph(): ASpell("Polymorph", "turned into a critter") + {} + ~Polymorph() + {} - virtual ASpell * clone() const { + virtual ASpell * clone() const + { return (new Polymorph()); - }; + } }; #endif + diff --git a/cpp_module_02/SpellBook.cpp b/cpp_module_02/SpellBook.cpp index bc6fd84..7faf59b 100644 --- a/cpp_module_02/SpellBook.cpp +++ b/cpp_module_02/SpellBook.cpp @@ -1,2 +1,2 @@ -#include "Warlock.hpp" +#include "SpellBook.hpp" diff --git a/cpp_module_02/SpellBook.hpp b/cpp_module_02/SpellBook.hpp index e6c964c..290a0cc 100644 --- a/cpp_module_02/SpellBook.hpp +++ b/cpp_module_02/SpellBook.hpp @@ -1,50 +1,61 @@ -#ifndef SPELLBOOK_HPP +#ifndef SPELLBOOK_HPP #define SPELLBOOK_HPP -# include -# include -# include "ASpell.hpp" -# include +#include +#include +#include -class SpellBook { +#include "ASpell.hpp" + +class SpellBook +{ private: SpellBook(SpellBook const & other); SpellBook & operator=(SpellBook const & other); - std::map arr; + std::map arr; public: - SpellBook() {}; - ~SpellBook() { - std::map::iterator it_begin = this->arr.begin(); - std::map::iterator it_end = this->arr.end(); - while (it_begin != it_end) { - delete it_begin->second; - ++it_begin; - } + SpellBook() + {} + ~SpellBook() + { + std::map::iterator it; + for (it = arr.begin(); it != arr.end(); ++it) + delete it->second; this->arr.clear(); - }; + } - void learnSpell(ASpell *aspell) { + void learnSpell(ASpell * aspell) + { if (aspell) - arr.insert(std::pair( + { + arr.insert(std::pair + ( aspell->getName(), aspell->clone() )); - }; - void forgetSpell(std::string & name) { - std::map::iterator it = arr.find(name); - if (it == arr.end()) - return; - delete it->second; - arr.erase(name); - }; - ASpell * createSpell(std::string & name) { - std::map::iterator it = arr.find(name); - if (it == arr.end()) - return NULL; - return arr[name]; - }; + } + } + void forgetSpell(std::string const & spell_name) + { + std::map::iterator it; + it = arr.find(spell_name); + if (it != arr.end()) + { + delete it->second; + arr.erase(spell_name); + } + } + ASpell * createSpell(std::string const & spell_name) + { + std::map::iterator it; + it = arr.find(spell_name); + if (it != arr.end()) + return arr[spell_name]; + return NULL; + } }; #endif + diff --git a/cpp_module_02/TargetGenerator.hpp b/cpp_module_02/TargetGenerator.hpp index c1e12d0..5032919 100644 --- a/cpp_module_02/TargetGenerator.hpp +++ b/cpp_module_02/TargetGenerator.hpp @@ -1,50 +1,65 @@ -#ifndef TARGETGENERATOR_HPP +#ifndef TARGETGENERATOR_HPP #define TARGETGENERATOR_HPP -# include -# include -# include "ATarget.hpp" -# include +#include +#include +#include -class TargetGenerator { +#include "ATarget.hpp" + +class TargetGenerator +{ private: TargetGenerator(TargetGenerator const & other); TargetGenerator & operator=(TargetGenerator const & other); - std::map arr; + std::map arr; public: - TargetGenerator() { - }; - ~TargetGenerator() { - std::map::iterator it_begin = this->arr.begin(); - std::map::iterator it_end = this->arr.end(); - while (it_begin != it_end) { - delete it_begin->second; - ++it_begin; - } + TargetGenerator() + {} + ~TargetGenerator() + { + std::map::iterator it; + for (it = arr.begin(); it != arr.end(); ++it) + delete it->second; this->arr.clear(); - }; + } - void learnTargetType(ATarget * atarget) { + void learnTargetType(ATarget * atarget) + { if (atarget) - arr.insert(std::pair( + { + arr.insert(std::pair + ( atarget->getType(), atarget->clone() )); - }; - void forgetTargetType(std::string const & name) { - std::map::iterator it = arr.find(name); + } + } + void forgetTargetType(std::string const & type) + { + std::map::iterator it; + it = arr.find(type); if (it != arr.end()) + { delete it->second; - arr.erase(name); - }; - ATarget * createTarget(std::string const & name) { - std::map::iterator it = arr.find(name); + arr.erase(type); + } + } + + ATarget * createTarget(std::string const & type) + { + std::map::iterator it; + it = arr.find(type); if (it != arr.end()) - return arr[name]; + return arr[type]->clone(); return NULL; - }; + } + + }; #endif + + diff --git a/cpp_module_02/Warlock.cpp b/cpp_module_02/Warlock.cpp index 7faf59b..bc6fd84 100644 --- a/cpp_module_02/Warlock.cpp +++ b/cpp_module_02/Warlock.cpp @@ -1,2 +1,2 @@ -#include "SpellBook.hpp" +#include "Warlock.hpp" diff --git a/cpp_module_02/Warlock.hpp b/cpp_module_02/Warlock.hpp index 0a40262..a11b239 100644 --- a/cpp_module_02/Warlock.hpp +++ b/cpp_module_02/Warlock.hpp @@ -1,13 +1,16 @@ #ifndef WARLOCK_HPP -# define WARLOCK_HPP +#define WARLOCK_HPP -# include -# include -# include "ASpell.hpp" -# include "ATarget.hpp" -# include "SpellBook.hpp" +#include +#include +#include -class Warlock { +#include "SpellBook.hpp" +#include "ASpell.hpp" +#include "ATarget.hpp" + +class Warlock +{ private: Warlock(); Warlock(Warlock const & other); @@ -15,57 +18,61 @@ class Warlock { std::string name; std::string title; - SpellBook book; + + SpellBook * book; public: Warlock(std::string const & name, std::string const & title) { this->name = name; - this->title = title; + this->title = title; + book = new SpellBook(); std::cout << this->name << ": This looks like another boring day.\n"; - }; + } ~Warlock() { std::cout << this->name << ": My job here is done!\n"; - }; + + delete book; + } std::string const & getName() const { - return (this->name); - }; + return this->name; + } std::string const & getTitle() const { - return (this->title); - }; + return this->title; + } void setTitle(std::string const & title) { this->title = title; - }; + } void introduce() const { std::cout << this->name << ": I am " << this->name << ", " << this->title << "!\n"; - }; + } - void learnSpell(ASpell *aspell) + void learnSpell(ASpell * aspell) { - book.learnSpell(aspell); - }; - void forgetSpell(std::string name) + book->learnSpell(aspell); + } + void forgetSpell(std::string spell_name) { - book.forgetSpell(name); - }; - void launchSpell(std::string name, ATarget const & atarget) + book->forgetSpell(spell_name); + } + void launchSpell(std::string spell_name, ATarget const & atarget) { - //ATarget const * test = 0; - //if (test == & atarget) - // return; - - ASpell * spell = book.createSpell(name); + ATarget * test = NULL; + if (&atarget == test) + return; + ASpell * spell = book->createSpell(spell_name); if (spell) spell->launch(atarget); - }; + } }; #endif + diff --git a/cpp_module_02/a.out b/cpp_module_02/a.out index fd928af5547dde06bf37d94d0d1dad76b0d3c10d..4b513d747e258a07de2ec515e4ce3be7c284b6dc 100755 GIT binary patch literal 109496 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 literal 87864 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 + richard.launchSpell("Fireball", *wall); + richard.forgetSpell(fireball->getName()); + richard.launchSpell("Fireball", *wall); + richard.forgetSpell(fireball->getName()); + richard.launchSpell("Fireball", *wall); + + std::cout << "--\n"; + richard.learnSpell(fireball); + + TargetGenerator tarGen; + Dummy dummy; + + ATarget * dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + + std::cout << "-\n"; + + tarGen.learnTargetType(&dummy); + richard.launchSpell("Fireball", *dum); + dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + + tarGen.learnTargetType(&dummy); + richard.launchSpell("Fireball", *dum); + dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + + std::cout << "-\n"; + + tarGen.forgetTargetType(dummy.getType()); + richard.launchSpell("Fireball", *dum); + dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + + tarGen.forgetTargetType(dummy.getType()); + richard.launchSpell("Fireball", *dum); + dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + + tarGen.forgetTargetType(dummy.getType()); + richard.launchSpell("Fireball", *dum); + dum = tarGen.createTarget(dummy.getType()); + richard.launchSpell("Fireball", *dum); + } + + std::cout << "\n-----------------\n"; + // https://github.com/adbenoit-9/42_exams/tree/main/Exam_rank_05/cpp_module_02 + { + Warlock richard("Richard", "foo"); + + // test copy + Fireball * fire = new Fireball(); + BrickWall * wall = new BrickWall(); + TargetGenerator tarGen; + tarGen.learnTargetType(wall); + richard.learnSpell(fire); + const std::string name(fire->getName()); + const std::string effects(fire->getEffects()); + const std::string type(wall->getType()); + delete fire; + delete wall; + ATarget* target = tarGen.createTarget(type); + richard.launchSpell(name, *target); + + // test double + fire = new Fireball(); + richard.learnSpell(fire); + tarGen.learnTargetType(target); + richard.forgetSpell(name); + tarGen.forgetTargetType(type); + std::cout << "have to be empy : "; + richard.launchSpell(name, *target); + if (tarGen.createTarget(type)) + std::cout << "is not..."; + std::cout << std::endl; + } + + std::cout << "\n-----------------\n"; + //https://github.com/Glagan/42-exam-rank-05/blob/master/cpp_module_02/main.cc + { + std::cout << "--- Constructors:\n"; + Warlock richard("Aang", "The Avatar"); + + std::cout << "--- Spells:\n"; + Polymorph *water = new Polymorph(); + Fireball *fire = new Fireball(); + Fwoosh *air = new Fwoosh(); + richard.learnSpell(water); + richard.learnSpell(fire); + richard.forgetSpell("Fwoosh"); + richard.learnSpell(air); + richard.forgetSpell("Fwoosh"); + richard.forgetSpell("Fwoosh"); + richard.learnSpell(air); + + std::cout << "--- Targets:\n"; + Dummy *hay = new Dummy(); + BrickWall *earth = new BrickWall(); + + TargetGenerator tarGen; + tarGen.learnTargetType(hay); + tarGen.learnTargetType(earth); + + std::cout << "--- Spells (all):\n"; + + richard.launchSpell("Fwoosh", *tarGen.createTarget("Dummy Practice")); + richard.launchSpell("Fireball", *tarGen.createTarget("BrickWall Practice")); + richard.launchSpell("Polymorph", *tarGen.createTarget("Dummy Practice")); + + std::cout << "--- Forgotten \"Fwoosh\":\n"; + + richard.forgetSpell("Fwoosh"); + richard.launchSpell("Fwoosh", *tarGen.createTarget("Dummy Practice")); + richard.launchSpell("Fireball", *tarGen.createTarget("BrickWall Practice")); + richard.launchSpell("Polymorph", *tarGen.createTarget("Dummy Practice")); + + std::cout << "--- Spells (all):\n"; + + richard.learnSpell(air); + richard.launchSpell("Fwoosh", *tarGen.createTarget("Dummy Practice")); + richard.launchSpell("Fireball", *tarGen.createTarget("BrickWall Practice")); + richard.launchSpell("Polymorph", *tarGen.createTarget("Dummy Practice")); + + std::cout << "--- Non-existant spell:\n"; + + richard.launchSpell("ACID", *tarGen.createTarget("BrickWall Practice")); + richard.forgetSpell("ACID"); + richard.launchSpell("ACID", *tarGen.createTarget("Dummy Practice")); + + std::cout << "--- Destructors:\n"; + return (0); + } + + std::cout << "\n-----------------\n"; + // https://github.com/Kromolux/42_exam_rank_05/blob/main/cpp_module_02/main.cpp + { + Warlock richard("Richard", "foo"); + richard.setTitle("Hello, I'm Richard the Warlock!"); + BrickWall model1; + BrickWall test1(model1); + + Polymorph* polymorph = new Polymorph(); + TargetGenerator tarGen; + + tarGen.learnTargetType(&test1); + richard.learnSpell(polymorph); + + Fireball* fireball = new Fireball(); + + richard.learnSpell(fireball); + + ATarget* wall = tarGen.createTarget("Inconspicuous Red-brick Wall"); + + richard.introduce(); + richard.launchSpell("Polymorph", *wall); + richard.launchSpell("Fireball", *wall); + delete wall; + delete fireball; + delete polymorph; + } } diff --git a/cpp_module_02/subject.en.txt b/cpp_module_02/subject.en.txt index 8ab660d..523278f 100644 --- a/cpp_module_02/subject.en.txt +++ b/cpp_module_02/subject.en.txt @@ -51,6 +51,7 @@ It will have the following functions: * ATarget* createTarget(string const &), that creates a target of the specified type +-------------------------------------------------------------------------------- Phew, that's done. Now here's a test main. It's not very thorough, so make sure to use your own aswell.