Galera fiz esse joguinho no console, mas queria que exibisse apenas as opções de magia q o personagem possui, o código funcionou mas errado podem me ajudar.
Você escolheu Guerreiro e Arqueiro para o combate!
Escolha a ação para Guerreiro:
- Atacar
- Usar Magia de Cura
- Usar Magia de Fogo
- Usar Magia de Galo
public class JogoRPG {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Personagem[] personagens = new Personagem[3];
personagens[0] = new Personagem("Guerreiro", 100, 20);
personagens[1] = new Personagem("Mago", 80, 30);
personagens[2] = new Personagem("Arqueiro", 90, 25);
Magia magiaFogo = new Magia("Magia de Fogo",30);
Magia magiaGelo = new Magia("Magia de Galo",25);
Magia magiaCura = new Magia("Magia de Cura",0);
personagens[0].adcionarMagia(magiaCura);
personagens[1].adcionarMagia(magiaFogo);
personagens[1].adcionarMagia(magiaGelo);
personagens[1].adcionarMagia(magiaCura);
personagens[2].adcionarMagia(magiaFogo);
personagens[2].adcionarMagia(magiaGelo);
System.out.println("Bem-vindo ao jogo de RPG!");
System.out.println("Escolha 2 personagens para o combate:");
for (int i = 0; i < 3; i++) {
System.out.println((i + 1) + ". " + personagens[i].nome);
}
int escolha1 = scanner.nextInt() - 1;
int escolha2 = -1;
do {
escolha2 = scanner.nextInt() - 1;
if (escolha2 == escolha1) {
System.out.println("Escolha dois personagens diferentes!");
}
} while (escolha2 == escolha1);
Personagem jogador1 = personagens[escolha1];
Personagem jogador2 = personagens[escolha2];
System.out.println("Você escolheu " + jogador1.nome + " e " + jogador2.nome + " para o combate!");
while (jogador1.vida > 0 && jogador2.vida > 0) {
System.out.println("Escolha a ação para " + jogador1.nome + ":");
System.out.println("1. Atacar");
//
ArrayList<Magia> magiasJogador1=jogador1.getMagias();
for(int i=0;i<magiasJogador1.size();i++) {
System.out.println((i+2)+". Usar "+ magiasJogador1.get(i).nome);
}
ArrayList<Magia> magiasJogador2=jogador2.getMagias();
for(int i=0;i<magiasJogador2.size();i++) {
System.out.println((i+2)+". Usar "+ magiasJogador2.get(i).nome);
}
//
// System.out.println("2. Usar Magia de Fogo");
// System.out.println("3. Usar Magia de Gelo");
// System.out.println("4. Usar Magia de Cura");
int acaoJogador1 = scanner.nextInt();
int acaoJogador2 = scanner.nextInt();
//
if(acaoJogador1==1) {
jogador1.atacar(jogador2);
}
else if(acaoJogador1>=2 && acaoJogador1<=magiasJogador1.size()+1) {
jogador1.usarMagia(jogador2, acaoJogador1-2); // subitrai 2 para mapear para o indice correto da magia!
}
if(acaoJogador2==1) {
jogador2.atacar(jogador1);
}
else if(acaoJogador2>=2 && acaoJogador2<=magiasJogador2.size()+1) {
jogador2.usarMagia(jogador1, acaoJogador2-2); // subitrai 2 para mapear para o indice correto da magia!
}
//
if (acaoJogador1 == 1) {
jogador1.atacar(jogador2);
} else if (acaoJogador1 == 2) {
jogador1.usarMagia(jogador2, 0);
} else if (acaoJogador1 == 3) {
jogador1.usarMagia(jogador2, 1);
} else if (acaoJogador1 == 4) {
jogador1.usarMagia(jogador1, 2);
}
System.out.println("Escolha a ação para " + jogador2.nome + ":");
System.out.println("1. Atacar");
System.out.println("2. Usar Magia de Fogo");
System.out.println("3. Usar Magia de Gelo");
System.out.println("4. Usar Magia de Cura");
if (acaoJogador2 == 1) {
jogador2.atacar(jogador1);
} else if (acaoJogador2 == 2) {
jogador2.usarMagia(jogador1, 0);
} else if (acaoJogador2 == 3) {
jogador2.usarMagia(jogador1, 1);
} else if (acaoJogador2 == 4) {
jogador2.usarMagia(jogador2, 2);
}
System.out.println(jogador1.nome + ": Vida = " + jogador1.vida);
System.out.println(jogador2.nome + ": Vida = " + jogador2.vida);
}
if (jogador1.vida <= 0) {
System.out.println(jogador1.nome + " foi derrotado! " + jogador2.nome + " é o vencedor!");
} else {
System.out.println(jogador2.nome + " foi derrotado! " + jogador1.nome + " é o vencedor!");
}
scanner.close();
}
}
///////////////////////////////
public class Personagem {
String nome;
int vida;
int ataque;
ArrayList <Magia> magias;
public Personagem(String nome, int vida, int ataque) {
this.nome = nome;
this.vida = vida;
this.ataque = ataque;
this.magias=new ArrayList<>();
}
public void atacar(Personagem alvo) {
int dano = new Random().nextInt(ataque);
System.out.println(nome + " ataca " + alvo.nome + " causando " + dano + " de dano!");
alvo.vida -= dano;
}
public void adcionarMagia(Magia magia) {
magias.add(magia);
}
public ArrayList<Magia>getMagias(){
return magias;
}
public void usarMagia(Personagem alvo, int indiceMagia) {
if (indiceMagia<0 || indiceMagia>= magias.size()) {
System.out.println("magia invalida!");
return;
}
Magia magia= magias.get(indiceMagia);
int dano=new Random().nextInt(magia.poder);
System.out.println(nome+" usou "+magia.nome+" e causou "+dano+" de dano a "+alvo.nome+"!");
alvo.vida-=dano;
}
}
//////////////////////////////
public class Magia {
String nome;
int poder;
public Magia(String nome, int poder) {
this.nome= nome;
this.poder = poder;
}
}