0

I am getting this error code:

Exception in thread "Thread-2" java.lang.NullPointerException
at com.game.src.main.SpriteSheet.grabImage(SpriteSheet.java:15)
at com.game.src.main.Player.<init>(Player.java:23)
at com.game.src.main.Game.init(Game.java:37)
at com.game.src.main.Game.run(Game.java:83)
at java.lang.Thread.run(Unknown Source)

Here is init() from game

public void init()
{
    handler = new Handler();
    handler.addObject(new Player(200,(370-64),this,1,ObjectId.Player1));
    BufferedImageLoader loader = new BufferedImageLoader();
    try
    {
        spriteSheet = loader.loadImage("/spritesheet.png");
        background = loader.loadImage("/background.gif");
    }catch(IOException e)
    {
        e.printStackTrace();
    }

    addKeyListener(new KeyInput(handler, this));
    this.requestFocus();


}

The constructor for Player:

public Player(float x, float y, Game game, int playerX, ObjectId id) {
    super(x,y,id);
    this.game = game;
    SpriteSheet ss =  new SpriteSheet(game.getSpriteSheet());
    if (playerX == 1)
    {
        player = ss.grabImage(1,1,32,32);
    }
    else player = ss.grabImage(4,1,32,32);
    gravity = 0.2;
    maxDY = 5;
}

and Class SpreadSheet

package com.game.src.main;
import java.awt.image.*;
public class SpriteSheet {
private BufferedImage image;
/**
 * Constructor for objects of class SpriteSheet
 */
public SpriteSheet(BufferedImage image)
{
    this.image = image;
}

public BufferedImage grabImage(int col, int row, int width, int height)
{
    BufferedImage img = image.getSubimage((col*32) - 32, (row*32) - 32, width, height);
    return img;
}
}

And GameObject():

package com.game.src.main;

import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.LinkedList;

public abstract class GameObject {


protected float x,y;
protected ObjectId id;
protected float velX = 0, velY = 0;

public GameObject(float x, float y, ObjectId id)
{
    this.x = x;
    this.y = y;
    this.id = id;
}   
public abstract void tick(LinkedList<GameObject> object);
public abstract void render(Graphics g);
public abstract Rectangle getBounds();
public float getX()
{
    return x;
}
public  float getY()
{
    return y;
}

public void setX(float x)
{
    this.x =x;
}
public void setY(float y)
{
    this.y = y;
}
public void setVelX(float velX)
{
    this.velX = velX;
}
public void setVelY(float velY)
{
    this.velY = velY;
}

public ObjectId getId()
{
    return id;
}

public void jump(double jumpHeight, boolean canJump)
{
    if (canJump)
        velY -= jumpHeight;
}

}

My project path is:

>1v1
   >src
   >res

This was working before but when I made Player a GameObject it stopped working. Any ideas?

Brandyn
  • 11
  • 2
  • Your image looks to be null. Now it's time to check to find out why. – Hovercraft Full Of Eels Jan 26 '17 at 01:51
  • There is an image in that location in my spreadsheet though. Is it something to do with how I get to the image? – Brandyn Jan 26 '17 at 01:59
  • Listen, you debug this NPE just like you debug any NPE -- by first testing to find out what's null. Have you gone through the answers in the dup yet? If not, you'd better do that first, then debug your program to find out what's throwing the exception, and only then fixing it. First things first. – Hovercraft Full Of Eels Jan 26 '17 at 02:28

0 Answers0