victorialais

rpg editado 3

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