javasweeper/Face.java
2023-05-24 17:34:39 -07:00

73 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 MouseAdapter() {
@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);
}
});
}
public void setFace(int face) {
this.face = face;
repaint();
}
@Override
public void paintComponent(Graphics gr) {
super.paintComponent(gr);
Graphics2D g = (Graphics2D) gr;
g.drawImage(FACES[face], 0, 0, this);
}
}