how do I fix this?
java.lang.NullPointerException
at Worldy.StareX(Worldy.java:96)
at enemyTankHead.Controll(enemyTankHead.java:28)
at enemyTankHead.act(enemyTankHead.java:23)
at greenfoot.core.Simulation.actActor(Simulation.java:565)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:523)
at greenfoot.core.Simulation.runContent(Simulation.java:213)
at greenfoot.core.Simulation.run(Simulation.java:203)
this is my code:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Color; import java.awt.Dimension; import java.awt.Font; /** * Write a description of class Worldy here. * * @author (your name) * @version (a version number or a date) */ public class Worldy extends Scrollworld implements ActionListener { public static final Font MED_FONT = new Font("SansSerif", Font.BOLD, 50); private Button startBtn; private Button onOffBtn; private boolean enabled = true; private Border redBorder = new LineBorder(Color.RED, 3); private Border blueBorder = new LineBorder(Color.BLUE, 3); private int L=0; private int T=0; private int X; private int Y; public tankBase tank; public enemyTankHead tH; /** * Constructor for objects of class Worldy. * */ public Worldy() { super(2500, 2500, 600, 600, 1250, 1250, 1); Level(1); } public void Level(int l) { if(l==1){ menuSetup(); } if(l==2){ removeObject(startBtn); newBackground("rivets.jpg"); addObject(new tankBase(),300,300); addObject(new tankHead(),300,300); } L=l; } public void act() { if(L==2){ if(T==0){ X=Greenfoot.getRandomNumber(2416)+42; Y=Greenfoot.getRandomNumber(2416)+42; addObject(new enemyTankBase(),X,Y); addObject(new enemyTankHead(),X,Y); T=2000; }else{ T--; } } } public void done(int level) { Level(level+1); } public void menuSetup() { newBackground("Wall.jpg"); startBtn = new Button(new GreenfootImage("roundedbtn-up.png"), new GreenfootImage("roundedbtn-down.png"), new GreenfootImage("roundedbtn-hover.png")); startBtn.setForeground(Color.BLACK); startBtn.setText("Start"); startBtn.setSize(new Dimension(200, 65)); startBtn.setFont(MED_FONT); startBtn.setID(1008); startBtn.addActionListener(this); addObject(startBtn, 300, 300); } public void actionPerformed(GUIComponent c) { if (c != onOffBtn) { done(1); } else { enabled = !enabled; startBtn.setEnabled(enabled); if (enabled) { c.setText("Disable\nComponents"); } else { c.setText("Enable\nComponents"); } } } public int StareX() { return tank.getX(); } public int StareY() { return tank.getY(); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class tankHead here. * * @author (your name) * @version (a version number or a date) */ public class enemyTankHead extends Mover { public int shotTimer=0; private GreenfootSound rotate; private GreenfootSound shoot; public enemyTankHead() { rotate = new GreenfootSound("Motor.wav"); rotate.setVolume(70); shoot = new GreenfootSound("Bang.wav"); shoot.setVolume(80); } public void act() { Controll(); } public void Controll() { Worldy worldy = (Worldy) getWorld(); turnTowards(worldy.StareX(),worldy.StareY()); if(Greenfoot.isKeyDown("left")){ rotate.play(); }else if(Greenfoot.isKeyDown("right")){ rotate.play(); }else{ rotate.pause(); } if (shotTimer > 0) { shotTimer--; } else if(Greenfoot.isKeyDown("space")) { Fire(); shotTimer = 30; shoot.play(); } Actor base; base = getOneIntersectingObject (enemyTankBase.class); setLocation(base.getX(),base.getY()); } public void Fire() { Bullet b = new Bullet(); getWorld().addObject(b,getX(),getY()); b.getImage().scale(5,5); b.setRotation(getRotation()); b.move(50); } }