74 lines
1.5 KiB
Java
74 lines
1.5 KiB
Java
|
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);
|
||
|
}
|
||
|
}
|