aboutsummaryrefslogtreecommitdiff
path: root/cpp03/ex04/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp03/ex04/main.cpp')
-rw-r--r--cpp03/ex04/main.cpp240
1 files changed, 198 insertions, 42 deletions
diff --git a/cpp03/ex04/main.cpp b/cpp03/ex04/main.cpp
index 3d387ae..0358760 100644
--- a/cpp03/ex04/main.cpp
+++ b/cpp03/ex04/main.cpp
@@ -6,57 +6,213 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */
-/* Updated: 2020/11/11 08:19:33 by cacharle ### ########.fr */
+/* Updated: 2020/11/12 10:13:44 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include <cstdlib>
+#include <fstream>
+#include <iostream>
#include "FragTrap.hpp"
#include "ScavTrap.hpp"
#include "NinjaTrap.hpp"
+#include "SuperTrap.hpp"
int main(void)
{
- // srand(time(NULL));
-
- // FragTrap ft("bob");
- // ft.rangedAttack("a dog");
- // ft.meleeAttack("a cat");
- // ft.takeDamage(10);
- // ft.beRepaired(10);
- // ft.vaulthunter_dot_exe("your mom");
- // ft.vaulthunter_dot_exe("your dad");
- // ft.vaulthunter_dot_exe("your brother");
- // ft.vaulthunter_dot_exe("your sister");
- // ft.vaulthunter_dot_exe("your grandma");
- // ft.takeDamage(1000);
- // ft.beRepaired(1000);
- //
- // std::cout << std::endl;
- // ScavTrap scav("jean");
- // scav.rangedAttack("a dog");
- // scav.meleeAttack("a cat");
- // scav.takeDamage(10);
- // scav.beRepaired(10);
- // scav.challengeNewcomer("your mom");
- // scav.challengeNewcomer("your dad");
- // scav.challengeNewcomer("your brother");
- // scav.challengeNewcomer("your sister");
- // scav.challengeNewcomer("your grandma");
- // scav.takeDamage(1000);
- // scav.beRepaired(1000);
- //
- // std::cout << std::endl;
- // NinjaTrap ninja("didier");
- // ninja.rangedAttack("a dog");
- // ninja.meleeAttack("a cat");
- // ninja.takeDamage(10);
- // ninja.beRepaired(10);
- // ninja.ninjaShoebox(ninja);
- // ninja.ninjaShoebox(ft);
- // ninja.ninjaShoebox(scav);
- // ninja.ninjaShoebox(ClapTrap("oui"));
- // ninja.takeDamage(1000);
- // ninja.beRepaired(1000);
+ int seed;
+ std::ifstream devRandom("/dev/random");
+ if (devRandom.is_open())
+ {
+ devRandom.read((char*)&seed, sizeof(int));
+ devRandom.close();
+ }
+ else
+ seed = time(NULL);
+ srand(seed);
+
+ {
+ std::cout << "============================== FRAG TRAP ==============================" << std::endl;
+ FragTrap ft("Fragger");
+ std::cout << "################################################## ATTACKS" << std::endl;
+ ft.rangedAttack("a dog");
+ ft.meleeAttack("a cat");
+ std::cout << "################################################## DAMAGE" << std::endl;
+ ft.takeDamage(0);
+ ft.beRepaired(0);
+ ft.takeDamage(10);
+ ft.beRepaired(10);
+ ft.takeDamage(60);
+ ft.beRepaired(20);
+ ft.beRepaired(40);
+ std::cout << "################################################## DAMAGE OVERFLOW" << std::endl;
+ ft.takeDamage(110);
+ ft.beRepaired(110);
+ {
+ std::cout << "################################################## COPY CONSTRUCTOR" << std::endl;
+ FragTrap ft2(ft);
+ }
+ {
+ std::cout << "################################################## OPERATOR=" << std::endl;
+ FragTrap ft3("foo");
+ ft3 = ft;
+ }
+ std::cout << "################################################## VAULTHUNTER" << std::endl;
+ ft.vaulthunter_dot_exe("your mom");
+ ft.vaulthunter_dot_exe("your dad");
+ ft.vaulthunter_dot_exe("your brother");
+ ft.vaulthunter_dot_exe("your sister");
+ std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl;
+ ft.vaulthunter_dot_exe("your grandma");
+ std::cout << "################################################## DESTRUCTOR" << std::endl;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "============================== SCAV TRAP ==============================" << std::endl;
+ ScavTrap sv("Scaved");
+ std::cout << "################################################## ATTACKS" << std::endl;
+ sv.rangedAttack("a dog");
+ sv.meleeAttack("a cat");
+ std::cout << "################################################## DAMAGE" << std::endl;
+ sv.takeDamage(0);
+ sv.beRepaired(0);
+ sv.takeDamage(10);
+ sv.beRepaired(10);
+ sv.takeDamage(60);
+ sv.beRepaired(20);
+ sv.beRepaired(40);
+ std::cout << "################################################## DAMAGE OVERFLOW" << std::endl;
+ sv.takeDamage(110);
+ sv.beRepaired(110);
+ {
+ std::cout << "################################################## COPY CONSTRUCTOR" << std::endl;
+ ScavTrap sv2(sv);
+ }
+ {
+ std::cout << "################################################## OPERATOR=" << std::endl;
+ ScavTrap sv3("foo");
+ sv3 = sv;
+ }
+ std::cout << "################################################## CHALLENGE NEW COMER" << std::endl;
+ sv.challengeNewcomer("your mom");
+ sv.challengeNewcomer("your dad");
+ sv.challengeNewcomer("your brother");
+ sv.challengeNewcomer("your sister");
+ sv.challengeNewcomer("your grandma");
+ std::cout << "################################################## DESTRUCTOR" << std::endl;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "============================== CLAP TRAP ==============================" << std::endl;
+ ClapTrap cl("Clapped");
+ std::cout << "################################################## ATTACKS" << std::endl;
+ cl.rangedAttack("a dog");
+ cl.meleeAttack("a cat");
+ std::cout << "################################################## DAMAGE" << std::endl;
+ cl.takeDamage(0);
+ cl.beRepaired(0);
+ cl.takeDamage(10);
+ cl.beRepaired(10);
+ cl.takeDamage(60);
+ cl.beRepaired(20);
+ cl.beRepaired(40);
+ std::cout << "################################################## DAMAGE OVERFLOW" << std::endl;
+ cl.takeDamage(110);
+ cl.beRepaired(110);
+ {
+ std::cout << "################################################## COPY CONSTRUCTOR" << std::endl;
+ ClapTrap cl2(cl);
+ }
+ {
+ std::cout << "################################################## OPERATOR=" << std::endl;
+ ClapTrap cl3("foo");
+ cl3 = cl;
+ }
+ std::cout << "################################################## DESTRUCTOR" << std::endl;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "============================== NINJA TRAP ==============================" << std::endl;
+ NinjaTrap ni("Ninjer");
+ std::cout << "################################################## ATTACKS" << std::endl;
+ ni.rangedAttack("a dog");
+ ni.meleeAttack("a cat");
+ std::cout << "################################################## DAMAGE" << std::endl;
+ ni.takeDamage(0);
+ ni.beRepaired(0);
+ ni.takeDamage(10);
+ ni.beRepaired(10);
+ ni.takeDamage(60);
+ ni.beRepaired(20);
+ ni.beRepaired(40);
+ std::cout << "################################################## DAMAGE OVERFLOW" << std::endl;
+ ni.takeDamage(110);
+ ni.beRepaired(110);
+ {
+ std::cout << "################################################## COPY CONSTRUCTOR" << std::endl;
+ NinjaTrap ni2(ni);
+ }
+ {
+ std::cout << "################################################## OPERATOR=" << std::endl;
+ NinjaTrap ni3("foo");
+ ni3 = ni;
+ }
+ std::cout << "################################################## SHOE BOX" << std::endl;
+ ni.ninjaShoebox(FragTrap("Innocent_frag_trap"));
+ ni.ninjaShoebox(ScavTrap("Anoying_scav_trap"));
+ ni.ninjaShoebox(NinjaTrap("Fellow_intelectual"));
+ ni.ninjaShoebox(ClapTrap("Basic_clap"));
+ std::cout << "################################################## DESTRUCTOR" << std::endl;
+ }
+
+ std::cout << std::endl;
+
+ {
+ std::cout << "============================== SUPER TRAP ==============================" << std::endl;
+ SuperTrap su("SuperMan");
+ std::cout << "################################################## ATTACKS" << std::endl;
+ su.rangedAttack("a dog");
+ su.meleeAttack("a cat");
+ std::cout << "################################################## DAMAGE" << std::endl;
+ su.takeDamage(0);
+ su.beRepaired(0);
+ su.takeDamage(10);
+ su.beRepaired(10);
+ su.takeDamage(60);
+ su.beRepaired(20);
+ su.beRepaired(40);
+ std::cout << "################################################## DAMAGE OVERFLOW" << std::endl;
+ su.takeDamage(110);
+ su.beRepaired(110);
+ {
+ std::cout << "################################################## COPY CONSTRUCTOR" << std::endl;
+ SuperTrap su2(su);
+ }
+ {
+ std::cout << "################################################## OPERATOR=" << std::endl;
+ SuperTrap su3("foo");
+ su3 = su;
+ }
+ std::cout << "################################################## SHOE BOX" << std::endl;
+ su.ninjaShoebox(FragTrap("Innocent_frag_trap"));
+ su.ninjaShoebox(ScavTrap("Anoying_scav_trap"));
+ su.ninjaShoebox(NinjaTrap("Fellow_intelectual"));
+ su.ninjaShoebox(ClapTrap("Basic_clap"));
+ std::cout << "################################################## VAULTHUNTER" << std::endl;
+ su.vaulthunter_dot_exe("your mom");
+ su.vaulthunter_dot_exe("your dad");
+ su.vaulthunter_dot_exe("your brother");
+ su.vaulthunter_dot_exe("your sister");
+ std::cout << "################################################## VAULTHUNTER NO ENERGY" << std::endl;
+ su.vaulthunter_dot_exe("your grandma");
+ std::cout << "################################################## DESTRUCTOR" << std::endl;
+ }
+
return 0;
}