Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include<cstdlib>
- using namespace std;
- class Personagem {
- protected:
- string nome;
- int vida;
- int atk;
- int def;
- int level;
- string Classe;
- public:
- Personagem(string n, int v, int a, int d) {
- nome = n;
- vida = v;
- atk = a;
- def = d;
- level = 1;
- }
- string getNome() {
- return nome;
- }
- int getVida() {
- return vida;
- }
- int getAtk() {
- return atk;
- }
- int getDef() {
- return def;
- }
- int getLevel() {
- return level;
- }
- void setNome(string novoNome) {
- nome = novoNome;
- }
- void setVida(int novoVida) {
- vida = novoVida;
- }
- void setAtk(int novoAtk) {
- atk = novoAtk;
- }
- void setDef(int novoDef) {
- def = novoDef;
- }
- void setLevel(int novoLevel) {
- level = novoLevel;
- }
- bool estaVivo() {
- return (vida > 0);
- }
- void descricao() {
- cout << "***" << endl;
- cout << "Nome: " << nome << endl;
- cout << "Level: " << level << endl;
- cout << "Vida: " << vida << endl;
- cout << "Atk: " << atk << endl;
- cout << "Def: " << def << endl;
- cout << "***" << endl;
- }
- virtual void atacar(Personagem* alvo) = 0;
- virtual void receberAtaque(int dano) = 0;
- };
- class Heroi : public Personagem {
- protected:
- //Equipamentos
- public:
- Heroi(string n, int v, int a, int d) : Personagem(n, v, a, d) {
- }
- void atacar(Personagem* alvo) {
- int dano = atk;
- alvo->receberAtaque(dano);
- }
- void receberAtaque(int dano) {
- int danoFinal = dano - def;
- vida = vida - danoFinal;
- }
- };
- class Inimigo : public Personagem {
- protected:
- //Experiencia fornecida ao ser derrotado
- //Itens derrubados ao ser derrotado
- public:
- Inimigo(string n, int v, int a, int d) : Personagem(n, v, a, d) {
- }
- void atacar(Personagem* alvo) {
- alvo->receberAtaque(getAtk());
- }
- void receberAtaque(int dano) {
- setVida(getVida() - dano);
- }
- };
- //CLASSE DOS PERSONAGENS
- class Cavaleiro : public Personagem {
- public:
- Cavaleiro(string n, int v, int a, int d) : Personagem(n, v, a, d) {
- }
- void atacar(Personagem* alvo) {
- int dano = atk;
- alvo->receberAtaque(dano);
- }
- virtual void receberAtaque(int dano) {
- int danoFinal = dano * 0.8;
- setVida(getVida() - danoFinal);
- }
- };
- class Arqueiro : public Personagem {
- public:
- int cont;
- Arqueiro(string n, int v, int a, int d, int i) : Personagem(n, v, a, d) {
- cont = 0;
- }
- int getCont(){
- return cont;
- }
- void setCont (int novoCont){
- cont = novoCont;
- }
- void atacar(Personagem* alvo) {
- setCont(getCont() + 1);
- int dano = atk;
- if (getCont() % 2 == 0){
- dano += atk * 0,5;
- }
- alvo->receberAtaque(dano);
- }
- };
- class Barbaro : public Personagem {
- public:
- int porcentagem;
- Barbaro(string n, int v, int a, int d, int p) : Personagem(n, v, a, d) {
- porcentagem = p;
- }
- int getPorcentagem(){
- return porcentagem;
- }
- void setPorcentagem(int novoPorcentagem){
- porcentagem = novoPorcentagem;
- }
- void atacar(Personagem* alvo) {
- srand(time(NULL)*1000);
- int p = (rand() % 5) + 8;
- int dano = atk*p/10;
- alvo->receberAtaque(dano);
- }
- };
- class Assassino : public Personagem {
- public:
- int atkCritico;
- Assassino(string n, int v, int a, int d, int atkC) : Personagem(n, v, a, d) {
- atkCritico = atkC;
- }
- int getAtkCritico(){
- return atkCritico;
- }
- void setAtkCritico(int atkC){
- atkCritico = atkC;
- }
- virtual void atacar(Personagem* alvo) {
- srand(time(0)*1000);
- int danoFinal = (rand() % 100 + 1) <= getAtkCritico() ? getAtk()*2 : getAtk();
- alvo->receberAtaque(danoFinal);
- }
- };
- class Boss : public Inimigo{
- public:
- Boss(string n, int v, int a, int d): Inimigo(n, v, a, d) {
- }
- void atacar(Personagem* alvo) {
- int dano;
- if (vida <= 30) {
- dano = atk*2.2;
- } else {
- dano = atk*2;
- }
- alvo->receberAtaque(dano);
- }
- void receberAtaque(int dano) {
- int danoFinal = dano*0.2 - def;
- vida = vida - danoFinal;
- }
- };
- void Escolha(){
- string nome;
- int atk;
- int def;
- string classe;
- int escolha;
- cout << "Escolha o nome do seu personagem";
- cin >> nome;
- cout << "Distribua os pontos de defesa e ataque do seu personagem.";
- cout << "Ataque: ";
- cin >> atk;
- cout << "Defesa: ";
- cin >> def;
- cout << "Vamos escolher a classe do seu heroi" << endl;
- cout << "1. Cavaleiro " << endl;
- cout << "2. Assassino " << endl;
- cout << "3. Arqueiro " << endl;
- cout << "4. Barbaro " << endl;
- cout << " " << endl;
- cin >> escolha;
- if(escolha == 1){
- Cavaleiro* heroi = new Cavaleiro(nome, 100, atk, def);
- Personagem->setClasse("Cavaleiro");
- }
- if(escolha == 2){
- Assassino* heroi = new Assassino(nome, 100, atk, def);
- Personagem->setClasse("Assassino");
- }
- if(escolha == 3){
- Arqueiro* heroi = new Arqueiro(nome, 100, atk, def);
- Personagem->setClasse("Arqueiro");
- }
- if(escolha == 4){
- Barbaro* heroi = new Barbaro(nome, 100, atk, def);
- Personagem->setClasse("Barbaro");
- }
- }
- int main(){
- Escolha();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment