| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /* ************************************************************************** */
- /* */
- /* ::: :::::::: */
- /* ClapTrap.cpp :+: :+: :+: */
- /* +:+ +:+ +:+ */
- /* By: bchanot <bchanot@42.fr> +#+ +:+ +#+ */
- /* +#+#+#+#+#+ +#+ */
- /* Created: 2025/12/18 13:30:29 by bchanot #+# #+# */
- /* Updated: 2025/12/18 14:26:20 by bchanot ### ########.fr */
- /* */
- /* ************************************************************************** */
- #include "ClapTrap.hpp"
- #include <limits>
- /*
- ** ------------------------------- CONSTRUCTOR --------------------------------
- */
- ClapTrap::ClapTrap() : _name("Default"), _hitPoints(10), _energyPoints(10), _attackDamage(0)
- {
- std::cout << "ClapTrap " << this->_name << " has been created" << std::endl;
- }
- ClapTrap::ClapTrap(std::string const & name) : _name(name), _hitPoints(10), _energyPoints(10), _attackDamage(0)
- {
- std::cout << "ClapTrap " << this->_name << " has been created" << std::endl;
- }
- ClapTrap::ClapTrap( const ClapTrap & src ) : _name(src._name), _hitPoints(src._hitPoints), _energyPoints(src._energyPoints), _attackDamage(src._attackDamage)
- {
- std::cout << "Copy of ClapTrap " << this->_name << " has been created" << std::endl;
- }
- /*
- ** -------------------------------- DESTRUCTOR --------------------------------
- */
- ClapTrap::~ClapTrap()
- {
- std::cout << "ClapTrap " << this->_name << " has been destroyed !" << std::endl;
- }
- /*
- ** --------------------------------- OVERLOAD ---------------------------------
- */
- ClapTrap & ClapTrap::operator=( ClapTrap const & rhs )
- {
- (void)rhs;
- //if ( this != &rhs )
- //{
- //this->_value = rhs.getValue();
- //}
- return *this;
- }
- std::ostream & operator<<( std::ostream & o, ClapTrap const & i )
- {
- (void)i;
- //o << "Value = " << i.getValue();
- return o;
- }
- /*
- ** --------------------------------- METHODS ----------------------------------
- */
- void ClapTrap::attack(const std::string& target) {
- if (this->_hitPoints > 0) {
- if (this->_energyPoints > 0) {
- this->_energyPoints--;
- std::cout << "ClapTrap " << this->_name << " attacks " << target << ", causing " << this->_attackDamage << " points of damage !" << std::endl;
- } else
- std::cout << "ClapTrap " << this->_name << " Doesn't have enough energy to attack !" << std::endl;
- } else
- std::cout << "ClapTrap " << this->_name << " is dead.. How could he attack ?" << std::endl;
- }
- void ClapTrap::takeDamage(unsigned int amount) {
- if (this->_hitPoints > 0) {
- if (this->_hitPoints < amount) {
- this->_hitPoints = 0;
- std::cout << this->_name << " is taking " << amount << " damage.. Causing his death ! he is now 0 HP..." << std::endl;
- } else {
- this->_hitPoints -= amount;
- std::cout << this->_name << " is taking " << amount << " damage. He got now " << this->_hitPoints << " HP" << std::endl;
- }
- } else
- std::cout << this->_name << " is 0 HP, already dead. Cannot attack a dead ClapTrap. Do we .. ?" << std::endl;
- }
- void ClapTrap::beRepaired(unsigned int amount) {
- if (this->_hitPoints > 0) {
- if (this->_energyPoints > 0) {
- if (this->_hitPoints + amount > std::numeric_limits<short unsigned int>::max())
- this->_hitPoints = std::numeric_limits<short unsigned int>::max();
- else
- this->_hitPoints += amount;
- this->_energyPoints--;
- std::cout << this->_name << " is getting repaired about " << amount << " HP. Getting now " << this->_hitPoints << " HP." << std::endl;
- } else
- std::cout << "ClapTrap " << this->_name << " Doesn't have enought energy..." << std::endl;
- } else
- std::cout << this->_name << " is 0 HP, it mean DEAD. so, he cannot do anything more..." << std::endl;
- }
- /*
- ** --------------------------------- ACCESSOR ---------------------------------
- */
- /* ************************************************************************** */
|