diff options
Diffstat (limited to 'cpp03/ex04/main.cpp')
| -rw-r--r-- | cpp03/ex04/main.cpp | 240 |
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; } |
