When I run my Cruiser into my PIrate, the pirate should re spawn, or go back to the right of the screen. But the game stops when the cruiser runs into the pirate, giving me an error.My cruiser class
My pirate class
java.lang.NullPointerException at Pirate.reSpawn(Pirate.java:41) at Cruiser.rekted(Cruiser.java:167) at Cruiser.act(Cruiser.java:46) at greenfoot.core.Simulation.actActor(Simulation.java:604) at greenfoot.core.Simulation.runOneLoop(Simulation.java:562) at greenfoot.core.Simulation.runContent(Simulation.java:221) at greenfoot.core.Simulation.run(Simulation.java:211)
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Cruiser here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Cruiser extends Actor
{
private static int count;
Pirate pirate;
private int gunHeat = 0;
private int lives;
private int timer = 0;
GreenfootImage image1;
GreenfootImage image;
public Cruiser(Pirate pirate)
{
GreenfootImage image = getImage();
GreenfootImage image1 = new GreenfootImage("Boost.png");
image.scale(100, 45);
this.image = image;
lives = 3;
this.pirate = pirate;
this.image1 = image1;
count=0;
}
/**
* Act - do whatever the Cruiser wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
motionControl();
//stayInWorld();
boost();
fire();
stayInWorldY1();
stayInWorldY();
gunHeat--;
isShot();
rekted();
fuelLevel();
moreFuel();
}
private void motionControl()
{
if (getX()>0 && getX() < getWorld().getWidth())
{
if(Greenfoot.isKeyDown("up"))
{
setLocation(getX(),getY()-3);
}
if(Greenfoot.isKeyDown("down"))
{
setLocation(getX(),getY()+3);
}
if(Greenfoot.isKeyDown("right"))
{
setLocation(getX()+3,getY());
}
if(Greenfoot.isKeyDown("left"))
{
setLocation(getX()-3,getY());
}
} else
{
setLocation(50, getY());
}
}
private void stayInWorldY()
{
if (getY()>0)
{
if(Greenfoot.isKeyDown("up"))
{
setLocation(getX(),getY()-3);
}
if(Greenfoot.isKeyDown("down"))
{
setLocation(getX(),getY()+3);
}
if(Greenfoot.isKeyDown("right"))
{
setLocation(getX()+3,getY());
}
if(Greenfoot.isKeyDown("left"))
{
setLocation(getX()-3,getY());
}
}
else
{
setLocation(getX(), 550);
}
}
private void stayInWorldY1()
{
if (getY()<getWorld().getHeight())
{
if(Greenfoot.isKeyDown("up"))
{
setLocation(getX(),getY()-3);
}
if(Greenfoot.isKeyDown("down"))
{
setLocation(getX(),getY()+3);
}
if(Greenfoot.isKeyDown("right"))
{
setLocation(getX()+3,getY());
}
if(Greenfoot.isKeyDown("left"))
{
setLocation(getX()-3,getY());
}
}
else
{
setLocation(getX(), 50);
}
}
//public void stayInWorld()
// {
// if(getX()<10 || getX()>790)
// {
// setLocation(50, getY());
//}
// }
//ASK ABOUT HOW TO GET A TIME LIMIT FOR THIS
public void boost()
{
if (Greenfoot.isKeyDown("shift"))
{
setLocation(getX()+5,getY());
getImage();
setImage(image1);
}else
{
getImage();
setImage(image);
}
}
public void rekted()
{
if(getOneIntersectingObject(Pirate.class) !=null && Greenfoot.isKeyDown("shift") )
{
this.pirate.reSpawn();
}
}
private void fire()
{
if (Greenfoot.isKeyDown("space") && gunHeat <= 0)
{
getWorld().addObject(new Missile(), getX()+45,getY());
Greenfoot.playSound("shot1.wav");
gunHeat = 25;
}
}
public void removeLives()
{
Space space = (Space) getWorld();
Score score = space.getScore();
score.updateScore(score.getPoints(), score.getPower(), "Lives: " + lives);
}
private void isShot()
{
Actor enemyLaser = getOneIntersectingObject(EnemyLaser.class);
if (enemyLaser !=null)
{
getWorld().removeObject(enemyLaser);
getWorld().addObject(new Explosion(), getX(), getY());
lives--;
if (lives <= 0)
{
Space space = (Space) getWorld();
space.gameOver();
}else
{
removeLives();
}
}
}
public void fuelLevel()
{
timer++;
if(timer>=100)
{
Space space = (Space) getWorld();
Score score = space.getScore();
score.updateScore(score.getPoints(), score.getPower()-1, score.getLives());
timer = 0;
if (score.getPower() <= 0)
{
space.gameOver();
}
}
}
public void moreFuel()
{
Actor powerUp = getOneIntersectingObject(PowerPod.class);
if (powerUp !=null)
{
getWorld().removeObject(powerUp);
Space space = (Space) getWorld();
Score score = space.getScore();
score.updateScore(score.getPoints(), score.getPower()+10, score.getLives());
if(score.getPower() >100)
{
score.updateScore(score.getPoints(), 100, score.getLives());
}
}
}
// public void pirateCollision()
// {
// Actor pirate = getOneIntersectingObject(Pirate.class);
// if (pirate !=null)
// {
// Space space = (Space) getWorld();
// space.gameOver();
// }
// }
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.lang.*;
/**
* Write a description of class Pirate here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Pirate extends Actor
{
private static int count;
public Pirate()
{
count = 0;
}
/**
* Act - do whatever the Pirate wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
move();
isHit();
fireShot();
}
private void move()
{
setLocation(getX()-3, getY());
if (getX() < 10)
{
reSpawn();
}
}
public void reSpawn()
{
int distance = Greenfoot.getRandomNumber(100);
setLocation(getWorld().getWidth() + distance, Greenfoot.getRandomNumber(600));
if (getOneIntersectingObject(Pirate.class) !=null)
{
reSpawn();
}
}
private void isHit()
{
Actor missile=getOneIntersectingObject(Missile.class);
if(missile !=null)
{
getWorld().removeObject(missile);
count++;
addPoints();
getWorld().addObject(new Explosion(), getX(), getY());
if(Greenfoot.getRandomNumber(10) <1)
{
getWorld().addObject(new PowerPod(), getX(), getY());
}
reSpawn();
//some methods excluded
}
}
private boolean inRange()
{
Space world = (Space) getWorld();
Cruiser cruiser = world.getCruiser();
int range = Math.abs(cruiser.getY() - getY());
return (range > 0 && range <20);
}
public void fireShot()
{
if(Greenfoot.getRandomNumber(1000)<50)
{
if (inRange())
{
getWorld().addObject(new EnemyLaser(),getX(),getY());
}
}
}
public void addPoints()
{
Space space = (Space) getWorld();
Score score = space.getScore();
score.updateScore("Score: " + count, score.getPower(), score.getLives());
}
}
