Engine 2D, printar a posição do mouse com drawn

Estou montando uma engine2D seguindo os tutoriais de um canal do youtube, tudo funcionou certo e consegui fazer algumas formas e etc, mas quando puxo a variável mouseX e mouseY da classe Input e tento printar na tela com um drawString dá erro:

Exception in thread “main” java.lang.NullPointerException
at game.Window.update(Window.java:81)
at game.Engine.run(Engine.java:88)
at java.lang.Thread.run(Thread.java:745)
at game.Engine.start(Engine.java:31)
at game.Engine.main(Engine.java:107)
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

O erro é provocado pelo drawnString dando getPosxy na classe Input, como eu já disse. Deixei comentado no local, já tentei nas formas que sei e não funcionou…

Meu objetivo é mostrar o local do mouse como estou fazendo no drawnString que printa a quantidade de updates rodados.

public void update() {
i++;
g.drawImage(getImage(), 0, 0, getCanvas().getWidth(), getCanvas().getHeight(), null);
g.drawOval(90, 70, 150, 150);
g.fillOval(90, 70, 150, 150);
if (i % 2 == 0) {
g.setColor(Color.blue);
} else {
g.setColor(Color.yellow);
}
g.drawString(teste = "Updates: " + i, 20, 20);
//---------------------------------------------|
g.drawString(input.getPosxy(), 50, 20);//|==== Problema para usar comando drawn para printar posição do mouse na tela
//---------------------------------------------|
bs.show();
}

As classes são um pouco grandes já, então melhor passar o git delas :v

Onde o input é inicializado?

1 curtida

Olhando sua classe Window, não vi o momento em que o o atributo input dessa classe é preenchido. Por isso, ele deve estar nulo no seu método update da classe Window. Imagino que seu objetivo era pegar o input da classe Engine e passar para a Window, não?

Obs: imagino que você ainda deva estar no começo, mas em engines o método chamado update geralmente atualiza os cálculos internos do jogo (movimento, física), e é separado do desenho dos elementos (que pode ser chamado draw ou render, dependendo do caso). Não é obrigatório, mas é uma convenção que pode te ajudar.

Abraço.

Acho que tive uma luz então, tentarei resolver isso.
Sim sou iniciante no java, faz pouco tempo que estudo ele, principalmente agora porque estou pegando POO na Universidade.

vc poderia compartilhar o link para o canal no youtube?

1 curtida

https://www.youtube.com/channel/UCYdJWlQWeuhDZicBbxM0-mg esse é o canal dele, gostei bem dos vídeos

1 curtida