public void paint( Graphics g) 
    {
        super.paint(g);
        final Graphics2D g2d = (Graphics2D)g;
        g2d.drawImage(this.craft.getImage(), this.craft.getX(), this.craft.getY(), this);
        if (this.ingame) 
        {
            this.setBackground(Color.BLACK);
            ArrayList ms = craft.getMissiles();
            for (int i = 0; i < ms.size(); i++) 
            {
                Missile m = (Missile)ms.get(i);
                g2d.drawImage(m.getImage(), m.getX(), m.getY(), this);
            }
            for (int i = 0; i < this.aliens.size(); ++i) 
            {
                Alien a = (Alien)this.aliens.get(i);
                if (a.isVisible()) 
                {
                    g2d.drawImage(a.getImage(), a.getX(), (int)a.getY(), this);
                }
                g2d.setColor(Color.WHITE);
                g2d.drawString(new StringBuilder("Aliens left: ").append(this.aliens.size()).toString(), 5, 15);
                g2d.setColor(Color.YELLOW);
                g2d.drawString("Level: " + this.level, 100, 15);
                g2d.setColor(Color.GREEN);
                g2d.drawString("Instructions: ARROWS to move, SPACE to Shoot. GOOD LUCK!!!", 300, 15);
            }
        }
        else if (this.won) 
        {
        	DecimalFormat df = new DecimalFormat("0.00");
            String msg       = "Game Over: You WON!!!";
            String msg1      = "Would you care to play again?";
            String msg2      = "Tap 'R' to reset.";
            String msg3      = "You lasted a Total Time of: " + df.format((double)(this.endTime - this.startTime) * 0.001) + " seconds";
            this.aliens.clear();
            Font small = new Font("Helvetica", 1, 14);
            FontMetrics metr = this.getFontMetrics(small);
            g.setColor(Color.white);
            g.setFont(small);
            g.drawString(msg, (this.B_WIDTH - metr.stringWidth(msg)) / 2, this.B_HEIGHT / 2);
            g.setColor(Color.MAGENTA);
            g.drawString(msg3, (this.B_WIDTH - metr.stringWidth(msg3)) / 2, this.B_HEIGHT / 2 + 20);
            g.setColor(Color.YELLOW);
            g.drawString(msg1, (this.B_WIDTH - metr.stringWidth(msg1)) / 2, this.B_HEIGHT / 2 + 40);
            g.setColor(Color.RED);
            g.drawString(msg2, (this.B_WIDTH - metr.stringWidth(msg2)) / 2, this.B_HEIGHT / 2 + 60);
        }
        else 
        {
        	DecimalFormat df = new DecimalFormat("0.00");
        	String msg       = "Game Over: You LOST.";
            String msg1      = "Would you care to play again?";
            String msg2      = "Tap 'R' to reset.";
            String msg3      = "You lasted a Total Time of: " + df.format((double)(this.endTime - this.startTime) * 0.001) + " seconds and you killed " + this.totalAliensKilled + " Aliens.";
            this.aliens.clear();
            Font small       = new Font("Helvetica", 1, 14);
            FontMetrics metr = this.getFontMetrics(small);
            g.setColor(Color.white);
            g.setFont(small);
            g.drawString(msg, (this.B_WIDTH - metr.stringWidth(msg)) / 2, this.B_HEIGHT / 2);
            g.setColor(Color.MAGENTA);
            g.drawString(msg3, (this.B_WIDTH - metr.stringWidth(msg3)) / 2, this.B_HEIGHT / 2 + 20);
            g.setColor(Color.YELLOW);
            g.drawString(msg1, (this.B_WIDTH - metr.stringWidth(msg1)) / 2, this.B_HEIGHT / 2 + 40);
            g.setColor(Color.RED);
            g.drawString(msg2, (this.B_WIDTH - metr.stringWidth(msg2)) / 2, this.B_HEIGHT / 2 + 60);
        }
        Toolkit.getDefaultToolkit().sync();
        g.dispose();
    }