import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.QuadCurve2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
/**
* Pintando fantasminha do PacMan com Java 2D.
*
* @author Vānio Meurer
* @since 10/11/2009 11:38:12
*/
public class FantasmaPacMan
extends JFrame {
private static final long serialVersionUID = 8366583475473482894L;
private final static int TAMANHO_X = 100;
private final static int TAMANHO_Y = 50;
private final static int TAMANHO_X_PATA = 20;
private final static int TAMANHO_Y_PATA = 50;
private final static int DISTANCIA_X_PATA = 6;
private final static int RAIO_OLHO = 13;
private final static int RAIO_OLHO_CRISTALINO = 5;
private final static int DISTANCIA_X_OLHOS = (RAIO_OLHO << 1) + 10;
private final static int EFEITO_ELLIPSE = 23;
private final static int EFEITO_ELLIPSE_PATA = 10;
public FantasmaPacMan() {
super("Fantasminha Pac Man");
this.setSize(200, 300);
this.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
}
private int move = 50;
public static void main
(String[] args
) {
final FantasmaPacMan fpm = new FantasmaPacMan();
public void run() {
fpm.setVisible(true);
}
});
}
@Override
super.paint(g);
g2d.
setPaint(Color.
BLACK);
g2d.fillRect(0, 0, this.getSize().width, this.getSize().height);
pintarFantasma
(g2d,
Color.
RED, move, 50
);
pintarFantasmaV2
(g2d,
Color.
MAGENTA, 50, 150
);
}
g2d.setPaint(color);
int xBkp = x, yBkp = y;
// Movendo um pouco a baixo para equivaler a ellipse
gp.moveTo(x, y + EFEITO_ELLIPSE);
y += EFEITO_ELLIPSE;
gp.curveTo(x + 25, yBkp, x + 25 + 50, yBkp, x + TAMANHO_X, y);
x += TAMANHO_X;
gp.lineTo(x, y + 30);
y += 30;
gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
- (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
y);
x -= EFEITO_ELLIPSE_PATA << 1;
gp.lineTo(x - DISTANCIA_X_PATA, y);
x -= DISTANCIA_X_PATA;
gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
- (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
y);
x -= EFEITO_ELLIPSE_PATA << 1;
gp.lineTo(x - DISTANCIA_X_PATA, y);
x -= DISTANCIA_X_PATA;
gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
- (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
y);
x -= EFEITO_ELLIPSE_PATA << 1;
gp.lineTo(x - (DISTANCIA_X_PATA + 1), y);
x -= (DISTANCIA_X_PATA + 1);
gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
- (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
y);
gp.closePath();
g2d.fill(gp);
x = xBkp;
y = yBkp;
g2d.
setPaint(Color.
WHITE);
g2d
+ (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
RAIO_OLHO << 1));
g2d.
setPaint(Color.
BLUE);
- RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
- RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
RAIO_OLHO_CRISTALINO << 1));
g2d.
setPaint(Color.
WHITE);
+ DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
RAIO_OLHO << 1, RAIO_OLHO << 1));
g2d.
setPaint(Color.
BLUE);
- RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
+ (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
}
g2d.setPaint(color);
TAMANHO_Y >> 1));
int xBkp = x;
+ (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
+ TAMANHO_X_PATA, y + TAMANHO_Y));
x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA;
+ (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
+ TAMANHO_X_PATA, y + TAMANHO_Y));
x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA;
+ (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
+ TAMANHO_X_PATA, y + TAMANHO_Y));
x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA + 1;
+ (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
+ TAMANHO_X_PATA, y + TAMANHO_Y));
x = xBkp;
g2d.
setPaint(Color.
WHITE);
g2d
+ (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
RAIO_OLHO << 1));
g2d.
setPaint(Color.
BLUE);
- RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
- RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
RAIO_OLHO_CRISTALINO << 1));
g2d.
setPaint(Color.
WHITE);
+ DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
RAIO_OLHO << 1, RAIO_OLHO << 1));
g2d.
setPaint(Color.
BLUE);
- RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
+ (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
}
}