213 lines
5.9 KiB
C++
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;
|
|
}
|
|
}
|