import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Face extends JComponent { public static final int SIZE = 26; public static final int HAPPY_INDEX = 0; public static final int SHOCKED_INDEX = 1; public static final int DEAD_INDEX = 2; public static final int COOL_INDEX = 3; public static final int PRESSED_INDEX = 4; private final Canvas GAME_CANVAS; private final Image[] FACES; private int face; private int unpressedFace; private boolean pressed; private boolean mouseOver; public Face(Canvas gameCanvas, Image[] faces) { FACES = faces; GAME_CANVAS = gameCanvas; face = HAPPY_INDEX; pressed = false; mouseOver = false; setPreferredSize(new Dimension(SIZE, SIZE)); addMouseListener(new MouseListener() { @Override public void mousePressed(MouseEvent e) { pressed = true; unpressedFace = face; setFace(PRESSED_INDEX); } @Override public void mouseReleased(MouseEvent e) { pressed = false; if (mouseOver) { setFace(HAPPY_INDEX); GAME_CANVAS.restart(); } } @Override public void mouseEntered(MouseEvent e) { mouseOver = true; if (pressed) setFace(PRESSED_INDEX); } @Override public void mouseExited(MouseEvent e) { mouseOver = false; if (pressed) setFace(unpressedFace); } @Override public void mouseClicked(MouseEvent e) { } }); } public void setFace(int face) { this.face = face; repaint(); } @Override public void paintComponent(Graphics g) { g.drawImage(FACES[face], 0, 0, this); } }