From 4c30e98f4a4018a25d3a9f3ee790d589be803cb0 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 13 Nov 2020 14:43:17 +0100 Subject: Added main for cpp04/ex01 and cpp04/ex02, Fixed cpp04/03 MateriaSource --- cpp04/ex01/main.cpp | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 175 insertions(+), 3 deletions(-) (limited to 'cpp04/ex01/main.cpp') diff --git a/cpp04/ex01/main.cpp b/cpp04/ex01/main.cpp index ca5b35e..5b907bd 100644 --- a/cpp04/ex01/main.cpp +++ b/cpp04/ex01/main.cpp @@ -6,19 +6,22 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/14 09:05:58 by charles #+# #+# */ -/* Updated: 2020/11/12 14:36:49 by cacharle ### ########.fr */ +/* Updated: 2020/11/13 12:00:52 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ +#include #include "Character.hpp" +#include "Enemy.hpp" #include "RadScorpion.hpp" +#include "SuperMutant.hpp" #include "PlasmaRifle.hpp" #include "PowerFist.hpp" int main() { { - std::cout << "================ SUBJECT MAIN =====================" << std::endl; + std::cout << "================ SUBJECT MAIN =====================" << std::endl; Character* me = new Character("me"); std::cout << *me; Enemy* b = new RadScorpion(); @@ -36,7 +39,6 @@ int main() me->attack(b); std::cout << *me; delete me; - ((RadScorpion*)b)->~RadScorpion(); delete pr; delete pf; } @@ -44,7 +46,177 @@ int main() std::cout << std::endl; { + std::cout << "================ PLASMA RIFLE =====================" << std::endl; + PlasmaRifle pr; + PlasmaRifle pr2(pr); + PlasmaRifle pr3; + pr3 = pr2; + std::cout << "Name: " << pr.getName() << std::endl; + std::cout << "AP Cost: " << pr.getAPCost() << std::endl; + std::cout << "Damage: " << pr.getDamage() << std::endl; + pr.attack(); + pr2.attack(); + pr3.attack(); + std::cout << "################ VIRTUAL" << std::endl; + AWeapon *w = ≺ + std::cout << "Name: " << w->getName() << std::endl; + std::cout << "AP Cost: " << w->getAPCost() << std::endl; + std::cout << "Damage: " << w->getDamage() << std::endl; + w->attack(); + } + + std::cout << std::endl; + + { + std::cout << "================ POWER FIST =====================" << std::endl; + PowerFist pf; + PowerFist pf2(pf); + PowerFist pf3; + pf3 = pf2; + std::cout << "Name: " << pf.getName() << std::endl; + std::cout << "AP Cost: " << pf.getAPCost() << std::endl; + std::cout << "Damage: " << pf.getDamage() << std::endl; + pf.attack(); + pf2.attack(); + pf3.attack(); + std::cout << "################ VIRTUAL" << std::endl; + AWeapon *w = &pf; + std::cout << "Name: " << w->getName() << std::endl; + std::cout << "AP Cost: " << w->getAPCost() << std::endl; + std::cout << "Damage: " << w->getDamage() << std::endl; + w->attack(); + } + + std::cout << std::endl; + + { + std::cout << "================ ENEMY =====================" << std::endl; + Enemy e(2000, "Titan"); + Enemy e2(e); + Enemy e3(0, "should not be printed"); + e3 = e2; + std::cout << "Type: " << e.getType() << ", HP: " << e.getHP() << std::endl; + std::cout << "Type: " << e2.getType() << ", HP: " << e2.getHP() << std::endl; + std::cout << "Type: " << e3.getType() << ", HP: " << e3.getHP() << std::endl; + std::cout << "################ TAKE DAMAGE" << std::endl; + std::cout << "HP: " << e.getHP() << std::endl; + e.takeDamage(10); + std::cout << "HP: " << e.getHP() << std::endl; + e.takeDamage(-1); + std::cout << "HP: " << e.getHP() << std::endl; + e.takeDamage(INT_MIN); + std::cout << "HP: " << e.getHP() << std::endl; + e.takeDamage(0); + std::cout << "HP: " << e.getHP() << std::endl; + e.takeDamage(3000); + std::cout << "HP: " << e.getHP() << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "================ SUPER MUTANT ====================" << std::endl; + SuperMutant m; + SuperMutant m2(m); + SuperMutant m3; + m3 = m2; + std::cout << "Type: " << m.getType() << ", HP: " << m.getHP() << std::endl; + std::cout << "Type: " << m2.getType() << ", HP: " << m2.getHP() << std::endl; + std::cout << "Type: " << m3.getType() << ", HP: " << m3.getHP() << std::endl; + std::cout << "################ TAKE DAMAGE" << std::endl; + std::cout << "HP: " << m.getHP() << std::endl; + m.takeDamage(10); + std::cout << "HP: " << m.getHP() << std::endl; + m.takeDamage(-1); + std::cout << "HP: " << m.getHP() << std::endl; + m.takeDamage(INT_MIN); + std::cout << "HP: " << m.getHP() << std::endl; + m.takeDamage(0); + std::cout << "HP: " << m.getHP() << std::endl; + m.takeDamage(180); + std::cout << "HP: " << m.getHP() << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "================ RAD SCORPION ====================" << std::endl; + RadScorpion s; + RadScorpion s2(s); + RadScorpion s3; + s3 = s2; + std::cout << "Type: " << s.getType() << ", HP: " << s.getHP() << std::endl; + std::cout << "Type: " << s2.getType() << ", HP: " << s2.getHP() << std::endl; + std::cout << "Type: " << s3.getType() << ", HP: " << s3.getHP() << std::endl; + std::cout << "################ TAKE DAMAGE" << std::endl; + std::cout << "HP: " << s.getHP() << std::endl; + s.takeDamage(10); + std::cout << "HP: " << s.getHP() << std::endl; + s.takeDamage(-1); + std::cout << "HP: " << s.getHP() << std::endl; + s.takeDamage(INT_MIN); + std::cout << "HP: " << s.getHP() << std::endl; + s.takeDamage(0); + std::cout << "HP: " << s.getHP() << std::endl; + s.takeDamage(90); + std::cout << "HP: " << s.getHP() << std::endl; + } + + std::cout << std::endl; + + { + std::cout << "================ CHARACTER ====================" << std::endl; + Character c("Jean-Didier"); + Character c2(c); + Character c3("should not be displayed"); + c3 = c2; + std::cout << c; + std::cout << c2; + std::cout << c3; + + std::cout << "################ ATTACK NO WEAPON" << std::endl; + Enemy* r = new RadScorpion(); + c.attack(r); + Enemy* s = new SuperMutant(); + c.attack(s); + + std::cout << "################ EQUIP" << std::endl; + PowerFist pf; + c.equip(&pf); + c.attack(r); + c.attack(s); + std::cout << c; + PlasmaRifle pr; + c.equip(&pr); + c.attack(r); + c.attack(s); + std::cout << c; + c.attack(s); + c.attack(s); + c.attack(s); + c.recoverAP(); + c.recoverAP(); + c.attack(s); + c.attack(s); + c.attack(s); + c.attack(s); + c.attack(s); + + std::cout << "################ RECOVER AP" << std::endl; + std::cout << c; + c.recoverAP(); + std::cout << c; + c.recoverAP(); + std::cout << c; + c.recoverAP(); + std::cout << c; + c.recoverAP(); + std::cout << c; + c.recoverAP(); + std::cout << c; + c.attack(r); + // std::cout << "################ DESTRUCTORS" << std::endl; } return 0; -- cgit