victorialais

RPGGGGGGG

Nov 20th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.46 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.     bool estaVivo() {
  56.         return (vida > 0);
  57.     }
  58.  
  59.     void descricao() {
  60.         cout << "******" << endl;
  61.         cout << "Nome: " << nome << endl;
  62.         cout << "Level: " << level << endl;
  63.         cout << "Vida: " << vida << endl;
  64.         cout << "Atk: " << atk << endl;
  65.         cout << "Def: " << def << endl;
  66.         cout << "******" << endl;
  67.     }
  68.  
  69.     virtual void atacar(Personagem* alvo) = 0;
  70.     virtual void receberAtaque(int dano) = 0;
  71. };
  72.  
  73. class Heroi : public Personagem {
  74. protected:
  75.     //Equipamentos
  76. public:
  77.     Heroi(string n, int v, int a, int d) : Personagem(n, v, a, d) {
  78.  
  79.     }
  80.  
  81.     void atacar(Personagem* alvo) {
  82.         int dano = atk;
  83.         alvo->receberAtaque(dano);
  84.     }
  85.     void receberAtaque(int dano) {
  86.         int danoFinal = dano - def;
  87.         vida = vida - danoFinal;
  88.     }
  89.  
  90. };
  91.  
  92. class Inimigo : public Personagem {
  93. protected:
  94.     //Experiencia fornecida ao ser derrotado
  95.     //Itens derrubados ao ser derrotado
  96. public:
  97.     Inimigo(string n, int v, int a, int d) : Personagem(n, v, a, d) {
  98.  
  99.     }
  100.  
  101.     void atacar(Personagem* alvo) {
  102.         alvo->receberAtaque(getAtk());
  103.     }
  104.  
  105.     void receberAtaque(int dano) {
  106.         setVida(getVida() - dano);
  107.     }
  108. };
  109.  
  110.  
  111. //CLASSE DOS PERSONAGENS
  112.  
  113. class Cavaleiro : public Heroi {
  114. public:
  115.     Cavaleiro(string n, int v, int a, int d) : Heroi(n, v, a, d) {
  116.         Classe = "cavaleiro";
  117.  
  118.     }
  119.     void atacar(Heroi* 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 Heroi {
  131. public:
  132.     int cont;
  133.     Arqueiro(string n, int v, int a, int d) : Heroi(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(Heroi* 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 Heroi {
  156. public:
  157.     int porcentagem;
  158.     Barbaro(string n, int v, int a, int d) : Heroi(n, v, a, d) {
  159.         int p;
  160.         porcentagem = p;
  161.     }
  162.  
  163.     int getPorcentagem(){
  164.         return porcentagem;
  165.     }
  166.     void setPorcentagem(int novoPorcentagem){
  167.         porcentagem = novoPorcentagem;
  168.     }
  169.  
  170.     void atacar(Heroi* alvo) {
  171.         srand(time(NULL)*1000);
  172.         int p = (rand() % 50) + 80;
  173.         int dano = (atk*p)/100;
  174.         alvo->receberAtaque(dano);
  175.     }
  176. };
  177.  
  178. class Assassino : public Heroi {
  179. public:
  180.     int atkCritico;
  181.     Assassino(string n, int v, int a, int d, int atkC) : Heroi(n, v, a, d) {
  182.         atkCritico = atkC;
  183.     }
  184.  
  185.     int getAtkCritico(){
  186.         return atkCritico;
  187.     }
  188.  
  189.     void setAtkCritico(int atkC){
  190.         atkCritico = atkC;
  191.     }
  192.  
  193.     virtual void atacar(Heroi* alvo) {
  194.         srand(time(0)*1000);
  195.  
  196.         int danoFinal = (rand() % 100 + 1) <= getAtkCritico() ? getAtk()*2 : getAtk();
  197.         alvo->receberAtaque(danoFinal);
  198.     }
  199. };
  200.  
  201. class Boss : public Inimigo{
  202. public:
  203.     Boss(string n, int v, int a, int d): Inimigo(n, v, a, d) {
  204.  
  205.     }
  206.  
  207.     void atacar(Personagem* alvo) {
  208.     int dano;
  209.     if (vida <= 30) {
  210.  
  211.         dano = atk*2.2;
  212.  
  213.     } else {
  214.  
  215.         dano = atk*2;
  216.  
  217.     }
  218.         alvo->receberAtaque(dano);
  219.     }
  220.     void receberAtaque(int dano) {
  221.         int danoFinal = dano*0.2 - def;
  222.         vida = vida - danoFinal;
  223.     }
  224. };
  225.  
  226. Heroi* Escolha(){
  227.     string nome;
  228.     int atk;
  229.     int def;
  230.     string classe;
  231.     int escolha;
  232.  
  233.     cout << "Escolha o nome do seu personagem" << endl;
  234.     cin >> nome;
  235.     cout << " Inicialmente voce tem 20 pontos de atributo. Distribua-os entre a defesa e o ataque do seu personagem." << endl;
  236.     cout << "Ataque: ";
  237.     cin >> atk;
  238.     cout << "Defesa: ";
  239.     cin >> def;
  240.  
  241.     while (def + atk != 20){
  242.         cout << "ERROR. Redistribua-os entre a defesa e o ataque do seu personagem." << endl;
  243.         cout << "Ataque: ";
  244.         cin >> atk;
  245.         cout << "Defesa: ";
  246.         cin >> def;
  247.     }
  248.  
  249.     cout << "Vamos escolher a classe do seu heroi" << endl;
  250.     cout << "1. Cavaleiro " << endl;
  251.     cout << "2. Assassino " << endl;
  252.     cout << "3. Arqueiro " << endl;
  253.     cout << "4. Barbaro " << endl;
  254.     cout << endl;
  255.     cin >> escolha;
  256.  
  257.     Heroi* heroi;
  258.         if(escolha == 1){
  259.             heroi = new Cavaleiro(nome, 100, atk, def);
  260.             cout << "Voce agora eh um cavaleiro!";
  261.         }
  262.         if(escolha == 2){
  263.             heroi = new Assassino(nome, 100, atk, def, 10);
  264.             cout << "Voce agora eh um assassino!";
  265.         }
  266.         if(escolha == 3){
  267.             heroi = new Arqueiro(nome, 100, atk, def);
  268.             cout << "Voce agora eh um arqueiro!";
  269.         }
  270.         if(escolha == 4){
  271.             heroi = new Barbaro(nome, 100, atk, def);
  272.             cout << "Voce agora eh um barbaro!";
  273.         }
  274. cout << endl;
  275. cout << "Aqui estao seus atributos iniciais:" << endl << endl;
  276. heroi->descricao();
  277. return heroi;
  278. }
  279.  
  280. int main(){
  281.  
  282.     Inimigo* vilao = new Inimigo("Buchada", 120, 14, 4);
  283.     Heroi* heroi = Escolha(); // Dados do seu personagem
  284.     cout << "Neste turno, voce vai batalhar com: " << endl;
  285.     vilao->descricao();
  286.  
  287.     while (heroi->estaVivo() && vilao->estaVivo()) {
  288.         heroi->atacar(vilao);
  289.         vilao->atacar(heroi);
  290.  
  291.         heroi->descricao();
  292.         vilao->descricao();
  293.     }
  294.  
  295.     if (heroi->estaVivo()) {
  296.         cout << "Heroi deu um pau no vilao. #elenao" << endl;
  297.     }
  298.     if (vilao->estaVivo()) {
  299.         cout << "Heroi perdeu." << endl;
  300.     }
  301.  
  302.     return 0;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment