Como usar variáveis em outra classe

Boa Tarde ! Sou novo aqui no fórum então me desculpem por alguma coisa , estou desenvolvendo um projeto e tenho duas classes na primeira classe há as variáveis sendo declaradas como public static int e essas variáveis estão sendo usadas na segunda classe só que eles não estão sendo reconhecidas e estou utilizando um método na segunda classe onde essas variáveis estão e esse método é chamado na primeira classe ! Os códigos :

Classe 1:

public class RpgReal {

   public static String Personagem;
   public static String ataque1 = "#";
   public static String resp1luta;
   public static String ataque2 = "#";
   public static String iteminicialClasse1 = "Espada Velha" , iteminicialClasse2 = "Arco de Madeira" , 
   iteminicialClasse3 = "Maça quebrada" ;
   //iteminicialClasse1 = ("Espada Velha");
   //iteminicialClasse2 = ("Arco de Madeira");
   //iteminicialClasse3 = ("Maça quebrada");
   public static int resp1;
   public static int qntdvida = 0 ;
   public static int respluta1 = 0 ;
   public static int atk1 = 0;
   public static int atk2 = 0;
   public static int item11Dano = 15;
   public int item12Dano = 15;
   public static int item13Dano = 15;
   public static int resp2;
   public static int atk = 0;
   public static int def = 0;
   public static int hp = 0;
   public static int hpbac = 0;
   public static int deflobo = 20;
   public static int hplobo = 250;
   public static int hplobobac = 0;
   public static int atklobo = 12;
   public static int energia = 0;
   public static int energiabac = 0;
   public static int battle1;
   public static int battle2;
   public static int ouro = (0);
   public static int carisma = (0);



public static void main(String[] args) throws MalformedURLException {
    
    Batalha1.Batalha();    

}

Classe 2

public class Batalha1 {

 static void Batalha() throws MalformedURLException {

   //inicio da batalha lobo
        JOptionPane.showMessageDialog(null, "Agora vamos começar o tutorial com uma pequena batalha");
        JOptionPane.showMessageDialog(null, "Você encontrou um lobo!!");
        resp1 = JOptionPane.showConfirmDialog(null, "Quer Batalhar?", null, JOptionPane.YES_NO_OPTION);
        if (resp1 == JOptionPane.YES_OPTION) {
            JOptionPane.showMessageDialog(null, "Então vamos " + Personagem);
        } else {
            JOptionPane.showMessageDialog(null, "Você tentou fugir mas o lobo te seguiu e o atacou ", null, JOptionPane.ERROR_MESSAGE);
        }
        hplobobac = hplobo;
        hpbac = hp;
        while (hp > 0) {
            while (hplobo > 0) {
                resp1luta = JOptionPane.showInputDialog("Escolha seu ataque\n" + "1-" + ataque1 + "\n" + "2-" + ataque2);
                if (resp1luta.equalsIgnoreCase("1")) {
                    hplobo = (hplobo - atk1);
                    JOptionPane.showMessageDialog(null, Personagem + " usou " + ataque1);
                    JOptionPane.showMessageDialog(null, "Hp do oponente " + hplobo);
                    Random MiAleatorio = new Random();
                    int N = MiAleatorio.nextInt(4);
                    if (N == 1) {
                        hp = (hp - 20);
                        JOptionPane.showMessageDialog(null, "Oponente causou 20 de dano");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                         final ImageIcon icon1 = new ImageIcon(new URL("https://lh6.googleusercontent.com/-dKbIIZyweE0/AAAAAAAAAAI/AAAAAAAAAzg/7a8GLc4IEM0/photo.jpg"));
        JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon1);
                    } else if (N == 2) {
                        hp = (hp - 10);
                        JOptionPane.showMessageDialog(null, "Oponente causou 10 de dano");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                    } else if (N == 3) {
                        hp = (hp - 0);
                        JOptionPane.showMessageDialog(null, "Oponente errou o ataque");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);

                    } else {
                        hp = (hp - 25);
                        JOptionPane.showMessageDialog(null, "Oponente acertou um ataque crítico");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                    }
                } else if ((resp1luta.equalsIgnoreCase("2"))) {
                    hplobo = (hplobo - atk2);
                    JOptionPane.showMessageDialog(null, Personagem + " usou " + ataque2);
                    JOptionPane.showMessageDialog(null, "Hp do oponente " + hplobo);
                    Random MiAleatorio = new Random();
                    int N = MiAleatorio.nextInt(4);
                    if (N == 1) {
                        hp = (hp - 20);
                        JOptionPane.showMessageDialog(null, "Oponente causou 20 de dano");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                    } else if (N == 2) {
                        hp = (hp - 10);
                        JOptionPane.showMessageDialog(null, "Oponente causou 15 de dano");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                    } else if (N == 3) {
                        hp = (hp - 0);
                        JOptionPane.showMessageDialog(null, "Oponente errou o ataque");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);

                    } else {
                        hp = (hp - 25);
                        JOptionPane.showMessageDialog(null, "Oponente acertou um ataque crítico");
                        JOptionPane.showMessageDialog(null, "Seu hp " + hp);
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "Tente Novamente", null, JOptionPane.WARNING_MESSAGE);
                }
                if (hplobo <= 0) {
                    hp = Integer.parseInt("0");
                    respluta1 = 1;
                } else if (hp <= 0) {
                    hplobo = Integer.parseInt("0");
                    respluta1 = 2;
                }

            }
        }
        hplobo = hplobobac;
        hp = hpbac;
        if (respluta1 == 2) {
            ImageIcon icon = new ImageIcon("C:\\Users\\LENOVO\\Desktop\\VocePerdeu.png");
            JOptionPane.showMessageDialog(null, null, null, JOptionPane.INFORMATION_MESSAGE, icon);
            qntdvida = (qntdvida + 1);
            if (qntdvida == 0) {
                JOptionPane.showMessageDialog(null, "Você foi eliminado");
                System.exit(0);
            } else {
                JOptionPane.showMessageDialog(null, "Você tem um total de vidas de: " + qntdvida);
            }
        } else if (respluta1 == 1) {

            /* Colocar a imagem / Imagem / */
            (atk) = (atk + 20);
            (atk1) = (atk1 + 10);
            (atk2) = (atk2 + 10);
            (def) = (def + 20);
            (hp) = (hp + 20);
            JOptionPane.showMessageDialog(null, "Aumentou em 20 cada atributo (ataque, defesa e hp)");
        
        
        } 
        
        
    }
}

