This site requires JavaScript, please enable it in your browser!
Greenfoot back
Aftermath
Aftermath wrote ...

2018/12/5

Cannot add actor into world.

Aftermath Aftermath

2018/12/5

#
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Ball here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Ball extends Actor
{
    private int direction, speed;
    private int deltaX;
    private int deltaY;
    private int score = 0;
    private int scheck = 1;
    /**
     * Act - do whatever the Ball wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        move(); //#Runs the Move() statement
        start(); //#Runs the Start() statement
        checkOut(); //#Runs the Checkout() statement
    }  

    public void start() //Start() statement
    {
        if (Greenfoot.isKeyDown("space")) //#Checking condition for If space is pressed.
        {
            if (scheck == 1)
            {
                deltaY = 7; //#Sets the movement to 7 y.
                scheck = 0;
            }
        }
    }

    public void move()
    {
        setLocation (getX() + deltaX, getY() + deltaY); //#Sets the X and Y speeds
        checkpaddle(); //#Runs the CheckPaddle() statement
        checkwall(); //#Runs the CheckWall() statement
    }

    /**
     * Check whether we've hit one of the three walls. Reverse direction if necessary.
     */
    private void checkwall() //#CheckWall() statement
    {
        if (getX() == 0 || getX() == getWorld().getWidth()-1) {
            deltaX = -deltaX;
        }
        if (getY() == 0) {
            deltaY = -deltaY;
        }
    }

    private void checkpaddle()
    {
        Actor paddle = getOneIntersectingObject(Paddle.class);
        if (paddle != null) {
            deltaY = -deltaY;
            int offset = getX() - paddle.getX();
            deltaX = deltaX + (offset/10);
            if (deltaX > 7) {
                deltaX = 7;
            }
            if (deltaX < -7) {
                deltaX = -7;
            }
        }
    }

    public void move(int dist)
    {
        setLocation (getX() + dist, getY());
    }

    private void checkOut()
    {
        if (getY() == getWorld().getHeight()-1) {
            getWorld().removeObject(this);
            scheck = 1;
            respawn();
            //score++;
        }
        else if (getY() == getWorld().getHeight()-500) {
            getWorld().removeObject(this);
            scheck = 1;
            respawn();
            //score++;
        }
    }
    private void respawn()
    {
        getWorld().addObject(new Ball(), 350, 250);
    }
    
}

Returns
java.lang.NullPointerException
	at Ball.respawn(Ball.java:98)
	at Ball.checkOut(Ball.java:85)
	at Ball.act(Ball.java:24)
	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)
Aftermath Aftermath

2018/12/5

#
Solved
You need to login to post a reply.