Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] JOGO COM ORIENTAÇÂO OBJETO

Bom dia!

Usando Classes e Objetos em Java, o projeto não tem Encapsulamento e nem Herança, pois estou aprendendo. Assim que eu aprender sobre Encapsulamento e Herança, eu atualizo o projeto.

Como posso melhoras esse projeto? Como posso otimizar esse projeto?

Tive que mudar um pouco o código, por tem limite de linha kkkkk

import java.util.Random;
public class Personagem {

    String classe;
    String nome;
    int vida;
    int danomin;
    int danomax;
  
    

    // PRINT INFORMAÇÂO DOS PERSONAGEM 
    void Informacao(){

        System.out.println("\nClasse: " +classe+ "\n");
        System.out.println("\nVida: " +vida+ " HP\n");
        System.out.println("\nDano: " +danomin + " a " +danomax+ "\n");

    }
    

    //CALCULAR DANO 
    int calcularDano(){
        
        Random random = new Random();
        return random.nextInt(danomax - danomin + 1) + danomin;
 }
}
import java.util.Scanner;

public class App{
    public static void main(String[] args) {
       Scanner leitura = new Scanner(System.in);
       

       // Nome do Personagem / Jogador que escolhe
       System.out.println("Nome do seu Personagem ?");
       String nomePersonagem = leitura.nextLine();
       System.out.println("Olá, "+nomePersonagem + " Seja BEM VINDO\n");

        // Criação do Primeiro Personagem

        //Personagem Guerreiro
        Personagem p1 = new Personagem();
        p1.classe = "Guerreiro";
        p1.nome = nomePersonagem;
        p1.vida = 30;
        p1.danomax = 12;
        p1.danomin = 5;

        //Personagem Mago
        Personagem p2 = new Personagem();
        p2.classe = "Mago";
        p2.nome = nomePersonagem;
        p2.vida = 25;
        p2.danomax = 14;
        p2.danomin = 7;

        //Criação dos Inimigo 

        Personagem i1 = new Personagem();
        i1.nome = "Teemo";
        i1.vida = 20;
        i1.danomax = 10;
        i1.danomin = 5;

        // Fim Criação dos Inimigo
        // INICIO MENU INFORMAÇÂO DOS PERSONAGEM

        p1.Informacao();
        System.out.println("********");
        p2.Informacao();
        System.out.println("********");
        
        //  ESCOLHA DO PERSONAGEM 
        
        boolean escolhaInvalida = false;
        Personagem jogador = null;
        while (!escolhaInvalida) {
            
            //TEXTO DO MENU ESCOLHA
            String menuEscolha = """
                    
            1- GUERREIRO
            2- MAGO

            Qual Classe deseja Jogar ?""";

            System.out.println(menuEscolha);
            int escolha = leitura.nextInt();

            switch (escolha){

                case 1:
                jogador = p1;
                escolhaInvalida = true;
                p1.Informacao();
                System.out.println("\nCLASSE ESCOLHIDA COM SUCESSO\n");

                break;

                case 2:
                jogador = p2;
                escolhaInvalida = true;
                p2.Informacao();
                System.out.println("\nCLASSE ESCOLHIDA COM SUCESSO\n");

                break;

                default:
                System.out.println("Opação Invalida!!!");

                break;


                
            }
        }

        // COMEÇO DO JOGOS 

        System.out.println("\n************************\n");
        System.out.println("BORA JOGAR AS LUTAS!!!!!!!");       
        System.out.println("\n************************\n");


        // NIVEL 1

        System.out.println("NIVEL 1");


        while (jogador.vida > 0 && i1.vida > 0){
           
            //JOGANDO ATACANDO
            if (jogador.vida > 0) {
                System.out.println(jogador.nome + " Atacando");
                int danoPersonagem = jogador.calcularDano();
                i1.vida -= danoPersonagem;
                System.out.println("Dano Causado: " + danoPersonagem + "\nVida do Inimigo: " + i1.vida);
            }
            
            //VERIFICANDO VIDA DO INIMIGO
            if (i1.vida <= 0) {
                System.out.println("Inimigo Derrotado!");
                break; 
            }
            
            // INIMIGO ATACANDO
            if (i1.vida > 0) {
                System.out.println(i1.nome + " Está Atacando");
                int danoInimigo = i1.calcularDano();
                jogador.vida -= danoInimigo;
                System.out.println("Dano Causado: " + danoInimigo + "\nSua Vida: " + jogador.vida);
            }

            //  VERIFICANDO VIDA DO JOGADOR 
            if (jogador.vida <= 0) {
                System.out.println("Você foi derrotado!!");
                break;
            }}}}


1 resposta
solução!

Olá Natanael! Tudo bem?

Que legal que você está desenvolvendo um projeto de jogo em Java! É uma ótima maneira de aprender e praticar programação orientada a objetos. Vou te dar algumas dicas de como você pode melhorar o projeto, mesmo sem ainda estar utilizando encapsulamento e herança:

  1. Organização do Código: Você pode separar a lógica do jogo em diferentes classes, mesmo sem usar herança. Por exemplo, poderia ter uma classe Jogo que gerencia o fluxo do jogo, e a classe Personagem para os personagens.

  2. Uso de Constantes: Para valores fixos, como os danos e a vida inicial, você pode usar constantes. Isso ajuda a evitar "números mágicos" no código e facilita a manutenção:

    final int VIDA_GUERREIRO = 30;
    final int DANO_MIN_GUERREIRO = 5;
    final int DANO_MAX_GUERREIRO = 12;
    
  3. Melhorar a Interação com o Usuário: Você pode melhorar a interação com o usuário, talvez adicionando mais opções ou informações sobre o que cada classe faz. Além disso, poderia incluir um loop para permitir que o jogador jogue novamente sem precisar reiniciar o programa.

  4. Comentários: Adicionar comentários no código pode ajudar você e outras pessoas a entenderem melhor o que cada parte do código faz. Isso é útil demais quando você revisitar o projeto no futuro.

Essas são apenas algumas ideias para você melhorar seu projeto que tive lendo seu código. Mas não se esqueça de que o importante é você ir praticando e cada melhoria que você faz é um passo em direção a um código mais bem estruturado. Parabéns pela criatividade em seu jogo!

Em caso de dúvidas, conte com o apoio do fórum :)

Um abraço e bons estudos!