From 2c725ef3d7352cb0115b5b8eb7fe3853e71db2ef Mon Sep 17 00:00:00 2001 From: 250406 <250406@mac.epvc2.local> Date: Mon, 18 May 2026 11:44:04 +0100 Subject: [PATCH] okok --- .../mycompany/experientia/Experientia.java | 175 +----------------- 1 file changed, 3 insertions(+), 172 deletions(-) diff --git a/src/main/java/com/mycompany/experientia/Experientia.java b/src/main/java/com/mycompany/experientia/Experientia.java index 5772841..722e407 100644 --- a/src/main/java/com/mycompany/experientia/Experientia.java +++ b/src/main/java/com/mycompany/experientia/Experientia.java @@ -108,17 +108,13 @@ public class Experientia { } } } - public void menu() throws IOException { - while (true) { - System.out.println("\n--------------------"); System.out.println(nomeJogador + " Nv " + nivelJogador); System.out.println("HP: " + vidaAtual + "/" + vidaMax); System.out.println("Ouro: " + ouro); System.out.println("--------------------"); - System.out.println("1-Procurar inimigos"); System.out.println("2-Loja"); System.out.println("3-Inventário"); @@ -127,7 +123,6 @@ public class Experientia { System.out.println("6-Salvar"); System.out.println("7-Carregar"); int op = scanner.nextInt(); - switch (op) { case 1 -> ProcurarInimigos(); @@ -143,173 +138,114 @@ public class Experientia { salvarJogo(); case 7 -> carregarJogo(); - } } } - public void ProcurarInimigos() { - refreshLojaRestantes = 3; - int nivelInimigo = rand.nextInt(5) + nivelJogador; - int vidaInimigo = 60 + nivelInimigo * 20; int ataqueInimigo = 8 + nivelInimigo * 4; int defesaInimigo = nivelInimigo * 2; - boolean boss = rand.nextInt(100) < 15; - if (boss) { - System.out.println("BOSS APARECEU"); - vidaInimigo *= 3; ataqueInimigo *= 2; } - if (nivelInimigo > nivelJogador) { System.out.println("PERIGO: inimigo mais forte que tu"); } - while (vidaAtual > 0 && vidaInimigo > 0) { - System.out.println("\nHP: " + vidaAtual + "/" + vidaMax); System.out.println("Inimigo HP: " + vidaInimigo); System.out.println("1-Atacar 2-Fugir"); - int op = scanner.nextInt(); - if (op == 1) { - int dano = Math.max( 1, ataqueBase + bonusAtaque + rand.nextInt(5) - defesaInimigo ); - boolean critico = rand.nextInt(100) < 20; - if (critico) { dano *= 2; System.out.println("CRÍTICO!"); } - vidaInimigo -= dano; - int danoRecebido = Math.max( 1, ataqueInimigo - (defesaBase + bonusDefesa) ); - vidaAtual -= danoRecebido; } else { - if (rand.nextInt(100) < 60) { - System.out.println("Fugiste"); return; - - } else { - + } + else { System.out.println("Falhaste fuga"); - vidaAtual -= 5; } } } - if (vidaAtual <= 0) { GameOver(); return; } - System.out.println("Vitória!"); - xpJogador += 20 + nivelInimigo * 5; ouro += 15 + nivelInimigo * 5; - if (boss) { xpJogador += 50; ouro += 50; } - pontosStatus += 2; - if (rand.nextInt(100) < 45) { - Item drop = gerarItem(); - System.out.println("\nDROP:"); System.out.println(drop); - adicionarItem(drop); } - if (rand.nextInt(1000) == 0) { - Item unico = gerarItemUnico(); - System.out.println("\nITEM ÚNICO ENCONTRADO!"); System.out.println(unico); - adicionarItem(unico); } - levelUp(); } - public void Loja() { - gerarLoja(); - while (true) { - System.out.println("\nLOJA"); System.out.println("Ouro: " + ouro); System.out.println("Refresh restantes: " + refreshLojaRestantes); - for (int i = 0; i < loja.length; i++) { System.out.println(i + "-" + loja[i]); } - System.out.println("n-refresh -1-sair"); - String input = scanner.next(); - if (input.equals("-1")) { return; } - if (input.equals("n")) { - if (refreshLojaRestantes > 0) { - refreshLojaRestantes--; gerarLoja(); - System.out.println("Loja atualizada"); - } else { System.out.println("Sem refreshes"); } - continue; } - int op = Integer.parseInt(input); - if (op >= 0 && op < loja.length) { - Item item = loja[op]; - if (ouro >= item.preco || admin) { - if (!admin) { ouro -= item.preco; } - adicionarItem(item); - System.out.println("Compraste " + item.nome); } else { System.out.println("Sem ouro"); @@ -317,161 +253,114 @@ public class Experientia { } } } - public void Inventario() { - while (true) { - System.out.println("\n===== INVENTÁRIO ====="); - if (itensCount == 0) { System.out.println("Inventário vazio"); } - for (int i = 0; i < itensCount; i++) { - System.out.println(i + " - " + inventario[i]); } - System.out.println("\n1-Usar"); System.out.println("2-Equipar"); System.out.println("3-Remover"); System.out.println("-1-Sair"); - int op = scanner.nextInt(); - if (op == -1) { return; } - System.out.print("ID Item: "); int id = scanner.nextInt(); - if (id < 0 || id >= itensCount) { - System.out.println("Item inválido"); continue; } - Item item = inventario[id]; - if (op == 1) { - if (item.tipo.equals("consumivel")) { - vidaAtual = Math.min( vidaMax, vidaAtual + item.valor ); - System.out.println( "Curaste " + item.valor + " HP" ); - removerItem(id); - } else { - System.out.println("Não podes usar isso"); } } else if (op == 2) { - if (item.tipo.equals("arma")) { - bonusAtaque = item.valor; - System.out.println( item.nome + " equipada" ); } else if (item.tipo.equals("armadura")) { - bonusDefesa = item.valor; - System.out.println( item.nome + " equipada" ); } else { - System.out.println("Não equipável"); } } else if (op == 3) { - System.out.println( item.nome + " removido" ); - removerItem(id); } } } - public void levelUp() { - int need = nivelJogador * 50; - while (xpJogador >= need) { - xpJogador -= need; nivelJogador++; - vidaMax += 20; ataqueBase += 2; defesaBase += 1; pontosStatus += 3; - System.out.println("Subiste nível " + nivelJogador); - need = nivelJogador * 50; } } - public void Status() { - while (true) { - System.out.println("\nSTATUS"); System.out.println("1-Aumentar Ataque"); System.out.println("2-Aumentar Defesa"); System.out.println("3-Aumentar Vida Máx"); System.out.println("-1-Sair"); - System.out.println("\nAtaque: " + (ataqueBase + bonusAtaque)); System.out.println("Defesa: " + (defesaBase + bonusDefesa)); System.out.println("Vida Max: " + vidaMax); System.out.println("Pontos disponíveis: " + pontosStatus); - int op = scanner.nextInt(); - if (op == -1) { return; } - if (pontosStatus <= 0) { System.out.println("Sem pontos disponíveis"); continue; } - switch (op) { - case 1 -> { ataqueBase++; pontosStatus--; System.out.println("Ataque aumentado"); } - case 2 -> { defesaBase++; pontosStatus--; System.out.println("Defesa aumentada"); } - case 3 -> { vidaMax += 10; vidaAtual += 10; pontosStatus--; System.out.println("Vida aumentada"); } - default -> System.out.println("Opção inválida"); } @@ -504,7 +393,6 @@ public class Experientia { inventario[itensCount++] = i; return; } - if (itensCount < inventario.length) { inventario[itensCount++] = i; } else { @@ -525,53 +413,36 @@ public class Experientia { } } public void gerarLoja() { - for (int i = 0; i < loja.length; i++) { loja[i] = gerarItem(); } } - public Item gerarItem() { - int t = rand.nextInt(3); int r = rand.nextInt(100); - String raridade; - int multiplicadorValor; int multiplicadorPreco; - if (r < 60) { - raridade = "Comum"; - multiplicadorValor = 1; multiplicadorPreco = 1; } else if (r < 85) { - raridade = "Raro"; - multiplicadorValor = 3; multiplicadorPreco = 2; } else if (r < 97) { - raridade = "Épico"; - multiplicadorValor = 5; multiplicadorPreco = 3; } else { - raridade = "Lendário"; - multiplicadorValor = 8; multiplicadorPreco = 5; } - if (t == 0) { - int cura = 30 * multiplicadorValor; int preco = 10 * multiplicadorPreco; - return new Item( "Poção", "consumivel", @@ -580,12 +451,9 @@ public class Experientia { raridade ); } - if (t == 1) { - int dano = (5 + nivelJogador) * multiplicadorValor; int preco = 40 * multiplicadorPreco; - return new Item( "Espada", "arma", @@ -594,10 +462,8 @@ public class Experientia { raridade ); } - int defesa = (5 + nivelJogador) * multiplicadorValor; int preco = 40 * multiplicadorPreco; - return new Item( "Armadura", "armadura", @@ -606,9 +472,7 @@ public class Experientia { raridade ); } - class Item { - String nome; String tipo; int valor; @@ -622,64 +486,46 @@ public class Experientia { preco = p; raridade = r; } - public String toString() { return nome + " [" + raridade + "] +" + valor + " (" + tipo + ") - " + preco + " ouro"; } } - public void resetJogo() { - nivelJogador = 1; xpJogador = 0; ouro = 0; - bonusAtaque = 0; bonusDefesa = 0; - pontosStatus = 0; itensCount = 0; - refreshLojaRestantes = 3; - vidaMax = 100; ataqueBase = 10; defesaBase = 5; - switch (classe) { - case "Guerreiro" -> { ataqueBase += 2; defesaBase += 3; } - case "Mago" -> { - ataqueBase += 5; + ataqueBase += 10; } - case "Paladino" -> { defesaBase += 4; vidaMax += 20; } - case "Assassino" -> { ataqueBase += 3; } - case "Arqueiro" -> { ataqueBase += 2; } } - vidaAtual = vidaMax; } - public Item gerarItemUnico() { - int t = rand.nextInt(2); - if (t == 0) { - return new Item( "Excalibur", "arma", @@ -688,7 +534,6 @@ public class Experientia { "Único" ); } - return new Item( "Armadura Divina", "armadura", @@ -697,35 +542,23 @@ public class Experientia { "Único" ); } - public void salvarJogo() throws IOException { - try (PrintWriter writer = new PrintWriter(new FileWriter(nomeJogador + ".txt"))) { - writer.println(nomeJogador); writer.println(classe); - writer.println(nivelJogador); writer.println(xpJogador); writer.println(ouro); - writer.println(vidaMax); writer.println(vidaAtual); - writer.println(ataqueBase); writer.println(defesaBase); - writer.println(bonusAtaque); writer.println(bonusDefesa); - writer.println(pontosStatus); - writer.println(itensCount); - for (int i = 0; i < itensCount; i++) { - Item it = inventario[i]; - writer.println( it.nome + ";" + it.tipo + ";" @@ -734,11 +567,9 @@ public class Experientia { + it.raridade ); } - System.out.println("Jogo guardado!"); } } - public void carregarJogo() { System.out.print("Nome do jogador: "); String nome = scanner.next();