Compare commits
No commits in common. "bc374353a231363f8047d4ca413a632a2772d729" and "037daaf8e9cf62698d795ef2202d8fb377a28b2d" have entirely different histories.
bc374353a2
...
037daaf8e9
34
ex00/src/Animal.cpp
Normal file
34
ex00/src/Animal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "Animal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
Animal::Animal()
|
||||||
|
{
|
||||||
|
std::cout << "Animal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal::Animal(const Animal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal& Animal::operator=(const Animal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal::~Animal()
|
||||||
|
{
|
||||||
|
std::cout << "~Animal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Animal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Animal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex00/src/Animal.hpp
Normal file
19
ex00/src/Animal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Animal();
|
||||||
|
Animal(const Animal& src);
|
||||||
|
Animal &operator=(const Animal& src);
|
||||||
|
virtual ~Animal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
virtual void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
30
ex00/src/Cat.cpp
Normal file
30
ex00/src/Cat.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include "Cat.hpp"
|
||||||
|
#include "Animal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Cat::Cat()
|
||||||
|
{
|
||||||
|
this->type = "Cat";
|
||||||
|
std::cout << "Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat& Cat::operator=(const Cat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::~Cat()
|
||||||
|
{
|
||||||
|
std::cout << "~Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::Cat(const Cat& src): Animal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cat::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Meow Meow !" << std::endl;
|
||||||
|
}
|
16
ex00/src/Cat.hpp
Normal file
16
ex00/src/Cat.hpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./Animal.hpp"
|
||||||
|
|
||||||
|
class Cat : public Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Cat(const Cat& src);
|
||||||
|
Cat &operator=(const Cat& src);
|
||||||
|
Cat();
|
||||||
|
~Cat();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
};
|
@ -1,76 +0,0 @@
|
|||||||
#include "ClapTrap.hpp"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap():
|
|
||||||
_name(""),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const std::string& name):
|
|
||||||
_name(name),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(ClapTrap)" << std::endl;
|
|
||||||
*this = src;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::~ClapTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap& ClapTrap::operator=(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ClapTrap::beRepaired(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life += amount;
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " beRepaired causing life is now " << this->_life << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::takeDamage(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life -= amount;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " be attacked causing " << amount << " points of damage!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::attack(const std::string &target)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " attacks " << target << ", causing " << this->_damage << " points of damage!" << std::endl;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class ClapTrap
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
std::string _name;
|
|
||||||
int _life;
|
|
||||||
int _energy;
|
|
||||||
int _damage;
|
|
||||||
|
|
||||||
public:
|
|
||||||
ClapTrap();
|
|
||||||
ClapTrap(const ClapTrap& src);
|
|
||||||
ClapTrap(const std::string& name);
|
|
||||||
~ClapTrap();
|
|
||||||
|
|
||||||
ClapTrap &operator=(const ClapTrap& src);
|
|
||||||
|
|
||||||
void attack(const std::string& target);
|
|
||||||
void takeDamage(unsigned int amount);
|
|
||||||
void beRepaired(unsigned int amount);
|
|
||||||
};
|
|
30
ex00/src/Dog.cpp
Normal file
30
ex00/src/Dog.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include "Dog.hpp"
|
||||||
|
#include "Animal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Dog::Dog()
|
||||||
|
{
|
||||||
|
this->type = "Dog";
|
||||||
|
std::cout << "Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog& Dog::operator=(const Dog& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::~Dog()
|
||||||
|
{
|
||||||
|
std::cout << "~Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::Dog(const Dog& src): Animal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dog::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Ouaf ouaf !" << std::endl;
|
||||||
|
}
|
16
ex00/src/Dog.hpp
Normal file
16
ex00/src/Dog.hpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./Animal.hpp"
|
||||||
|
|
||||||
|
class Dog : public Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Dog(const Dog& src);
|
||||||
|
Dog &operator=(const Dog& src);
|
||||||
|
Dog();
|
||||||
|
~Dog();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
};
|
34
ex00/src/WrongAnimal.cpp
Normal file
34
ex00/src/WrongAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "WrongAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal(const WrongAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal& WrongAnimal::operator=(const WrongAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::~WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WrongAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WrongAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex00/src/WrongAnimal.hpp
Normal file
19
ex00/src/WrongAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongAnimal();
|
||||||
|
WrongAnimal(const WrongAnimal& src);
|
||||||
|
WrongAnimal &operator=(const WrongAnimal& src);
|
||||||
|
virtual ~WrongAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex00/src/WrongCat.cpp
Normal file
24
ex00/src/WrongCat.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "WrongCat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
WrongCat::WrongCat()
|
||||||
|
{
|
||||||
|
this->type = "WrongCat";
|
||||||
|
std::cout << "WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat& WrongCat::operator=(const WrongCat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::~WrongCat()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::WrongCat(const WrongCat& src): WrongAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex00/src/WrongCat.hpp
Normal file
14
ex00/src/WrongCat.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./WrongAnimal.hpp"
|
||||||
|
|
||||||
|
class WrongCat : public WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongCat(const WrongCat& src);
|
||||||
|
WrongCat &operator=(const WrongCat& src);
|
||||||
|
WrongCat();
|
||||||
|
~WrongCat();
|
||||||
|
};
|
@ -1,20 +1,24 @@
|
|||||||
#include "ClapTrap.hpp"
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "Cat.hpp"
|
||||||
|
#include "Dog.hpp"
|
||||||
|
#include "WrongCat.hpp"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
ClapTrap claptrap1("Claptrap1");
|
const Animal* meta = new Animal();
|
||||||
ClapTrap claptrap2("Claptrap2");
|
const Animal* j = new Dog();
|
||||||
|
const Animal* i = new Cat();
|
||||||
claptrap1.attack("Bandit");
|
std::cout << j->getType() << " " << std::endl;
|
||||||
claptrap2.takeDamage(20);
|
std::cout << i->getType() << " " << std::endl;
|
||||||
claptrap1.beRepaired(10);
|
i->makeSound(); //will output the cat sound!
|
||||||
claptrap1.attack("bozoman");
|
j->makeSound();
|
||||||
claptrap2.takeDamage(20);
|
meta->makeSound();
|
||||||
claptrap1.beRepaired(1000);
|
delete meta;
|
||||||
|
delete j;
|
||||||
ClapTrap tmp(claptrap1);
|
delete i;
|
||||||
tmp.attack("bozo");
|
const WrongCat* kitten = new WrongCat();
|
||||||
tmp = claptrap2;
|
kitten->makeSound();
|
||||||
tmp.attack("bozo");
|
delete kitten;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
34
ex01/src/Animal.cpp
Normal file
34
ex01/src/Animal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "Animal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
Animal::Animal()
|
||||||
|
{
|
||||||
|
std::cout << "Animal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal::Animal(const Animal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal& Animal::operator=(const Animal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Animal::~Animal()
|
||||||
|
{
|
||||||
|
std::cout << "~Animal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Animal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Animal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex01/src/Animal.hpp
Normal file
19
ex01/src/Animal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Animal();
|
||||||
|
Animal(const Animal& src);
|
||||||
|
Animal &operator=(const Animal& src);
|
||||||
|
virtual ~Animal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
virtual void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex01/src/Brain.cpp
Normal file
24
ex01/src/Brain.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "Brain.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Brain& Brain::operator=(const Brain &src)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < 100; i++)
|
||||||
|
this->ideas[i] = src.ideas[i];
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::~Brain()
|
||||||
|
{
|
||||||
|
std::cout << "~Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain()
|
||||||
|
{
|
||||||
|
std::cout << "Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain(const Brain& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex01/src/Brain.hpp
Normal file
14
ex01/src/Brain.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Brain
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Brain();
|
||||||
|
Brain(const Brain& src);
|
||||||
|
~Brain();
|
||||||
|
Brain& operator=(const Brain& src);
|
||||||
|
private:
|
||||||
|
std::string ideas[100];
|
||||||
|
};
|
31
ex01/src/Cat.cpp
Normal file
31
ex01/src/Cat.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "Cat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Cat::Cat()
|
||||||
|
{
|
||||||
|
this->brain = new Brain();
|
||||||
|
this->type = "Cat";
|
||||||
|
std::cout << "Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat& Cat::operator=(const Cat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::~Cat()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::Cat(const Cat& src): Animal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cat::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Meow Meow !" << std::endl;
|
||||||
|
}
|
20
ex01/src/Cat.hpp
Normal file
20
ex01/src/Cat.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./Animal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Cat : public Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Cat(const Cat& src);
|
||||||
|
Cat &operator=(const Cat& src);
|
||||||
|
Cat();
|
||||||
|
~Cat();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
@ -1,96 +0,0 @@
|
|||||||
#include "ClapTrap.hpp"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap():
|
|
||||||
_name(""),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const std::string& name):
|
|
||||||
_name(name),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(ClapTrap)" << std::endl;
|
|
||||||
*this = src;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::~ClapTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap& ClapTrap::operator=(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ClapTrap::beRepaired(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life += amount;
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " beRepaired causing life is now " << this->_life << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::takeDamage(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life -= amount;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " be attacked causing " << amount << " points of damage!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::attack(const std::string &target)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " attacks " << target << ", causing " << this->_damage << " points of damage!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string& ClapTrap::getName() const
|
|
||||||
{
|
|
||||||
return this->_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getLife() const
|
|
||||||
{
|
|
||||||
return this->_life;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getEnergy() const
|
|
||||||
{
|
|
||||||
return this->_energy;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getDamage() const
|
|
||||||
{
|
|
||||||
return this->_damage;
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class ClapTrap
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
std::string _name;
|
|
||||||
int _life;
|
|
||||||
int _energy;
|
|
||||||
int _damage;
|
|
||||||
|
|
||||||
public:
|
|
||||||
ClapTrap();
|
|
||||||
ClapTrap(const ClapTrap& src);
|
|
||||||
ClapTrap(const std::string& name);
|
|
||||||
virtual ~ClapTrap();
|
|
||||||
|
|
||||||
ClapTrap &operator=(const ClapTrap& src);
|
|
||||||
|
|
||||||
virtual void attack(const std::string& target);
|
|
||||||
void takeDamage(unsigned int amount);
|
|
||||||
void beRepaired(unsigned int amount);
|
|
||||||
|
|
||||||
const std::string& getName() const;
|
|
||||||
int getLife() const;
|
|
||||||
int getEnergy() const;
|
|
||||||
int getDamage() const;
|
|
||||||
};
|
|
32
ex01/src/Dog.cpp
Normal file
32
ex01/src/Dog.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "Dog.hpp"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Dog::Dog()
|
||||||
|
{
|
||||||
|
this->type = "Dog";
|
||||||
|
this->brain = new Brain();
|
||||||
|
std::cout << "Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog& Dog::operator=(const Dog& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::~Dog()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::Dog(const Dog& src): Animal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dog::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Ouaf ouaf !" << std::endl;
|
||||||
|
}
|
20
ex01/src/Dog.hpp
Normal file
20
ex01/src/Dog.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./Animal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Dog : public Animal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Dog(const Dog& src);
|
||||||
|
Dog &operator=(const Dog& src);
|
||||||
|
Dog();
|
||||||
|
~Dog();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
@ -1,60 +0,0 @@
|
|||||||
#include "ScavTrap.hpp"
|
|
||||||
#include "ClapTrap.hpp"
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap()
|
|
||||||
{
|
|
||||||
this->_name = "";
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 50;
|
|
||||||
this->_damage = 20;
|
|
||||||
std::cout << "ScavTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap(const std::string& name)
|
|
||||||
{
|
|
||||||
this->_name = name;
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 50;
|
|
||||||
this->_damage = 20;
|
|
||||||
std::cout << "ScavTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap(const ScavTrap& src): ClapTrap(src)
|
|
||||||
{
|
|
||||||
*this = src;
|
|
||||||
std::cout << "ScavTrap(ScavTrap)" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::~ScavTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~ScavTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap& ScavTrap::operator=(const ScavTrap &src)
|
|
||||||
{
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScavTrap::guardGate()
|
|
||||||
{
|
|
||||||
std::cout << "ScavTrap " << this->_name << " turn in Gate keeper mode" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScavTrap::attack(const std::string& target)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ScavTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ScavTrap " << this->_name << " attacks " << target << ", causing " << this->_damage << " points of damage!" << std::endl;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "ClapTrap.hpp"
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class ScavTrap: public ClapTrap
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ScavTrap();
|
|
||||||
ScavTrap(const std::string& name);
|
|
||||||
ScavTrap(const ScavTrap& src);
|
|
||||||
|
|
||||||
~ScavTrap();
|
|
||||||
|
|
||||||
ScavTrap& operator=(const ScavTrap& src);
|
|
||||||
|
|
||||||
void guardGate();
|
|
||||||
void attack(const std::string& target);
|
|
||||||
|
|
||||||
};
|
|
34
ex01/src/WrongAnimal.cpp
Normal file
34
ex01/src/WrongAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "WrongAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal(const WrongAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal& WrongAnimal::operator=(const WrongAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::~WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WrongAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WrongAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex01/src/WrongAnimal.hpp
Normal file
19
ex01/src/WrongAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongAnimal();
|
||||||
|
WrongAnimal(const WrongAnimal& src);
|
||||||
|
WrongAnimal &operator=(const WrongAnimal& src);
|
||||||
|
virtual ~WrongAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex01/src/WrongCat.cpp
Normal file
24
ex01/src/WrongCat.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "WrongCat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
WrongCat::WrongCat()
|
||||||
|
{
|
||||||
|
this->type = "WrongCat";
|
||||||
|
std::cout << "WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat& WrongCat::operator=(const WrongCat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::~WrongCat()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::WrongCat(const WrongCat& src): WrongAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex01/src/WrongCat.hpp
Normal file
14
ex01/src/WrongCat.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./WrongAnimal.hpp"
|
||||||
|
|
||||||
|
class WrongCat : public WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongCat(const WrongCat& src);
|
||||||
|
WrongCat &operator=(const WrongCat& src);
|
||||||
|
WrongCat();
|
||||||
|
~WrongCat();
|
||||||
|
};
|
@ -1,22 +1,16 @@
|
|||||||
#include "ScavTrap.hpp"
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "Cat.hpp"
|
||||||
|
#include "Dog.hpp"
|
||||||
|
#include "WrongCat.hpp"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
ClapTrap dead;
|
const Animal* meta = new Animal();
|
||||||
ScavTrap active ("Warrior");
|
delete meta;
|
||||||
ScavTrap copy (active);
|
const Animal* j = new Dog();
|
||||||
active = copy;
|
delete j;
|
||||||
dead.attack(active.getName());
|
const Animal* i = new Cat();
|
||||||
active.attack(dead.getName());
|
delete i;
|
||||||
dead.takeDamage(active.getDamage());
|
return 0;
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
active.takeDamage(3);
|
|
||||||
dead.beRepaired(42);
|
|
||||||
active.guardGate();
|
|
||||||
}
|
}
|
||||||
|
34
ex02/src/AAnimal.cpp
Normal file
34
ex02/src/AAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "AAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
AAnimal::AAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "AAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal::AAnimal(const AAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal& AAnimal::operator=(const AAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
AAnimal::~AAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~AAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGAABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string AAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex02/src/AAnimal.hpp
Normal file
19
ex02/src/AAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AAnimal();
|
||||||
|
AAnimal(const AAnimal& src);
|
||||||
|
AAnimal &operator=(const AAnimal& src);
|
||||||
|
virtual ~AAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
virtual void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex02/src/Brain.cpp
Normal file
24
ex02/src/Brain.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "Brain.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Brain& Brain::operator=(const Brain &src)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < 100; i++)
|
||||||
|
this->ideas[i] = src.ideas[i];
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::~Brain()
|
||||||
|
{
|
||||||
|
std::cout << "~Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain()
|
||||||
|
{
|
||||||
|
std::cout << "Brain()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Brain::Brain(const Brain& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex02/src/Brain.hpp
Normal file
14
ex02/src/Brain.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Brain
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Brain();
|
||||||
|
Brain(const Brain& src);
|
||||||
|
~Brain();
|
||||||
|
Brain& operator=(const Brain& src);
|
||||||
|
private:
|
||||||
|
std::string ideas[100];
|
||||||
|
};
|
31
ex02/src/Cat.cpp
Normal file
31
ex02/src/Cat.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "Cat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Cat::Cat()
|
||||||
|
{
|
||||||
|
this->brain = new Brain();
|
||||||
|
this->type = "Cat";
|
||||||
|
std::cout << "Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat& Cat::operator=(const Cat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::~Cat()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Cat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cat::Cat(const Cat& src): AAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cat::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Meow Meow !" << std::endl;
|
||||||
|
}
|
20
ex02/src/Cat.hpp
Normal file
20
ex02/src/Cat.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./AAnimal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Cat : public AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Cat(const Cat& src);
|
||||||
|
Cat &operator=(const Cat& src);
|
||||||
|
Cat();
|
||||||
|
~Cat();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
@ -1,96 +0,0 @@
|
|||||||
#include "ClapTrap.hpp"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap():
|
|
||||||
_name(""),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const std::string& name):
|
|
||||||
_name(name),
|
|
||||||
_life(10),
|
|
||||||
_energy(10),
|
|
||||||
_damage(0)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::ClapTrap(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
std::cout << "ClapTrap(ClapTrap)" << std::endl;
|
|
||||||
*this = src;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap::~ClapTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~ClapTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ClapTrap& ClapTrap::operator=(const ClapTrap& src)
|
|
||||||
{
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ClapTrap::beRepaired(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life += amount;
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " beRepaired causing life is now " << this->_life << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::takeDamage(unsigned int amount)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_life -= amount;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " be attacked causing " << amount << " points of damage!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClapTrap::attack(const std::string &target)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ClapTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ClapTrap " << this->_name << " attacks " << target << ", causing " << this->_damage << " points of damage!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string& ClapTrap::getName() const
|
|
||||||
{
|
|
||||||
return this->_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getLife() const
|
|
||||||
{
|
|
||||||
return this->_life;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getEnergy() const
|
|
||||||
{
|
|
||||||
return this->_energy;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ClapTrap::getDamage() const
|
|
||||||
{
|
|
||||||
return this->_damage;
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class ClapTrap
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
std::string _name;
|
|
||||||
int _life;
|
|
||||||
int _energy;
|
|
||||||
int _damage;
|
|
||||||
|
|
||||||
public:
|
|
||||||
ClapTrap();
|
|
||||||
ClapTrap(const ClapTrap& src);
|
|
||||||
ClapTrap(const std::string& name);
|
|
||||||
virtual ~ClapTrap();
|
|
||||||
|
|
||||||
ClapTrap &operator=(const ClapTrap& src);
|
|
||||||
|
|
||||||
virtual void attack(const std::string& target);
|
|
||||||
void takeDamage(unsigned int amount);
|
|
||||||
void beRepaired(unsigned int amount);
|
|
||||||
|
|
||||||
const std::string& getName() const;
|
|
||||||
int getLife() const;
|
|
||||||
int getEnergy() const;
|
|
||||||
int getDamage() const;
|
|
||||||
};
|
|
32
ex02/src/Dog.cpp
Normal file
32
ex02/src/Dog.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "Dog.hpp"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
Dog::Dog()
|
||||||
|
{
|
||||||
|
this->type = "Dog";
|
||||||
|
this->brain = new Brain();
|
||||||
|
std::cout << "Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog& Dog::operator=(const Dog& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::~Dog()
|
||||||
|
{
|
||||||
|
delete this->brain;
|
||||||
|
std::cout << "~Dog()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dog::Dog(const Dog& src): AAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dog::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "Ouaf ouaf !" << std::endl;
|
||||||
|
}
|
20
ex02/src/Dog.hpp
Normal file
20
ex02/src/Dog.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./AAnimal.hpp"
|
||||||
|
#include "./Brain.hpp"
|
||||||
|
|
||||||
|
class Dog : public AAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Dog(const Dog& src);
|
||||||
|
Dog &operator=(const Dog& src);
|
||||||
|
Dog();
|
||||||
|
~Dog();
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Brain* brain;
|
||||||
|
};
|
@ -1,46 +0,0 @@
|
|||||||
#include "FragTrap.hpp"
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
FragTrap::FragTrap()
|
|
||||||
{
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 100;
|
|
||||||
this->_damage = 30;
|
|
||||||
this->_name = "";
|
|
||||||
std::cout << "FragTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
FragTrap::FragTrap(const FragTrap& src): ClapTrap(src)
|
|
||||||
{
|
|
||||||
std::cout << "FragTrap(FragTrap)" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
FragTrap::FragTrap(const std::string& name)
|
|
||||||
{
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 100;
|
|
||||||
this->_damage = 30;
|
|
||||||
this->_name = name;
|
|
||||||
std::cout << "FragTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
FragTrap& FragTrap::operator=(const FragTrap &src)
|
|
||||||
{
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
FragTrap::~FragTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~FragTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FragTrap::highFivesGuys(void)
|
|
||||||
{
|
|
||||||
std::cout << "high fives ?" << std::endl;
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "ClapTrap.hpp"
|
|
||||||
|
|
||||||
class FragTrap: public ClapTrap
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
FragTrap();
|
|
||||||
FragTrap(const std::string& name);
|
|
||||||
FragTrap(const FragTrap& src);
|
|
||||||
~FragTrap();
|
|
||||||
|
|
||||||
FragTrap& operator=(const FragTrap& src);
|
|
||||||
|
|
||||||
void highFivesGuys(void);
|
|
||||||
};
|
|
@ -1,60 +0,0 @@
|
|||||||
#include "ScavTrap.hpp"
|
|
||||||
#include "ClapTrap.hpp"
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap()
|
|
||||||
{
|
|
||||||
this->_name = "";
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 50;
|
|
||||||
this->_damage = 20;
|
|
||||||
std::cout << "ScavTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap(const std::string& name)
|
|
||||||
{
|
|
||||||
this->_name = name;
|
|
||||||
this->_life = 100;
|
|
||||||
this->_energy = 50;
|
|
||||||
this->_damage = 20;
|
|
||||||
std::cout << "ScavTrap(" << name << ")" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::ScavTrap(const ScavTrap& src): ClapTrap(src)
|
|
||||||
{
|
|
||||||
*this = src;
|
|
||||||
std::cout << "ScavTrap(ScavTrap)" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap::~ScavTrap()
|
|
||||||
{
|
|
||||||
std::cout << "~ScavTrap()" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
ScavTrap& ScavTrap::operator=(const ScavTrap &src)
|
|
||||||
{
|
|
||||||
this->_life = src._life;
|
|
||||||
this->_name = src._name;
|
|
||||||
this->_energy = src._energy;
|
|
||||||
this->_damage = src._damage;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScavTrap::guardGate()
|
|
||||||
{
|
|
||||||
std::cout << "ScavTrap " << this->_name << " turn in Gate keeper mode" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScavTrap::attack(const std::string& target)
|
|
||||||
{
|
|
||||||
if (this->_life == 0 || this->_energy == 0)
|
|
||||||
{
|
|
||||||
std::cout << "error: ScavTrap " << this->_name << " dead" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->_energy--;
|
|
||||||
std::cout << "ScavTrap " << this->_name << " attacks " << target << ", causing " << this->_damage << " points of damage!" << std::endl;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "ClapTrap.hpp"
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
class ScavTrap: public ClapTrap
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ScavTrap();
|
|
||||||
ScavTrap(const std::string& name);
|
|
||||||
ScavTrap(const ScavTrap& src);
|
|
||||||
|
|
||||||
~ScavTrap();
|
|
||||||
|
|
||||||
ScavTrap& operator=(const ScavTrap& src);
|
|
||||||
|
|
||||||
void guardGate();
|
|
||||||
void attack(const std::string& target);
|
|
||||||
|
|
||||||
};
|
|
34
ex02/src/WrongAnimal.cpp
Normal file
34
ex02/src/WrongAnimal.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "WrongAnimal.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::WrongAnimal(const WrongAnimal& src)
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal& WrongAnimal::operator=(const WrongAnimal &src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongAnimal::~WrongAnimal()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongAnimal()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WrongAnimal::makeSound() const
|
||||||
|
{
|
||||||
|
std::cout << "OuGABounga" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string WrongAnimal::getType() const
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
19
ex02/src/WrongAnimal.hpp
Normal file
19
ex02/src/WrongAnimal.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongAnimal();
|
||||||
|
WrongAnimal(const WrongAnimal& src);
|
||||||
|
WrongAnimal &operator=(const WrongAnimal& src);
|
||||||
|
virtual ~WrongAnimal();
|
||||||
|
|
||||||
|
std::string getType() const;
|
||||||
|
|
||||||
|
void makeSound() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::string type;
|
||||||
|
};
|
24
ex02/src/WrongCat.cpp
Normal file
24
ex02/src/WrongCat.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "WrongCat.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
WrongCat::WrongCat()
|
||||||
|
{
|
||||||
|
this->type = "WrongCat";
|
||||||
|
std::cout << "WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat& WrongCat::operator=(const WrongCat& src)
|
||||||
|
{
|
||||||
|
this->type = src.type;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::~WrongCat()
|
||||||
|
{
|
||||||
|
std::cout << "~WrongCat()" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
WrongCat::WrongCat(const WrongCat& src): WrongAnimal()
|
||||||
|
{
|
||||||
|
*this = src;
|
||||||
|
}
|
14
ex02/src/WrongCat.hpp
Normal file
14
ex02/src/WrongCat.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "./WrongAnimal.hpp"
|
||||||
|
|
||||||
|
class WrongCat : public WrongAnimal
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WrongCat(const WrongCat& src);
|
||||||
|
WrongCat &operator=(const WrongCat& src);
|
||||||
|
WrongCat();
|
||||||
|
~WrongCat();
|
||||||
|
};
|
@ -1,22 +1,16 @@
|
|||||||
#include "FragTrap.hpp"
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "AAnimal.hpp"
|
||||||
|
#include "Cat.hpp"
|
||||||
|
#include "Dog.hpp"
|
||||||
|
#include "WrongCat.hpp"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
ClapTrap dead;
|
const AAnimal* j = new Dog();
|
||||||
FragTrap active ("Warrior");
|
delete j;
|
||||||
FragTrap copy (active);
|
const AAnimal* i = new Cat();
|
||||||
active = copy;
|
delete i;
|
||||||
dead.attack(active.getName());
|
// const AAnimal* meta = new AAnimal();
|
||||||
active.attack(dead.getName());
|
return 0;
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
dead.takeDamage(active.getDamage());
|
|
||||||
active.attack(dead.getName());
|
|
||||||
active.takeDamage(3);
|
|
||||||
copy.highFivesGuys();
|
|
||||||
dead.beRepaired(42);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user