Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×