victorialais

rpg editado 5

Nov 13th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include<cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. class Personagem {
  8. protected:
  9.     string nome;
  10.     int vida;
  11.     int atk;
  12.     int def;
  13.     int level;
  14.     string Classe;
  15.    
  16. public:
  17.     Personagem(string n, int v, int a, int d) {
  18.         nome = n;
  19.         vida = v;
  20.         atk = a;
  21.         def = d;
  22.         level = 1;
  23.      
  24.     }
  25.     string getNome() {
  26.         return nome;
  27.     }
  28.     int getVida() {
  29.         return vida;
  30.     }
  31.     int getAtk() {
  32.         return atk;
  33.     }
  34.     int getDef() {
  35.         return def;
  36.     }
  37.     int getLevel() {
  38.         return level;
  39.     }
  40.     void setNome(string novoNome) {
  41.         nome = novoNome;
  42.     }
  43.     void setVida(int novoVida) {
  44.         vida = novoVida;
  45.     }    
  46.     void setAtk(int novoAtk) {
  47.         atk = novoAtk;
  48.     }    
  49.     void setDef(int novoDef) {
  50.         def = novoDef;
  51.     }    
  52.     void setLevel(int novoLevel) {
  53.         level = novoLevel;
  54.     }
  55.  
  56.     bool estaVivo() {
  57.         return (vida > 0);
  58.     }
  59.  
  60.     void descricao() {
  61.         cout << "***" << endl;
  62.         cout << "Nome: " << nome << endl;
  63.         cout << "Level: " << level << endl;
  64.         cout << "Vida: " << vida << endl;
  65.         cout << "Atk: " << atk << endl;
  66.         cout << "Def: " << def << endl;
  67.         cout << "***" << endl;
  68.     }
  69.  
  70.     virtual void atacar(Personagem* alvo) = 0;
  71.     virtual void receberAtaque(int dano) = 0;
  72. };
  73.  
  74. class Heroi : public Personagem {
  75. protected:
  76.     //Equipamentos
  77. public:
  78.     Heroi(string n, int v, int a, int d) : Personagem(n, v, a, d) {
  79.  
  80.     }
  81.  
  82.     void atacar(Personagem* alvo) {
  83.         int dano = atk;
  84.         alvo->receberAtaque(dano);
  85.     }
  86.     void receberAtaque(int dano) {
  87.         int danoFinal = dano - def;
  88.         vida = vida - danoFinal;
  89.     }
  90.  
  91. };
  92.  
  93. class Inimigo : public Personagem {
  94. protected:
  95.     //Experiencia fornecida ao ser derrotado
  96.     //Itens derrubados ao ser derrotado
  97. public:
  98.     Inimigo(string n, int v, int a, int d) : Personagem(n, v, a, d) {
  99.    
  100.     }
  101.  
  102.     void atacar(Personagem* alvo) {
  103.         alvo->receberAtaque(getAtk());
  104.     }
  105.    
  106.     void receberAtaque(int dano) {
  107.         setVida(getVida() - dano);
  108.     }
  109. };
  110.  
  111.  
  112. //CLASSE DOS PERSONAGENS
  113.  
  114. class Cavaleiro : public Personagem {
  115. public:
  116.     Cavaleiro(string n, int v, int a, int d) : Personagem(n, v, a, d) {
  117.  
  118.     }
  119.     void atacar(Personagem* alvo) {
  120.         int dano = atk;
  121.         alvo->receberAtaque(dano);
  122.     }
  123.     virtual void receberAtaque(int dano) {
  124.         int danoFinal = dano * 0.8;
  125.         setVida(getVida() - danoFinal);
  126.     }
  127. };
  128.  
  129.  
  130. class Arqueiro : public Personagem {
  131. public:
  132.     int cont;
  133.     Arqueiro(string n, int v, int a, int d, int i) : Personagem(n, v, a, d) {
  134.         cont = 0;
  135.     }
  136.    
  137.     int getCont(){
  138.         return cont;
  139.     }
  140.     void setCont (int novoCont){
  141.         cont = novoCont;
  142.     }
  143.  
  144.     void atacar(Personagem* alvo) {
  145.         setCont(getCont() + 1);
  146.         int dano = atk;
  147.         if (getCont() % 2 == 0){   
  148.             dano += atk * 0,5;
  149.         }
  150.         alvo->receberAtaque(dano);
  151.     }
  152. };
  153.  
  154.  
  155. class Barbaro : public Personagem {
  156. public:
  157.     int porcentagem;
  158.     Barbaro(string n, int v, int a, int d, int p) : Personagem(n, v, a, d) {
  159.         porcentagem = p;
  160.     }
  161.    
  162.     int getPorcentagem(){
  163.         return porcentagem;
  164.     }
  165.     void setPorcentagem(int novoPorcentagem){
  166.         porcentagem = novoPorcentagem;
  167.     }
  168.    
  169.     void atacar(Personagem* alvo) {
  170.         srand(time(NULL)*1000);
  171.         int p = (rand() % 5) + 8;      
  172.         int dano = atk*p/10;
  173.         alvo->receberAtaque(dano);
  174.     }
  175. };
  176.  
  177. class Assassino : public Personagem {
  178. public:
  179.     int atkCritico;
  180.     Assassino(string n, int v, int a, int d, int atkC) : Personagem(n, v, a, d) {
  181.         atkCritico = atkC;
  182.     }
  183.    
  184.     int getAtkCritico(){
  185.         return atkCritico;
  186.     }
  187.    
  188.     void setAtkCritico(int atkC){
  189.         atkCritico = atkC;
  190.     }
  191.    
  192.     virtual void atacar(Personagem* alvo) {
  193.         srand(time(0)*1000);
  194.        
  195.         int danoFinal = (rand() % 100 + 1) <= getAtkCritico() ? getAtk()*2 : getAtk();
  196.         alvo->receberAtaque(danoFinal);
  197.     }
  198. };
  199.  
  200. class Boss : public Inimigo{
  201. public:
  202.     Boss(string n, int v, int a, int d): Inimigo(n, v, a, d) {
  203.  
  204.     }
  205.  
  206.     void atacar(Personagem* alvo) {
  207.     int dano;
  208.     if (vida <= 30) {
  209.    
  210.         dano = atk*2.2;
  211.        
  212.     } else {
  213.    
  214.         dano = atk*2;
  215.        
  216.     }
  217.         alvo->receberAtaque(dano);
  218.     }
  219.     void receberAtaque(int dano) {
  220.         int danoFinal = dano*0.2 - def;
  221.         vida = vida - danoFinal;
  222.     }
  223. };
  224.  
  225.  
  226.  
  227.  
  228. void Escolha(){
  229.     string nome;
  230.     int atk;
  231.     int def;
  232.     string classe;
  233.     int escolha;
  234.    
  235.     cout << "Escolha o nome do seu personagem";
  236.     cin >> nome;
  237.     cout << "Distribua os pontos de defesa e ataque do seu personagem.";
  238.     cout << "Ataque: ";
  239.     cin >> atk;
  240.     cout << "Defesa: ";
  241.     cin >> def;
  242.    
  243.    
  244.     cout << "Vamos escolher a classe do seu heroi" << endl;
  245.     cout << "1. Cavaleiro " << endl;
  246.     cout << "2. Assassino " << endl;
  247.     cout << "3. Arqueiro " << endl;
  248.     cout << "4. Barbaro " << endl;
  249.     cout << " " << endl;
  250.    
  251.    
  252.     cin >> escolha;
  253.         if(escolha == 1){
  254.             Cavaleiro* heroi = new Cavaleiro(nome, 100, atk, def);
  255.             Personagem->setClasse("Cavaleiro");
  256.            
  257.         }
  258.         if(escolha == 2){
  259.             Assassino* heroi = new Assassino(nome, 100, atk, def);
  260.             Personagem->setClasse("Assassino");
  261.            
  262.         }
  263.         if(escolha == 3){
  264.             Arqueiro* heroi = new Arqueiro(nome, 100, atk, def);
  265.             Personagem->setClasse("Arqueiro");
  266.          
  267.         }
  268.         if(escolha == 4){
  269.             Barbaro* heroi = new Barbaro(nome, 100, atk, def);
  270.             Personagem->setClasse("Barbaro");
  271.            
  272.         }  
  273.        
  274.    
  275. }
  276.  
  277.  
  278.  
  279. int main(){
  280.    
  281.     Escolha();
  282.  
  283.     return 0;
  284. }
Advertisement
Add Comment
Please, Sign In to add comment