Hi! I know what a null pointer exception is, but I don't know why my code is getting that error. Please help!!
Basically, the cat class steals jewels from the thief class and assigns the jewel a rancation.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Thief here. * * @author (your name) * @version (a version number or a date) */ public class Thief extends Actor { public int jewelCount = 0; private int speed = 3; private int health = 3; int currentlvl; boolean isCaught = false; boolean hasLost = false; private GreenfootImage rR = new GreenfootImage("robberRight.png"); private GreenfootImage rL = new GreenfootImage("robberLeft.png"); public Thief(int a) { currentlvl = a; } /** * Act - do whatever the Thief wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { setImage(rR); go(); ladder(); collectJewel(); nextLvl(); getCaught(); loseHealth(); die(); } public void go() { if (Greenfoot.isKeyDown("right")) { setImage(rR); setLocation(getX() + speed, getY()); } if (Greenfoot.isKeyDown("left")) { setImage(rL); setLocation(getX() - speed, getY()); } } public void eatCoin() { Actor coin; coin = getOneObjectAtOffset(0, 0, Coin.class); if (coin != null) { World world; world = getWorld(); world.removeObject(coin); } } public boolean onPlatform() { Actor below = getOneObjectAtOffset (0, getImage().getHeight()/2, Platform.class); return below != null; } public void collectJewel() { Actor j = getOneObjectAtOffset(0, 0, Jewel.class); if (j != null) { jewelCount ++; getWorld().removeObject(j); } } public int getJewelCount() { return jewelCount; } public void die() { if (health == 0) { Greenfoot.setWorld(new GameOver()); } } public void ladder() { Actor ladder; ladder = getOneObjectAtOffset(0, 5, Ladder.class); if (ladder != null) { if (Greenfoot.isKeyDown("up")) { setLocation(getX(), getY() - 3); } } Actor ladderd; ladderd = getOneObjectAtOffset(0, 42, Ladder.class); if (ladderd != null) { if (Greenfoot.isKeyDown("down")) { setLocation(getX(), getY() + 3); } } } public boolean getCaught() { Actor po; po = getOneObjectAtOffset(0, 0, PoliceOfficer.class); if (po != null) { isCaught = true; } return isCaught; } public void loseHealth() { if (isCaught) { health--; restartlvl(); } } public boolean touchDoor() { Actor door = getOneObjectAtOffset(-5, 0, Door.class); if (door != null) { return true; } return false; } public void nextLvl() { if (jewelCount == 3 && touchDoor()) { switch (currentlvl) { case 0: Greenfoot.setWorld(new StartMenu()); break; case 1: Greenfoot.setWorld(new lvl_2()); break; case 2: Greenfoot.setWorld(new lvl_3()); break; case 3: Greenfoot.setWorld(new lvl_4()); break; case 4: Greenfoot.setWorld(new lvl_5()); break; } } } public void restartlvl() { if (getHealth() != 0) { switch (currentlvl) { case 0: Greenfoot.setWorld(new StartMenu()); health = getHealth(); break; case 1: Greenfoot.setWorld(new lvl_1()); health = getHealth(); break; case 2: Greenfoot.setWorld(new lvl_2()); health = getHealth(); break; case 3: Greenfoot.setWorld(new lvl_3()); health = getHealth(); break; case 4: Greenfoot.setWorld(new lvl_4()); health = getHealth(); break; case 5: Greenfoot.setWorld(new lvl_5()); health = getHealth(); break; } } else { die(); } } public int getHealth() { return health; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Cat here. * * @author (your name) * @version (a version number or a date) */ public class Cat extends Enemy { GreenfootImage catR = new GreenfootImage("catRight.png"); GreenfootImage catL = new GreenfootImage("catLeft.png"); private int r = Greenfoot.getRandomNumber(10); private Thief theThief; private Jewel theJewel; /** * Act - do whatever the Cat wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { go(); if (isTouching(Thief.class)) { stealJewel(); } } public void go() { if (r >= 5) { goRight(); } if (r <= 4) { goLeft(); } } public void goLeft() { setImage(catL); setLocation(getX() - 2, getY()); if (getX() <= 20) { r = 5; } } public void goRight() { setImage(catR); setLocation(getX() + 2, getY()); if (getX() >= 780) { r = 4; } } public void stealJewel() { Thief thief = getThief(); Jewel jewel = getJewel(); int num = thief.getJewelCount(); num --; int x = Greenfoot.getRandomNumber(800); int y = Greenfoot.getRandomNumber(600); jewel.setLocation(x, y); } public Thief getThief() { return theThief; } public Jewel getJewel() { return theJewel; } }