aboutsummaryrefslogtreecommitdiff
path: root/cpp03/ex00
diff options
context:
space:
mode:
Diffstat (limited to 'cpp03/ex00')
-rw-r--r--cpp03/ex00/FragTrap.cpp124
-rw-r--r--cpp03/ex00/FragTrap.hpp44
-rw-r--r--cpp03/ex00/main.cpp17
3 files changed, 121 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;
}