JAVA Animacja/zmiana

0

Witam. Tworzę mini gre 2D w Javie. Mam już dosyć sporo rzeczy ale od dłuższego czasu próbuje zrobić z animacjami gracza(ruch w lewo inny obrazek, w prawo inny itd.)

Mój projekt składa się z:
Game(zawiera ogólne instrukcje dot. gry(rysowanie mapy gracza obiektow obsluga zdarzen))
EntityPlayer(zawiera metodę move, opis blokad gracza na danych kafelkach )
Map(jak sama nazwa mówi)

Wpadłem na pomysł aby zrobić warunek, jeśli gracz idzie w lewo jest rysowany w miejscu gracza dany obrazek(EntityPlayer)

if (player.left) {
            g.drawImage(pretorian, (int) (xp - 32), (int) (yp - 32), null);
        }

Jeśli w prawo to inny obrazek itd.
Jedyny problem jest w sprawdzeniu czy gracz idzie w danym kierunku.Jeśli uruchamiam grę z powyższym fragmentem, to jest biały ekran i wyjątek:

Exception in thread "main" java.lang.NullPointerException
    at src.Skatty.EntityPlayer.paint(EntityPlayer.java:244)
    at src.Skatty.Game.gameLoop(Game.java:233)
    at src.Skatty.Game.<init>(Game.java:177)
    at src.Skatty.Game.main(Game.java:503)

Dodam że EntityPlayer jest kompilowany prawidłowo.Poniżej zamieszcze fragmenty metody move itp.

Opis metody move w EntityPlayer:

    public boolean move(float dx, float dy) {
        float nx = x + dx;
        float ny = y + dy;
        if (validLocation(nx, ny)) {

            x = nx;
            y = ny;

            ang = (float) (Math.atan2(dy, dx) - (Math.PI / 2));
            return true;
        }
        return false;
    }

Ruch(Game):

    if ((dx != 0) || (dy != 0)) {
            player.move(dx * delta * 0.003f,
                        dy * delta * 0.003f);

Obsługa klawiszy(Game):

public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_A) {
            left = true;
            System.out.print("left");

public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_A) {
            left = false;
        }
        }

Obsluga kierunku(Game):

public void logic(long delta) {
        float dx = 0;
        float dy = 0;
        if (left) {
            dx -= 1;
        }
        if (right) {
            dx += 1;
        }
        if (up) {
            dy -= 1;
        }
        if (down) {
            dy += 1;

Jeśli ktoś ma pomysł jak uwzględnić w EntityPlayer ruch gracza w danym kierunku proszę o pomoc.

0

Exception in thread "main" java.lang.NullPointerException
at src.Skatty.EntityPlayer.paint(EntityPlayer.java:244)

Jak k*a wygląda wiersz 244?

0

Czlowieku, ogarnij sie. Przeciez masz napisane, co jest nie tak ! Probujesz rysowac (metoda paint()) coś, czego nie ma (NullPointerException). Uzywasz referencji na obiekt, na ktorym nie zostal wywolany konstruktor. OMG.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0