From 119f7f96e77a2d86d692e82645dde4c2dc054052 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 13 Apr 2020 18:44:40 +0200 Subject: cpp03, except ex04 --- cpp03/ex00/FragTrap.cpp | 124 +++++++++++++++++++++++++++++++----------------- cpp03/ex00/FragTrap.hpp | 44 +++++++++-------- cpp03/ex00/main.cpp | 17 ++++++- 3 files changed, 121 insertions(+), 64 deletions(-) (limited to 'cpp03/ex00') 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 +# include # include 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 #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; } -- cgit