3
I’m having a problem:
non Static method write cannot be referenced from a Static context.
I tried to change the function to static
, however, there gives it problem of:
non Static variable
This is the class Personagem
in my code:
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.recebeDano(ataque);
}
public void recebeDano (int ataque)
{
this.healthPoints = ataque - defesa;
}
}
And that’s the class Partida
:
import java.util.Scanner;
import java.util.Random;
class Partida
{
Scanner scanf = new Scanner(System.in);
Random rand = new Random();
Personagem jogador = new Personagem();
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("CPU");
}
public 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 void chamaTurno()
{
int jogadorAgi;
int cpuAgi;
do
{
jogadorAgi = rand.nextInt(1) + jogador.getAgilidade();
cpuAgi = rand.nextInt(1) + inimigo.getAgilidade();
if(jogadorAgi > cpuAgi)
{
jogadorTurno();
} else
{
cpuTurno();
}
} while(jogadorAgi != cpuAgi);
}
public void jogadorTurno()
{
int acao;
do
{
System.out.println("SEU TURNO");
System.out.println("");
System.out.println("Escolha uma ação");
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");
chamaTurno();
break;
default :
System.out.println("Digite um comando válido");
}
} while(jogador.healthPoints != 0);
}
public 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ê é atacado com sucesso");
chamaTurno();
break;
case 2:
inimigo.Ataque(jogador);
System.out.println("Você é atacado com sucesso");
chamaTurno();
break;
case 3:
inimigo.Ataque(jogador);
System.out.println("Você é atacado com sucesso");
chamaTurno();
break;
}
} while(inimigo.healthPoints != 0);
}
public void vitoria()
{
if(jogador.healthPoints == 0)
{
System.out.println("Você perdeu!");
}
if(inimigo.healthPoints == 0)
{
System.out.println("Você venceu!");
}
}
}
I did this, only in this case I do not recognize the other instantiated objects, but I’ve solved the problem by making them static already! Thank you very much!
– user103375
Mark the answer as correct to help colleagues who have the same question as you.
– StatelessDev
Right! Thank you very much!
– user103375