Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Asteroid

34 Views Asked by At

I'm writing a program that will be part one of an asteroid game and will make the asteroids for the game. I seem to be having some trouble getting anything to be shown. when I run the program the GUI shows up and when i hit the "start" button I get the following errors:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at blobzx.SandBox$1.actionPerformed(SandBox.java:82)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)enter code here

I'm thinking something is not initialized correctly but I can't seem to find anything

thank you

 package asteroidfield;
    import java.awt.Point;
    import blobzx.*;
    import java.util.Random;

    class Asteroidfield{

       AsteroidField className = new AsteroidField();
        } 

    public class Asteroid extends PolyBlob {

       public static Random random = new Random();

        public Asteroid(int x, int y, double r) {
            super(x=-100, y=-100, r);
        }

        public void Asteroid (int idx, int jdx, double rot){

            //PolyBlob start off location


            setDelta(idx, jdx);

            //Creating a variable that stores the number of sides
            int num_sides = random.nextInt(4)+5;

            //Creating a variable for pixels in diameter
            int poly_pixels = random.nextInt(20)+10;

            //Declare arrays
            int[] xd = new int [-100];
            int[] yd = new int [-100];
            double[] angle = new double [1];

           //divide num_side by 2pi and choose random angle for each
            for(int m=0; m<num_sides; m++){
                double reg_vert = (num_sides/(Math.PI * 2));
                angle[m] = (m*reg_vert)+(Math.random()*reg_vert);
            }

            //Creating random distance for vertice
            //Get relative x and y coordinates from BlobUtils
            for (int n=0; n<num_sides; n++){
                int vert_dis = random.nextInt(4)+5;
                Point rp = BlobUtils.rotatePoint(vert_dis, angle[n]);
                xd[n] = rp.x;
                yd[n] = rp.y;
            }
            //Instance method from PolyBlob class (set x any y vectices for polygon)
            setPolygon(xd, yd);
        }
    }  

And here is the second class


package asteroidfield;
import blobzx.*;
import java.util.Random;


class AsteroidField implements BlobGUI{

 public static void main(String[] args) {
     new AsteroidField();
 }
    Random random;

    //Create sandbox
    SandBox sb = new SandBox();

    AsteroidField() {
        this.random = new Random();
    }

    //Set sandboxmode.flow(asteroid would appear on the other
    //side if it flows out of bound
    //Set the frame rate to 15
    public void init(){
       sb.setSandBoxMode(SandBoxMode.FLOW);
       sb.setFrameRate(15);
    }

    //Create generate() method
    //idx and idy determine the velocity of asteroids
    //declare and initialize rot for rotation
    //PolyBlob creates diamond shaped blob at idx, idy
    //Add asteroid to sandbox

 @Override
    public void generate(){

        for (int i=0; i<20; i++){
            int idx = random.nextInt(6)-3;
            int idy = random.nextInt(6)-3;
            double rot = (random.nextInt(2)-1)*.1;
            PolyBlob b = new Asteroid(idx, idy, rot);
            sb.addBlob(b);
        }

        SandBox.simulate(sb);
    }
}
0

There are 0 best solutions below