Eu já vi um pessoal falando pra ver método get pra usar as variáveis mas tem muitas então iria dar muito trabalho !

Obrigado desde já !

Para acessar variável declarada como static, é nome da classe.variável. no seu caso, por exemplo:
RpgReal.ataque1

Boa sorte.

Então mano tentei fazer isso dá um erro

cannot find symbol

aí pra corrigir ele dá como opção importar aí quando eu clico pra importar ele importa isso :

import static RpgReal.ataque1;

e nessa importação dá o erro:

static import only from classes and interfaces.

E agora mano ?

Obrigado mano !

Você tem que colocar RpgReal em todas as variáveis da RpgReal na classe Batalha. e também poderia fazer a classe Batalha estender (extends) de RpgReal que resolveria esse problema, mas não seria muito certo.

public class Batalha1 extends RpgReal {

tadeumx1, não vi você instanciar nem uma vez a classe RpgReal: então porque criar duas classes se você não está usando a Orientação a Objetos?

Simplesmente coloque tudo em uma classe, e não coloque como static. E provavelmente se você declarar esse tanto de variaveis como static, num futuro proximo, caso o seu programa cresça, ou até mesmo agora, quando você fizer os testes, vai ter grande problema.

Uma dica, use OO, organize melhor seu codigo, crie uma melhor estrutura, crie outras classes especializadas, por exemplo, uma classe para o personagem, outra para batalha, etc.

E não pense que criar metodos gets e sets irá dá trabalho, não, pois assim como você usa suas variaves diretamente, você poder usar tambem os sets e gets atraves de um simples objeto, o que muda é so meia linha de codigo. E voce usando sets e gets vai poder aproveitar melhor teu codigo. Claro que isso é opcional dependendo do caso, mas tenho certeza que voce vai poder aproveitar melhor, porque nos sets por ex, você pode setar valores para o jogo, retornar algo especifico para determinado personagem, coisa que com simples variavel não ia poder fazer

Na importação você só importa o pacote,seupacote.*;

Então mano gostei das dicas de criar uma classe para cada coisa mas eu só coloquei as variáveis com o static para o código pegar no public static void main para o programa rodar e por que isso pode ser um problema ?

E mano como é instanciar uma classe ? E estou aprendendo ainda Orientação a Objetos e por isso tem alguns erros se você tiver alguma aula sobre isso ou textos agradeço mano !

E para criar métodos gets e set não é assim ?

public int  getValor(){
    return variavel_que_contem_o_valor;
}

Para obter o valor basta instanciar um objeto da classe 1 e chamar este método. Algo como:

Classe1  obj = new Classe1();
int v = obj.getValor();

Veja que a variável v receberá o valor da variável retornada do método getValor da classe 1.

Ou existe outra forma ?

Obrigado pela atenção !