Files
42_SIDE_exam_05_cpp/cpp_module_02/main.cpp
2022-12-12 22:34:11 +01:00

213 lines
5.9 KiB
C++

#include "Warlock.hpp"
#include "Fwoosh.hpp"
#include "Dummy.hpp"
#include "BrickWall.hpp"
#include "Polymorph.hpp"
#include "TargetGenerator.hpp"
#include "Fireball.hpp"
int main()
{
// test subect
{
Warlock richard("Richard", "foo");
richard.setTitle("Hello, I'm Richard the Warlock!");
BrickWall model1;
Polymorph* polymorph = new Polymorph();
TargetGenerator tarGen;
tarGen.learnTargetType(&model1);
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);
}
// my test
{
Warlock richard("Richard", "foo");
BrickWall * wall = new BrickWall();
Fireball * fireball = new Fireball();
richard.launchSpell("Fireball", *wall);
std::cout << "-\n";
richard.learnSpell(fireball);
richard.launchSpell("Fireball", *wall);
richard.learnSpell(fireball);
richard.launchSpell("Fireball", *wall);
std::cout << "-\n";
richard.forgetSpell(fireball->getName());
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;
}
}