On mouseclick fire a rocket! There is no limit to the number of rockets you can fire.

Solution

public class RocketPaddle extends GraphicsProgram {
    
    // constants
    public static final int APPLICATION_HEIGHT = 600;
    private static final double BALL_SIZE = 10;
    private static final int PADDLE_Y = APPLICATION_HEIGHT - 50;
    private static final int PADDLE_WIDTH = 100;
    private static final int PADDLE_HEIGHT = 20;
    
    // the list of rockets
    private ArrayList rocketList;
    private GRect paddle;
    
    public void run() {
        rocketList = new ArrayList();
        paddle = new GRect(0PADDLE_YPADDLE_WIDTHPADDLE_HEIGHT);
        paddle.setFilled(true);
        add(paddle);
        addMouseListeners();
        while(true) {
            animateRockets();
            pause(10);
        }
    }
    
    public void mouseMoved(MouseEvent e){
        double x = e.getX() - PADDLE_WIDTH/2;
        paddle.setLocation(xPADDLE_Y);
    }
    
    public void mousePressed(MouseEvent e) {
        double x = e.getX();
        double y = PADDLE_Y;
        GOval r = new GOval(xyBALL_SIZEBALL_SIZE);
        r.setFilled(true);
        r.setColor(Color.BLUE);
        
        // add the rocket to the screen
        add(r);
        
        // add the rocket to the list
        rocketList.add(r);
    }
    private void animateRockets() {
        // loop over list backwards so that we can safely remove
        // from the list.
        for(int i = rocketList.size() - 1i >= 0i--) {
            GOval oval = rocketList.get(i);
            
            // move the rocket
            oval.move(0-5);
            
            // remove the rocket?
            if(oval.getY() < 0) {
                remove(rocketList.get(i));
                rocketList.remove(i);
            }
        }
    }
}
X