Ir ao conteúdo
  • Cadastre-se
Lucas Assunção de Sousa

Java RPG em turnos: Jogador e Inimigo recebem o mesmo dano

Recommended Posts

Boa tarde! 

 

estou fazendo um jogo em Java de uma simples batalha em RPG em turnos: Onde é você vs um CPU em OO. Estou usando a mesma classe para serem o jogador e o inimigo 

ao mesmo tempo e as duas tem o método ataque e recebe dano. Entretanto quando um testo e ataco, tanto o jogador e o adversário recebem dano a mesma quantidade de dano, fora além de não seguir a condição de morte que eu coloquei. 

 

Aqui está o meu código: 

 

Classe. 

import java.util.Random;

class Personagem extends Atributos
{
    
    //ATRIBUTOS
    
    public static String nome;
    public static String classe; 
    public static int defesa;
    public static int critico;
    public static int danoMinimo; 
    public static int danoMaximo; 
    public static int healthPoints;
    public static int manaPoints; 
    
    //CONSTRUTOR
    
    public Personagem ()
    {
        this.nome = ""; 
        this.classe = "Mago"; 
        this.vitalidade = 10;
        this.armadura = 10; 
        this.forca = 10;
        this.inteligencia = 10;
        this.agilidade = 10; 
        this.sorte = 10; 
        this.defesa = 10 + this.armadura; 
        this.critico = this.sorte / 100; 
        this.healthPoints = 100;
        this.manaPoints = 100; 
        this.danoMinimo = 10;
        this.danoMaximo = 20; 
    }
    
    //SETTERS 
    
    public void setNome (String nome)
    {
        this.nome = nome;
    }
    
    public void setClasse (String classe)
    {
        this.classe = classe;
    }
    
    public void setDefesa (int defesa)
    {
        this.defesa = defesa;
    }
    
    public void setCritico (int critico)
    {
        this.critico = critico; 
    }
    
    public void setHealthPoints (int healthPoints)
    {
        this.healthPoints = healthPoints;
    }
    
    public void setManaPoints (int manaPoints)
    {
        this.manaPoints = manaPoints;
    }
    
    public void setDanoMinimo (int danoMinimo)
    {
        this.danoMinimo = danoMinimo;
    }
    
    public void setDanoMaximo (int danoMaximo)
    {
        this.danoMaximo = danoMaximo; 
    }
    
    //GETTERS
    
    public String getNome ()
    {
        return this.nome;
    }
    
    public String getClasse ()
    {
        return this.classe;
    }
    
    public int getDefesa ()
    {
        return this.defesa;
    }
    
    public int getCritico ()
    {
        return this.critico; 
    }
    
    public int getHealthPoints ()
    {
        return this.healthPoints;
    }
    
    public int getManaPoints ()
    {
        return this.manaPoints; 
    }
    
    public int getDanoMinimo ()
    {
        return this.danoMinimo;
    }
    
    public int getDanoMaximo ()
    {
        return this.danoMaximo;
    }

    public void Ataque (Personagem inimigo)
    {
        Random rand = new Random();

        int ataque; 

        ataque = rand.nextInt(this.danoMaximo) + this.danoMinimo; 
        inimigo.healthPoints = ataque - inimigo.defesa; 

    }

    public void recebeDano (Personagem inimigo ,int ataque)
    {
        this.healthPoints = ataque - defesa;

    }
    
}

Programa principal: 

import java.util.Scanner;
import java.util.Random; 

class Partida 
{
    static Scanner scanf = new Scanner(System.in);
    static Random  rand  = new Random();

    static Personagem jogador = new Personagem(); 
    static Personagem inimigo = new Personagem(); 

    public static void main(String[] args)
    {
    	Introducao();
    	telaPersonagem();
    	chamaTurno();
    	jogadorTurno();
    	cpuTurno();
    	vitoria();

    }

    public static void Introducao ()
    {
    	System.out.println("SEJA BEM-VINDO A ARENA, GUERREIRO! DIGA-NOS SEU NOME: "); 
    	jogador.setNome("LUCAS"); 
    	inimigo.setNome("LUCAS"); 
    	
    }

    public static void telaPersonagem() // MOSTRA A TELA COM INFORMAÇÕES DOS PERSONAGENS 
    {
    	System.out.println("NOME: " + jogador.getNome() + "					    NOME:" + inimigo.getNome());
		System.out.println("HP: " + jogador.getHealthPoints() + "				HP: "  + inimigo.getHealthPoints());
		System.out.println("MP: " + jogador.getManaPoints() + "					MP: "  + inimigo.getManaPoints());

    }

    public static void chamaTurno() 
    {

    	int jogadorAgi; 
    	int cpuAgi; 

    	do
    	{

    	jogadorAgi = rand.nextInt(1) + jogador.getAgilidade(); 
    	cpuAgi = rand.nextInt(1) + inimigo.getAgilidade(); 

    		if(jogadorAgi > cpuAgi)
    		{
    			jogadorTurno(); 

    		} else
    		{


    		}

    	} while(jogadorAgi != cpuAgi);

    }

    public static void jogadorTurno()
    {
    	int acao; 

    	do
    	{

    		System.out.println("SEU TURNO"); 
    		System.out.println(""); 
    		System.out.println("Escolha uma acao"); 
    		System.out.println("1 - Atacar"); 
    		System.out.println("2 - Atacar forte"); 
    		System.out.println("3 - Atacar FORTE MESMO"); 
    		acao = scanf.nextInt(); 

    		switch(acao)
    		{
    			case 1 : 
    				jogador.Ataque(inimigo);
    				System.out.println("Ataque realizado com sucesso"); 
                    telaPersonagem();
    				chamaTurno(); 
    				break; 

    			default : 
    				System.out.println("Digite um comando valido"); 
    		}	

    	} while(jogador.healthPoints != 0 || jogador.healthPoints < 0); 

    }

    public static void cpuTurno()
    {
    	int acao; 

    	acao = rand.nextInt(1) + 3;

    	System.out.println("TURNO INIMIGO"); 

    	do
    	{
    		switch (acao)
    		{
    			case 1:
    				inimigo.Ataque(jogador); 
    				System.out.println("Você e atacado com sucesso"); 
    				chamaTurno();
    				break;

    			case 2: 
    				inimigo.Ataque(jogador); 
    				System.out.println("Você e atacado com sucesso"); 
    				chamaTurno(); 
    				break;

    			case 3:
    				inimigo.Ataque(jogador); 
    				System.out.println("Você e atacado com sucesso");  
    				break;
    		}
    	} while(inimigo.healthPoints != 0 || inimigo.healthPoints <= 0);

    }

    public static void vitoria()
    {
    	if(jogador.healthPoints == 0)
    	{
    		System.out.println("voce perdeu!");
    	}

    	if(inimigo.healthPoints == 0)
    	{
    		System.out.println("voce venceu!");
    	}
    }
    
}

Alguém sabe o que estou fazendo de errado? Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×