Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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();
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- fpm.setVisible(true);
- }
- });
- }
- @Override
- public void paint(Graphics g) {
- super.paint(g);
- Graphics2D g2d = (Graphics2D) g.create();
- 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);
- }
- public void pintarFantasmaV2(Graphics2D g2d, Color color, int x, int y) {
- g2d.setPaint(color);
- int xBkp = x, yBkp = y;
- GeneralPath gp = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
- // 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
- .fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO, y
- + (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
- RAIO_OLHO << 1));
- g2d.setPaint(Color.BLUE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
- - RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
- - RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
- RAIO_OLHO_CRISTALINO << 1));
- g2d.setPaint(Color.WHITE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO
- + DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
- RAIO_OLHO << 1, RAIO_OLHO << 1));
- g2d.setPaint(Color.BLUE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
- - RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
- + (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
- RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
- }
- public void pintarFantasma(Graphics2D g2d, Color color, int x, int y) {
- g2d.setPaint(color);
- g2d.fill(new Ellipse2D.Float(x, y, TAMANHO_X, TAMANHO_Y));
- g2d.fill(new Rectangle2D.Float(x, y + (TAMANHO_Y >> 1), TAMANHO_X,
- TAMANHO_Y >> 1));
- int xBkp = x;
- g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, 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;
- g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, 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;
- g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, 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 + 1;
- g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, x
- + (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
- + TAMANHO_X_PATA, y + TAMANHO_Y));
- x = xBkp;
- g2d.setPaint(Color.WHITE);
- g2d
- .fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO, y
- + (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
- RAIO_OLHO << 1));
- g2d.setPaint(Color.BLUE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
- - RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
- - RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
- RAIO_OLHO_CRISTALINO << 1));
- g2d.setPaint(Color.WHITE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO
- + DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
- RAIO_OLHO << 1, RAIO_OLHO << 1));
- g2d.setPaint(Color.BLUE);
- g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
- - RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
- + (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
- RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement