Hi I have a project on creating a snake java game and the game is working fine but i need to add some features in it like adding an image of an apple instead of a red dot , same thing with the snake adding an image of a snake and make it move so coud some one please HELP !! 
here is my code : 

package snake;

 
import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Random;
 


import javax.swing.JFrame;
import javax.swing.Timer;
 

public class Snake implements ActionListener, KeyListener  {

public class GameGraphic extends Applet{

}
 
        public static Snake snake;
 
        public JFrame jframe;
 
        public RenderPanel renderPanel;
 
        public Timer timer = new Timer(30, this);
 
        public ArrayList<Point> snakeParts = new ArrayList<Point>();
 
        public static final int UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, SCALE = 10;
 
        public int ticks = 0, direction = DOWN, score, tailLength = 10, time;
 
        public Point head, apple;
 
        public Random random;
 
        public boolean over = false, paused;
 
        public Dimension dim;
        
 
        public Snake() {
                dim = Toolkit.getDefaultToolkit().getScreenSize();
                jframe = new JFrame("Snake");
                jframe.setVisible(true);
                jframe.setSize(805, 700);
                jframe.setResizable(false);
                jframe.setLocation(dim.width / 2 - jframe.getWidth() / 2, dim.height
                                / 2 - jframe.getHeight() / 2);
                jframe.add(renderPanel = new RenderPanel());
                jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                jframe.addKeyListener(this);
                startGame();
        }
 
        public void startGame() {
                over = false;
                paused = false;
                time = 0;
                score = 0;
                tailLength = 1;
                ticks = 0;
                direction = DOWN;
                head = new Point(0, -1);
                random = new Random();
                snakeParts.clear();
                apple = new Point(random.nextInt(79), random.nextInt(66));
                timer.start();
        }
 
        
        public void actionPerformed(ActionEvent arg0) {
                renderPanel.repaint();
                ticks++;
                if (ticks % 2 == 0 && head != null && !over && !paused) {
                        time++;
                        snakeParts.add(new Point(head.x, head.y));
                        if (direction == UP)
                                if (head.y - 1 >= 0 && noTailAt(head.x, head.y - 1))
                                        head = new Point(head.x, head.y - 1);
                                else
                                        over = true;
                        if (direction == DOWN)
                                if (head.y + 1 < 67 && noTailAt(head.x, head.y + 1))
                                        head = new Point(head.x, head.y + 1);
                                else
                                        over = true;
                        if (direction == LEFT)
                                if (head.x - 1 >= 0 && noTailAt(head.x - 1, head.y))
                                        head = new Point(head.x - 1, head.y);
                                else
                                        over = true;
                        if (direction == RIGHT)
                                if (head.x + 1 < 80 && noTailAt(head.x + 1, head.y))
                                        head = new Point(head.x + 1, head.y);
                                else
                                        over = true;
                        if (snakeParts.size() > tailLength)
                                snakeParts.remove(0);
                        if (apple != null) {
                                if (head.equals(apple)) {
                                        score += 10;
                                        tailLength++;
                                        apple.setLocation(random.nextInt(79), random.nextInt(66));
                                }
                               
                        
                        }
                }
        }
 
        public boolean noTailAt(int x, int y) {
                for (Point point : snakeParts) {
                        if (point.equals(new Point(x, y))) {
                                return false;
                        }
                }
                return true;
        }
 
        public static void main(String[] args) {
                snake = new Snake();
        }
 
        @Override
        public void keyPressed(KeyEvent e) {
                int i = e.getKeyCode();
                if ((i == KeyEvent.VK_A || i == KeyEvent.VK_LEFT)  && direction != RIGHT)
                        direction = LEFT;
                if ((i == KeyEvent.VK_D || i == KeyEvent.VK_RIGHT) && direction != LEFT)
                        direction = RIGHT;
                if ((i == KeyEvent.VK_W || i == KeyEvent.VK_UP)  && direction != DOWN)
                        direction = UP;
                if ((i == KeyEvent.VK_S || i == KeyEvent.VK_DOWN) && direction != UP)
                        direction = DOWN;
                if (i == KeyEvent.VK_SPACE)
                        if (over)
                                startGame();
                        else
                                paused = !paused;
        }
 
        public void keyReleased(KeyEvent e) {
        }
 
        public void keyTyped(KeyEvent e) {
        }
 



        protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.setColor(new Color(000));
                g.fillRect(0, 0, 800, 700);
                Snake snake = Snake.snake;
                g.setColor(Color.green);
                for (Point point : snake.snakeParts) {
                        g.fillRect(point.x * Snake.SCALE, point.y * Snake.SCALE,
                                        Snake.SCALE, Snake.SCALE);
                }
                g.fillRect(snake.head.x * Snake.SCALE, snake.head.y * Snake.SCALE,
                                Snake.SCALE, Snake.SCALE);
                g.setColor(Color.RED);
                g.fillRect(snake.apple.x * Snake.SCALE, snake.apple.y * Snake.SCALE,
                                Snake.SCALE, Snake.SCALE);
                
                String string = "Score: " + snake.score + ", Length: "
                                + snake.tailLength + ", Time: " + snake.time / 20;
                g.setColor(Color.white);
                g.drawString(string, (int) (getWidth() / 2 - string.length() * 2.5f),
                                10);
                string = "Game Over!";
                if (snake.over)
                        g.drawString(string,
                                        (int) (getWidth() / 2 - string.length() * 2.5f),
                                        (int) snake.dim.getHeight() / 4);
                string = "Paused!";
                if (snake.paused && !snake.over)
                        g.drawString(string,
                                        (int) (getWidth() / 2 - string.length() * 2.5f),
                                        (int) snake.dim.getHeight() / 4);
        }
}