diff options
40 files changed, 2141 insertions, 64 deletions
diff --git a/cpp03/ex00/FragTrap.cpp b/cpp03/ex00/FragTrap.cpp index 9a68150..3b6a3b1 100644 --- a/cpp03/ex00/FragTrap.cpp +++ b/cpp03/ex00/FragTrap.cpp @@ -6,80 +6,118 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ -/* Updated: 2020/02/22 05:41:11 by cacharle ### ########.fr */ +/* Updated: 2020/04/13 15:18:42 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap() : (std::string name) +FragTrap::FragTrap(): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(30), + m_rangedAttackDamage(20), + m_armorDamageReduction(5) { - hitPoints = 100 - maxHitPoints = 100 - energyPoints = 100 - maxEnergyPoints = 100 - level = 1 - meleeAttackDamage = 30 - rangedAttackDamage = 20 - armorDamageReduction = 5 - std::cout << "New " << name << ": your gamer references sucks"; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; } -FragTrap::FragTrap(FragTrap const & other) +FragTrap::FragTrap(std::string name): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(30), + m_rangedAttackDamage(20), + m_armorDamageReduction(5) { - name = other.name - hitPoints = other.hitPoints; - maxHitPoints = other.maxHitPoints; - energyPoints = other.energyPoints; - maxEnergyPoints = other.maxEnergyPoints; - level = other.level; - meleeAttackDamage = other.meleeAttackDamage; - rangedAttackDamage = other.rangedAttackDamage; - armorDamageReduction = other.armorDamageReduction; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; } -FragTrap FragTrap::operator=(FragTrap const & other) +FragTrap::FragTrap(FragTrap const& other) { - return FragTrap(other); + *this = other; } -FragTrap::~FragTrap() +void FragTrap::operator=(FragTrap const& other) { - std::cout << "Delete " << name << ": your gamer references still sucks"; + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; } -void FragTrap::rangedAttack(std::string const & target) +FragTrap::~FragTrap() { - std::cout << "FR4G-TP " << name << " attacks " << target - << "at range, causing " << rangedAttackDamage << " points of damage!"; + std::cout << "FR4G-TP Delete " << m_name << ": your gaming references still suck" << std::endl; } -void FragTrap::meleeAttack(std::string const & target) +void FragTrap::rangedAttack(std::string const& target) const { - std::cout << "FR4G-TP " << name << " attacks " << target - << " causing " << meleeAttackDamage << " points of damage!"; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} +void FragTrap::meleeAttack(std::string const& target) const +{ + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; } void FragTrap::takeDamage(unsigned int amount) { - if (amount > maxHitPoints) - amount = maxHitPoints - if (amount > hitPoints) - { - hitPoints = 0; - return ; - } - hitPoints -= amount; + if (amount < m_armorDamageReduction) + amount = 0; + else + amount -= m_armorDamageReduction; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << "FR4G-TP " << m_name + << " takes " << amount + << " damage" << std::endl; } void FragTrap::beRepaired(unsigned int amount) { - if (amound + hitPoints > max - + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << "FR4G-TP " << m_name + << " gained " << amount + << " hit points" << std::endl; } -void FragTrap::vaulthunter_dot_exe(std::string const & target) +void FragTrap::vaulthunter_dot_exe(std::string const& target) { - + if (m_energyPoints < 25) + { + std::cout << "FR4G-TP " << m_name << " does not have enough energy" << std::endl; + return; + } + std::string attacks[5] = { + "boum boum", + "cursed for generation", + "sit and wait for your death", + "mimic a gun with his hand and make 'piou piou' sound", + "shot you in the face" + }; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " with " << attacks[rand() % 5] << std::endl; + m_energyPoints -= 25; } diff --git a/cpp03/ex00/FragTrap.hpp b/cpp03/ex00/FragTrap.hpp index 200b412..423116d 100644 --- a/cpp03/ex00/FragTrap.hpp +++ b/cpp03/ex00/FragTrap.hpp @@ -6,38 +6,42 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ -/* Updated: 2020/02/22 05:40:56 by cacharle ### ########.fr */ +/* Updated: 2020/04/13 15:17:02 by charles ### ########.fr */ /* */ /* ************************************************************************** */ -#ifndef FRAGTRAP_CPP -# define FRAGTRAP_CPP +#ifndef FRAGTRAP_HPP +# define FRAGTRAP_HPP +# include <cstdlib> +# include <iostream> # include <string> class FragTrap { +public: FragTrap(); - FragTrap(FragTrap const & other); - FragTrap operator=(FragTrap const & other); + FragTrap(std::string name); + FragTrap(FragTrap const& other); + void operator=(FragTrap const& other); ~FragTrap(); - rangedAttack(std::string const & target); - meleeAttack(std::string const & target); - takeDamage(unsigned int amount); - beRepaired(unsigned int amount); - vaulthunter_dot_exe(std::string const & target); + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + void vaulthunter_dot_exe(std::string const& target); - protected: - std::string name; - int hitPoints; - int maxHitPoints; - int energyPoints; - int maxEnergyPoints; - int level; - int meleeAttackDamage; - int rangedAttackDamage; - int armorDamageReduction; +private: + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; }; #endif diff --git a/cpp03/ex00/main.cpp b/cpp03/ex00/main.cpp index c1059f5..4ebcae8 100644 --- a/cpp03/ex00/main.cpp +++ b/cpp03/ex00/main.cpp @@ -6,13 +6,28 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ -/* Updated: 2020/02/22 05:41:48 by cacharle ### ########.fr */ +/* Updated: 2020/04/13 14:11:05 by charles ### ########.fr */ /* */ /* ************************************************************************** */ +#include <cstdlib> #include "FragTrap.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); return 0; } diff --git a/cpp03/ex01/FragTrap.cpp b/cpp03/ex01/FragTrap.cpp new file mode 100644 index 0000000..fe79b02 --- /dev/null +++ b/cpp03/ex01/FragTrap.cpp @@ -0,0 +1,123 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:17:13 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap(): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(30), + m_rangedAttackDamage(20), + m_armorDamageReduction(5) +{ + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(std::string name): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(30), + m_rangedAttackDamage(20), + m_armorDamageReduction(5) +{ + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(FragTrap const& other) +{ + *this = other; +} + +void FragTrap::operator=(FragTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +FragTrap::~FragTrap() +{ + std::cout << "FR4G-TP Delete " << m_name << ": your gaming references still suck" << std::endl; +} + +void FragTrap::rangedAttack(std::string const& target) const +{ + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} + +void FragTrap::meleeAttack(std::string const& target) const +{ + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; +} + +void FragTrap::takeDamage(unsigned int amount) +{ + if (amount < m_armorDamageReduction) + amount = 0; + else + amount -= m_armorDamageReduction; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << "FR4G-TP " << m_name + << " takes " << amount + << " damage" << std::endl; +} + +void FragTrap::beRepaired(unsigned int amount) +{ + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << "FR4G-TP " << m_name + << " gained " << amount + << " hit points" << std::endl; +} + +void FragTrap::vaulthunter_dot_exe(std::string const& target) +{ + if (m_energyPoints < 25) + { + std::cout << "FR4G-TP " << m_name << " does not have enough energy" << std::endl; + return; + } + std::string attacks[5] = { + "boum boum", + "cursed for generation", + "sit and wait for your death", + "mimic a gun with his hand and make 'piou piou' sound", + "shot you in the face" + }; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " with " << attacks[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex01/FragTrap.hpp b/cpp03/ex01/FragTrap.hpp new file mode 100644 index 0000000..9ccec3d --- /dev/null +++ b/cpp03/ex01/FragTrap.hpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:17:36 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +# define FRAGTRAP_HPP + +# include <cstdlib> +# include <iostream> +# include <string> + +class FragTrap +{ +public: + FragTrap(); + FragTrap(std::string name); + FragTrap(FragTrap const& other); + void operator=(FragTrap const& other); + ~FragTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + void vaulthunter_dot_exe(std::string const& target); + +private: + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; +}; + +#endif diff --git a/cpp03/ex01/ScavTrap.cpp b/cpp03/ex01/ScavTrap.cpp index e69de29..c866f44 100644 --- a/cpp03/ex01/ScavTrap.cpp +++ b/cpp03/ex01/ScavTrap.cpp @@ -0,0 +1,117 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:15:03 by charles #+# #+# */ +/* Updated: 2020/04/13 14:31:23 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap(): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(50), + m_maxEnergyPoints(50), + m_level(1), + m_name(""), + m_meleeAttackDamage(20), + m_rangedAttackDamage(15), + m_armorDamageReduction(3) +{ + std::cout << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(std::string name): + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(50), + m_maxEnergyPoints(50), + m_level(1), + m_name(name), + m_meleeAttackDamage(20), + m_rangedAttackDamage(15), + m_armorDamageReduction(3) +{ + std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(ScavTrap const& other) +{ + *this = other; +} + +void ScavTrap::operator=(ScavTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ScavTrap::~ScavTrap() +{ + std::cout << "SC4V-TP Delete " << m_name << ": your gaming references still suck" << std::endl; +} + +void ScavTrap::rangedAttack(std::string const& target) const +{ + std::cout << "SC4V-TP " << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} + +void ScavTrap::meleeAttack(std::string const& target) const +{ + std::cout << "SC4V-TP " << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; +} + +void ScavTrap::takeDamage(unsigned int amount) +{ + amount -= m_armorDamageReduction; + if (amount < 0) + amount = 0; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << "SC4V-TP " << m_name + << " takes " << amount + << " damage" << std::endl; +} + +void ScavTrap::beRepaired(unsigned int amount) +{ + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << "SC4V-TP " << m_name + << " gained " << amount + << " hit points" << std::endl; +} + +void ScavTrap::challengeNewcomer(std::string const& target) +{ + std::string challenges[5] = { + "lick your elbow", + "do 1 push up", + "dont talk for 1 hour", + "draw your name by peeing in the snow", + "punch me" + }; + std::cout << "SC4V-TP " << m_name + << " challenge " << target + << " to " << challenges[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex01/ScavTrap.hpp b/cpp03/ex01/ScavTrap.hpp index e69de29..f5bc3cc 100644 --- a/cpp03/ex01/ScavTrap.hpp +++ b/cpp03/ex01/ScavTrap.hpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:11:51 by charles #+# #+# */ +/* Updated: 2020/04/13 15:18:01 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +# define SCAVTRAP_HPP + +# include <cstdlib> +# include <iostream> +# include <string> + +class ScavTrap +{ +public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(ScavTrap const& other); + void operator=(ScavTrap const& other); + ~ScavTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + void challengeNewcomer(std::string const& target); + +private: + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; +}; + +#endif diff --git a/cpp03/ex01/main.cpp b/cpp03/ex01/main.cpp new file mode 100644 index 0000000..8e1e8f0 --- /dev/null +++ b/cpp03/ex01/main.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ +/* Updated: 2020/04/13 14:30:37 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <cstdlib> +#include "FragTrap.hpp" +#include "ScavTrap.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); + return 0; +} diff --git a/cpp03/ex02/ClapTrap.cpp b/cpp03/ex02/ClapTrap.cpp index e69de29..6711799 100644 --- a/cpp03/ex02/ClapTrap.cpp +++ b/cpp03/ex02/ClapTrap.cpp @@ -0,0 +1,105 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:28:43 by charles #+# #+# */ +/* Updated: 2020/04/13 15:50:48 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap(): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(std::string name): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(ClapTrap const& other) +{ + *this = other; +} + +void ClapTrap::operator=(ClapTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ClapTrap::~ClapTrap() +{ + std::cout << "CL4P-TP " << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void ClapTrap::rangedAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::meleeAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (amount < m_armorDamageReduction) + amount = 0; + else + amount -= m_armorDamageReduction; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << m_prefix << m_name + << " takes " << amount + << " damage" << std::endl; +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << m_prefix << m_name + << " gained " << amount + << " hit points" << std::endl; +} diff --git a/cpp03/ex02/ClapTrap.hpp b/cpp03/ex02/ClapTrap.hpp index e69de29..5f4e26a 100644 --- a/cpp03/ex02/ClapTrap.hpp +++ b/cpp03/ex02/ClapTrap.hpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:20:45 by charles #+# #+# */ +/* Updated: 2020/04/13 15:47:14 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + + +#ifndef CLAPTRAP_HPP +# define CLAPTRAP_HPP + +# include <iostream> +# include <string> + +class ClapTrap +{ +public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(ClapTrap const& other); + void operator=(ClapTrap const& other); + ~ClapTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + +protected: + std::string m_prefix; + + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; +}; + +#endif diff --git a/cpp03/ex02/FragTrap.cpp b/cpp03/ex02/FragTrap.cpp new file mode 100644 index 0000000..4db102e --- /dev/null +++ b/cpp03/ex02/FragTrap.cpp @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:46:59 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap(): + ClapTrap() +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(FragTrap const& other) +{ + *this = other; +} + +void FragTrap::operator=(FragTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +FragTrap::~FragTrap() +{ + std::cout << m_prefix << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void FragTrap::vaulthunter_dot_exe(std::string const& target) +{ + if (m_energyPoints < 25) + { + std::cout << "FR4G-TP " << m_name << " does not have enough energy" << std::endl; + return; + } + std::string attacks[5] = { + "boum boum", + "cursed for generation", + "sit and wait for your death", + "mimic a gun with his hand and make 'piou piou' sound", + "shot you in the face" + }; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " with " << attacks[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex02/FragTrap.hpp b/cpp03/ex02/FragTrap.hpp new file mode 100644 index 0000000..2afa95c --- /dev/null +++ b/cpp03/ex02/FragTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:33:50 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +# define FRAGTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class FragTrap : public ClapTrap +{ +public: + FragTrap(); + FragTrap(std::string name); + FragTrap(FragTrap const& other); + void operator=(FragTrap const& other); + ~FragTrap(); + + void vaulthunter_dot_exe(std::string const& target); +}; + +#endif diff --git a/cpp03/ex02/ScavTrap.cpp b/cpp03/ex02/ScavTrap.cpp new file mode 100644 index 0000000..d310ab1 --- /dev/null +++ b/cpp03/ex02/ScavTrap.cpp @@ -0,0 +1,74 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:15:03 by charles #+# #+# */ +/* Updated: 2020/04/13 15:46:56 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap(): + ClapTrap() +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(ScavTrap const& other) +{ + *this = other; +} + +void ScavTrap::operator=(ScavTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ScavTrap::~ScavTrap() +{ + std::cout << "SC4V-TP Delete " << m_name << ": your gaming references still suck" << std::endl; +} + +void ScavTrap::challengeNewcomer(std::string const& target) +{ + std::string challenges[5] = { + "lick your elbow", + "do 1 push up", + "dont talk for 1 hour", + "draw your name by peeing in the snow", + "punch me" + }; + std::cout << "SC4V-TP " << m_name + << " challenge " << target + << " to " << challenges[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex02/ScavTrap.hpp b/cpp03/ex02/ScavTrap.hpp new file mode 100644 index 0000000..1ec4008 --- /dev/null +++ b/cpp03/ex02/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:11:51 by charles #+# #+# */ +/* Updated: 2020/04/13 15:34:53 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +# define SCAVTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class ScavTrap : public ClapTrap +{ +public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(ScavTrap const& other); + void operator=(ScavTrap const& other); + ~ScavTrap(); + + void challengeNewcomer(std::string const& target); +}; + +#endif diff --git a/cpp03/ex02/main.cpp b/cpp03/ex02/main.cpp new file mode 100644 index 0000000..8e1e8f0 --- /dev/null +++ b/cpp03/ex02/main.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ +/* Updated: 2020/04/13 14:30:37 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <cstdlib> +#include "FragTrap.hpp" +#include "ScavTrap.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); + return 0; +} diff --git a/cpp03/ex03/ClapTrap.cpp b/cpp03/ex03/ClapTrap.cpp new file mode 100644 index 0000000..6711799 --- /dev/null +++ b/cpp03/ex03/ClapTrap.cpp @@ -0,0 +1,105 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:28:43 by charles #+# #+# */ +/* Updated: 2020/04/13 15:50:48 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap(): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(std::string name): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(ClapTrap const& other) +{ + *this = other; +} + +void ClapTrap::operator=(ClapTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ClapTrap::~ClapTrap() +{ + std::cout << "CL4P-TP " << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void ClapTrap::rangedAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::meleeAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (amount < m_armorDamageReduction) + amount = 0; + else + amount -= m_armorDamageReduction; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << m_prefix << m_name + << " takes " << amount + << " damage" << std::endl; +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << m_prefix << m_name + << " gained " << amount + << " hit points" << std::endl; +} diff --git a/cpp03/ex03/ClapTrap.hpp b/cpp03/ex03/ClapTrap.hpp new file mode 100644 index 0000000..5f4e26a --- /dev/null +++ b/cpp03/ex03/ClapTrap.hpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:20:45 by charles #+# #+# */ +/* Updated: 2020/04/13 15:47:14 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + + +#ifndef CLAPTRAP_HPP +# define CLAPTRAP_HPP + +# include <iostream> +# include <string> + +class ClapTrap +{ +public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(ClapTrap const& other); + void operator=(ClapTrap const& other); + ~ClapTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + +protected: + std::string m_prefix; + + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; +}; + +#endif diff --git a/cpp03/ex03/FragTrap.cpp b/cpp03/ex03/FragTrap.cpp new file mode 100644 index 0000000..4db102e --- /dev/null +++ b/cpp03/ex03/FragTrap.cpp @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:46:59 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap(): + ClapTrap() +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(FragTrap const& other) +{ + *this = other; +} + +void FragTrap::operator=(FragTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +FragTrap::~FragTrap() +{ + std::cout << m_prefix << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void FragTrap::vaulthunter_dot_exe(std::string const& target) +{ + if (m_energyPoints < 25) + { + std::cout << "FR4G-TP " << m_name << " does not have enough energy" << std::endl; + return; + } + std::string attacks[5] = { + "boum boum", + "cursed for generation", + "sit and wait for your death", + "mimic a gun with his hand and make 'piou piou' sound", + "shot you in the face" + }; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " with " << attacks[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex03/FragTrap.hpp b/cpp03/ex03/FragTrap.hpp new file mode 100644 index 0000000..2afa95c --- /dev/null +++ b/cpp03/ex03/FragTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:33:50 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +# define FRAGTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class FragTrap : public ClapTrap +{ +public: + FragTrap(); + FragTrap(std::string name); + FragTrap(FragTrap const& other); + void operator=(FragTrap const& other); + ~FragTrap(); + + void vaulthunter_dot_exe(std::string const& target); +}; + +#endif diff --git a/cpp03/ex03/NinjaTrap.cpp b/cpp03/ex03/NinjaTrap.cpp index e69de29..2a27eec 100644 --- a/cpp03/ex03/NinjaTrap.cpp +++ b/cpp03/ex03/NinjaTrap.cpp @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* NinjaTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:33:00 by charles #+# #+# */ +/* Updated: 2020/04/13 17:47:20 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "NinjaTrap.hpp" + +NinjaTrap::NinjaTrap(): + ClapTrap() +{ + m_prefix = "NINJ4-TP "; + m_hitPoints = 60; + m_maxHitPoints = 60; + m_energyPoints = 120; + m_maxEnergyPoints = 120; + m_meleeAttackDamage = 60; + m_rangedAttackDamage = 5; + m_armorDamageReduction = 0; + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +NinjaTrap::NinjaTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "NINJ4-TP "; + m_hitPoints = 60; + m_maxHitPoints = 60; + m_energyPoints = 120; + m_maxEnergyPoints = 120; + m_meleeAttackDamage = 60; + m_rangedAttackDamage = 5; + m_armorDamageReduction = 0; + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +NinjaTrap::NinjaTrap(NinjaTrap const& other) +{ + *this = other; +} + +void NinjaTrap::operator=(NinjaTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +NinjaTrap::~NinjaTrap() +{ + std::cout << m_prefix << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void NinjaTrap::ninjaShoebox(NinjaTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack other ninja trap, the guy who made the subject didn't gave a fuck" << std::endl; +} + +void NinjaTrap::ninjaShoebox(FragTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack frag trap, leave me alone" << std::endl; +} + +void NinjaTrap::ninjaShoebox(ScavTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack sciv trap, ehehehe look at me I'm being funny" << std::endl; +} + +void NinjaTrap::ninjaShoebox(ClapTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack clap trap, ISN'T THAT WHAT YOU WANTED" << std::endl; +} diff --git a/cpp03/ex03/NinjaTrap.hpp b/cpp03/ex03/NinjaTrap.hpp index e69de29..217ae33 100644 --- a/cpp03/ex03/NinjaTrap.hpp +++ b/cpp03/ex03/NinjaTrap.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* NinjaTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:31:24 by charles #+# #+# */ +/* Updated: 2020/04/13 17:45:16 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef NINJATRAP_HPP +# define NINJATRAP_HPP + +# include "ClapTrap.hpp" +# include "FragTrap.hpp" +# include "ScavTrap.hpp" + +class NinjaTrap : public ClapTrap +{ +public: + NinjaTrap(); + NinjaTrap(std::string name); + NinjaTrap(NinjaTrap const& other); + void operator=(NinjaTrap const& other); + ~NinjaTrap(); + + void ninjaShoebox(NinjaTrap const& target); + void ninjaShoebox(FragTrap const& target); + void ninjaShoebox(ScavTrap const& target); + void ninjaShoebox(ClapTrap const& target); +}; + +#endif diff --git a/cpp03/ex03/ScavTrap.cpp b/cpp03/ex03/ScavTrap.cpp new file mode 100644 index 0000000..d310ab1 --- /dev/null +++ b/cpp03/ex03/ScavTrap.cpp @@ -0,0 +1,74 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:15:03 by charles #+# #+# */ +/* Updated: 2020/04/13 15:46:56 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap(): + ClapTrap() +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(ScavTrap const& other) +{ + *this = other; +} + +void ScavTrap::operator=(ScavTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ScavTrap::~ScavTrap() +{ + std::cout << "SC4V-TP Delete " << m_name << ": your gaming references still suck" << std::endl; +} + +void ScavTrap::challengeNewcomer(std::string const& target) +{ + std::string challenges[5] = { + "lick your elbow", + "do 1 push up", + "dont talk for 1 hour", + "draw your name by peeing in the snow", + "punch me" + }; + std::cout << "SC4V-TP " << m_name + << " challenge " << target + << " to " << challenges[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex03/ScavTrap.hpp b/cpp03/ex03/ScavTrap.hpp new file mode 100644 index 0000000..1ec4008 --- /dev/null +++ b/cpp03/ex03/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:11:51 by charles #+# #+# */ +/* Updated: 2020/04/13 15:34:53 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +# define SCAVTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class ScavTrap : public ClapTrap +{ +public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(ScavTrap const& other); + void operator=(ScavTrap const& other); + ~ScavTrap(); + + void challengeNewcomer(std::string const& target); +}; + +#endif diff --git a/cpp03/ex03/main.cpp b/cpp03/ex03/main.cpp new file mode 100644 index 0000000..6f709f8 --- /dev/null +++ b/cpp03/ex03/main.cpp @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ +/* Updated: 2020/04/13 17:46:24 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <cstdlib> +#include "FragTrap.hpp" +#include "ScavTrap.hpp" +#include "NinjaTrap.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); + return 0; +} diff --git a/cpp03/ex04/ClapTrap.cpp b/cpp03/ex04/ClapTrap.cpp new file mode 100644 index 0000000..6711799 --- /dev/null +++ b/cpp03/ex04/ClapTrap.cpp @@ -0,0 +1,105 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:28:43 by charles #+# #+# */ +/* Updated: 2020/04/13 15:50:48 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap(): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(std::string name): + m_prefix("CL4P-TP "), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ClapTrap::ClapTrap(ClapTrap const& other) +{ + *this = other; +} + +void ClapTrap::operator=(ClapTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ClapTrap::~ClapTrap() +{ + std::cout << "CL4P-TP " << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void ClapTrap::rangedAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " at range, causing " << m_rangedAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::meleeAttack(std::string const& target) const +{ + std::cout << m_prefix << m_name + << " attacks " << target + << " in melee mode causing " << m_meleeAttackDamage + << " points of damage!" << std::endl; +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (amount < m_armorDamageReduction) + amount = 0; + else + amount -= m_armorDamageReduction; + if (amount > m_hitPoints) + amount = m_hitPoints; + m_hitPoints -= amount; + std::cout << m_prefix << m_name + << " takes " << amount + << " damage" << std::endl; +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (amount + m_hitPoints > m_maxHitPoints) + amount = m_maxHitPoints - m_hitPoints; + m_hitPoints += amount; + std::cout << m_prefix << m_name + << " gained " << amount + << " hit points" << std::endl; +} diff --git a/cpp03/ex04/ClapTrap.hpp b/cpp03/ex04/ClapTrap.hpp new file mode 100644 index 0000000..5f4e26a --- /dev/null +++ b/cpp03/ex04/ClapTrap.hpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 15:20:45 by charles #+# #+# */ +/* Updated: 2020/04/13 15:47:14 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + + +#ifndef CLAPTRAP_HPP +# define CLAPTRAP_HPP + +# include <iostream> +# include <string> + +class ClapTrap +{ +public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(ClapTrap const& other); + void operator=(ClapTrap const& other); + ~ClapTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + +protected: + std::string m_prefix; + + unsigned int m_hitPoints; + unsigned int m_maxHitPoints; + unsigned int m_energyPoints; + unsigned int m_maxEnergyPoints; + unsigned int m_level; + std::string m_name; + unsigned int m_meleeAttackDamage; + unsigned int m_rangedAttackDamage; + unsigned int m_armorDamageReduction; +}; + +#endif diff --git a/cpp03/ex04/FragTrap.cpp b/cpp03/ex04/FragTrap.cpp new file mode 100644 index 0000000..4db102e --- /dev/null +++ b/cpp03/ex04/FragTrap.cpp @@ -0,0 +1,79 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:20:45 by cacharle #+# #+# */ +/* Updated: 2020/04/13 15:46:59 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap(): + ClapTrap() +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "FR4G-TP "; + m_energyPoints = 100; + m_maxEnergyPoints = 100; + m_meleeAttackDamage = 30; + m_rangedAttackDamage = 20; + m_armorDamageReduction = 5; + std::cout << "FR4G-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +FragTrap::FragTrap(FragTrap const& other) +{ + *this = other; +} + +void FragTrap::operator=(FragTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +FragTrap::~FragTrap() +{ + std::cout << m_prefix << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void FragTrap::vaulthunter_dot_exe(std::string const& target) +{ + if (m_energyPoints < 25) + { + std::cout << "FR4G-TP " << m_name << " does not have enough energy" << std::endl; + return; + } + std::string attacks[5] = { + "boum boum", + "cursed for generation", + "sit and wait for your death", + "mimic a gun with his hand and make 'piou piou' sound", + "shot you in the face" + }; + std::cout << "FR4G-TP " << m_name + << " attacks " << target + << " with " << attacks[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex04/FragTrap.hpp b/cpp03/ex04/FragTrap.hpp new file mode 100644 index 0000000..5db7027 --- /dev/null +++ b/cpp03/ex04/FragTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:17:16 by cacharle #+# #+# */ +/* Updated: 2020/04/13 18:35:46 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +# define FRAGTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class FragTrap : public virtual ClapTrap +{ +public: + FragTrap(); + FragTrap(std::string name); + FragTrap(FragTrap const& other); + void operator=(FragTrap const& other); + ~FragTrap(); + + void vaulthunter_dot_exe(std::string const& target); +}; + +#endif diff --git a/cpp03/ex04/NinjaTrap.cpp b/cpp03/ex04/NinjaTrap.cpp new file mode 100644 index 0000000..2a27eec --- /dev/null +++ b/cpp03/ex04/NinjaTrap.cpp @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* NinjaTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:33:00 by charles #+# #+# */ +/* Updated: 2020/04/13 17:47:20 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "NinjaTrap.hpp" + +NinjaTrap::NinjaTrap(): + ClapTrap() +{ + m_prefix = "NINJ4-TP "; + m_hitPoints = 60; + m_maxHitPoints = 60; + m_energyPoints = 120; + m_maxEnergyPoints = 120; + m_meleeAttackDamage = 60; + m_rangedAttackDamage = 5; + m_armorDamageReduction = 0; + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +NinjaTrap::NinjaTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "NINJ4-TP "; + m_hitPoints = 60; + m_maxHitPoints = 60; + m_energyPoints = 120; + m_maxEnergyPoints = 120; + m_meleeAttackDamage = 60; + m_rangedAttackDamage = 5; + m_armorDamageReduction = 0; + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +NinjaTrap::NinjaTrap(NinjaTrap const& other) +{ + *this = other; +} + +void NinjaTrap::operator=(NinjaTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +NinjaTrap::~NinjaTrap() +{ + std::cout << m_prefix << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void NinjaTrap::ninjaShoebox(NinjaTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack other ninja trap, the guy who made the subject didn't gave a fuck" << std::endl; +} + +void NinjaTrap::ninjaShoebox(FragTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack frag trap, leave me alone" << std::endl; +} + +void NinjaTrap::ninjaShoebox(ScavTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack sciv trap, ehehehe look at me I'm being funny" << std::endl; +} + +void NinjaTrap::ninjaShoebox(ClapTrap const& target) +{ + (void)target; + std::cout << m_prefix << m_name + << " attack clap trap, ISN'T THAT WHAT YOU WANTED" << std::endl; +} diff --git a/cpp03/ex04/NinjaTrap.hpp b/cpp03/ex04/NinjaTrap.hpp new file mode 100644 index 0000000..72d7039 --- /dev/null +++ b/cpp03/ex04/NinjaTrap.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* NinjaTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:31:24 by charles #+# #+# */ +/* Updated: 2020/04/13 18:41:44 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef NINJATRAP_HPP +# define NINJATRAP_HPP + +# include "ClapTrap.hpp" +# include "FragTrap.hpp" +# include "ScavTrap.hpp" + +class NinjaTrap : public virtual ClapTrap +{ +public: + NinjaTrap(); + NinjaTrap(std::string name); + NinjaTrap(NinjaTrap const& other); + void operator=(NinjaTrap const& other); + ~NinjaTrap(); + + void ninjaShoebox(NinjaTrap const& target); + void ninjaShoebox(FragTrap const& target); + void ninjaShoebox(ScavTrap const& target); + void ninjaShoebox(ClapTrap const& target); +}; + +#endif diff --git a/cpp03/ex04/ScavTrap.cpp b/cpp03/ex04/ScavTrap.cpp new file mode 100644 index 0000000..d310ab1 --- /dev/null +++ b/cpp03/ex04/ScavTrap.cpp @@ -0,0 +1,74 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:15:03 by charles #+# #+# */ +/* Updated: 2020/04/13 15:46:56 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap(): + ClapTrap() +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(std::string name): + ClapTrap(name) +{ + m_prefix = "SC4V-TP "; + m_energyPoints = 50; + m_maxEnergyPoints = 50; + m_meleeAttackDamage = 20; + m_rangedAttackDamage = 15; + m_armorDamageReduction = 3; + std::cout << "SC4V-TP New " << m_name << ": your gaming references suck" << std::endl; +} + +ScavTrap::ScavTrap(ScavTrap const& other) +{ + *this = other; +} + +void ScavTrap::operator=(ScavTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +ScavTrap::~ScavTrap() +{ + std::cout << "SC4V-TP Delete " << m_name << ": your gaming references still suck" << std::endl; +} + +void ScavTrap::challengeNewcomer(std::string const& target) +{ + std::string challenges[5] = { + "lick your elbow", + "do 1 push up", + "dont talk for 1 hour", + "draw your name by peeing in the snow", + "punch me" + }; + std::cout << "SC4V-TP " << m_name + << " challenge " << target + << " to " << challenges[rand() % 5] << std::endl; + m_energyPoints -= 25; +} diff --git a/cpp03/ex04/ScavTrap.hpp b/cpp03/ex04/ScavTrap.hpp new file mode 100644 index 0000000..a1d625b --- /dev/null +++ b/cpp03/ex04/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 14:11:51 by charles #+# #+# */ +/* Updated: 2020/04/13 18:41:33 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +# define SCAVTRAP_HPP + +# include <cstdlib> +# include "ClapTrap.hpp" + +class ScavTrap : public ClapTrap +{ +public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(ScavTrap const& other); + void operator=(ScavTrap const& other); + ~ScavTrap(); + + void challengeNewcomer(std::string const& target); +}; + +#endif diff --git a/cpp03/ex04/SuperTrap.cpp b/cpp03/ex04/SuperTrap.cpp index e69de29..c30f973 100644 --- a/cpp03/ex04/SuperTrap.cpp +++ b/cpp03/ex04/SuperTrap.cpp @@ -0,0 +1,75 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* SuperTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:52:56 by charles #+# #+# */ +/* Updated: 2020/04/13 17:55:14 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "SuperTrap.hpp" + +SuperTrap::SuperTrap(): + m_prefix("SUP3R-TP"), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(""), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +SuperTrap::SuperTrap(std::string name): + m_prefix("SUP3R-TP"), + m_hitPoints(100), + m_maxHitPoints(100), + m_energyPoints(100), + m_maxEnergyPoints(100), + m_level(1), + m_name(name), + m_meleeAttackDamage(0), + m_rangedAttackDamage(0), + m_armorDamageReduction(0) +{ + std::cout << m_prefix << "New " << m_name << ": your gaming references suck" << std::endl; +} + +SuperTrap::SuperTrap(SuperTrap const& other) +{ + *this = other; +} + +void SuperTrap::operator=(SuperTrap const& other) +{ + m_hitPoints = other.m_hitPoints; + m_maxHitPoints = other.m_maxHitPoints; + m_energyPoints = other.m_energyPoints; + m_maxEnergyPoints = other.m_maxEnergyPoints; + m_level = other.m_level; + m_meleeAttackDamage = other.m_meleeAttackDamage; + m_rangedAttackDamage = other.m_rangedAttackDamage; + m_armorDamageReduction = other.m_armorDamageReduction; +} + +SuperTrap::~SuperTrap() +{ + std::cout << "SUP3R-TP" << "Delete "<< m_name << ": your gaming references still suck" << std::endl; +} + +void SuperTrap::rangedAttack(std::string const& target) const +{ + FragTrap::rangedArray(target); +} + +void SuperTrap::meleeAttack(std::string const& target) const +{ + NinjaTrap::rangedArray(target); +} diff --git a/cpp03/ex04/SuperTrap.hpp b/cpp03/ex04/SuperTrap.hpp index e69de29..ebebd18 100644 --- a/cpp03/ex04/SuperTrap.hpp +++ b/cpp03/ex04/SuperTrap.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* SuperTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/13 17:48:31 by charles #+# #+# */ +/* Updated: 2020/04/13 18:42:28 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SUPERTRAP_HPP +# define SUPERTRAP_HPP + +# include <string> +# include <iostream> +# include "FragTrap.hpp" +# include "NinjaTrap.hpp" + +class SuperTrap : public FragTrap, public NinjaTrap +{ +public: + SuperTrap(); + SuperTrap(std::string name); + SuperTrap(SuperTrap const& other); + void operator=(SuperTrap const& other); + ~SuperTrap(); + + void rangedAttack(std::string const& target) const; + void meleeAttack(std::string const& target) const; + +}; + +#endif diff --git a/cpp03/ex04/main.cpp b/cpp03/ex04/main.cpp new file mode 100644 index 0000000..6f709f8 --- /dev/null +++ b/cpp03/ex04/main.cpp @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 05:41:27 by cacharle #+# #+# */ +/* Updated: 2020/04/13 17:46:24 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <cstdlib> +#include "FragTrap.hpp" +#include "ScavTrap.hpp" +#include "NinjaTrap.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); + return 0; +} diff --git a/subjects/cpp04.en.pdf b/subjects/cpp04.en.pdf Binary files differnew file mode 100644 index 0000000..4d789a3 --- /dev/null +++ b/subjects/cpp04.en.pdf diff --git a/subjects/cpp05.en.pdf b/subjects/cpp05.en.pdf Binary files differnew file mode 100644 index 0000000..58b6e95 --- /dev/null +++ b/subjects/cpp05.en.pdf diff --git a/subjects/cpp06.en.pdf b/subjects/cpp06.en.pdf Binary files differnew file mode 100644 index 0000000..ac8bcfe --- /dev/null +++ b/subjects/cpp06.en.pdf diff --git a/subjects/cpp07.en.pdf b/subjects/cpp07.en.pdf Binary files differnew file mode 100644 index 0000000..0dae212 --- /dev/null +++ b/subjects/cpp07.en.pdf diff --git a/subjects/cpp08.en.pdf b/subjects/cpp08.en.pdf Binary files differnew file mode 100644 index 0000000..8d6070e --- /dev/null +++ b/subjects/cpp08.en.pdf |
