Advertisement
Guest User

wwwvaniomeurercombr

a guest
Nov 12th, 2009
1,184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.78 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.EventQueue;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.geom.Ellipse2D;
  6. import java.awt.geom.GeneralPath;
  7. import java.awt.geom.QuadCurve2D;
  8. import java.awt.geom.Rectangle2D;
  9.  
  10. import javax.swing.JFrame;
  11.  
  12. /**
  13.  * Pintando fantasminha do PacMan com Java 2D.
  14.  *
  15.  * @author Vânio Meurer
  16.  * @since 10/11/2009 11:38:12
  17.  */
  18. public class FantasmaPacMan extends JFrame {
  19.  
  20.     private static final long serialVersionUID = 8366583475473482894L;
  21.  
  22.     private final static int TAMANHO_X = 100;
  23.     private final static int TAMANHO_Y = 50;
  24.     private final static int TAMANHO_X_PATA = 20;
  25.     private final static int TAMANHO_Y_PATA = 50;
  26.     private final static int DISTANCIA_X_PATA = 6;
  27.     private final static int RAIO_OLHO = 13;
  28.     private final static int RAIO_OLHO_CRISTALINO = 5;
  29.     private final static int DISTANCIA_X_OLHOS = (RAIO_OLHO << 1) + 10;
  30.  
  31.     private final static int EFEITO_ELLIPSE = 23;
  32.     private final static int EFEITO_ELLIPSE_PATA = 10;
  33.  
  34.     public FantasmaPacMan() {
  35.  
  36.         super("Fantasminha Pac Man");
  37.         this.setSize(200, 300);
  38.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  39.         this.setLocationRelativeTo(null);
  40.  
  41.     }
  42.  
  43.     private int move = 50;
  44.  
  45.     public static void main(String[] args) {
  46.  
  47.         final FantasmaPacMan fpm = new FantasmaPacMan();
  48.  
  49.         EventQueue.invokeLater(new Runnable() {
  50.  
  51.             public void run() {
  52.                 fpm.setVisible(true);
  53.             }
  54.         });
  55.  
  56.     }
  57.  
  58.     @Override
  59.     public void paint(Graphics g) {
  60.         super.paint(g);
  61.  
  62.         Graphics2D g2d = (Graphics2D) g.create();
  63.  
  64.         g2d.setPaint(Color.BLACK);
  65.         g2d.fillRect(0, 0, this.getSize().width, this.getSize().height);
  66.  
  67.         pintarFantasma(g2d, Color.RED, move, 50);
  68.  
  69.         pintarFantasmaV2(g2d, Color.MAGENTA, 50, 150);
  70.  
  71.     }
  72.  
  73.     public void pintarFantasmaV2(Graphics2D g2d, Color color, int x, int y) {
  74.  
  75.         g2d.setPaint(color);
  76.  
  77.         int xBkp = x, yBkp = y;
  78.  
  79.         GeneralPath gp = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
  80.  
  81.         // Movendo um pouco a baixo para equivaler a ellipse
  82.         gp.moveTo(x, y + EFEITO_ELLIPSE);
  83.         y += EFEITO_ELLIPSE;
  84.         gp.curveTo(x + 25, yBkp, x + 25 + 50, yBkp, x + TAMANHO_X, y);
  85.         x += TAMANHO_X;
  86.         gp.lineTo(x, y + 30);
  87.         y += 30;
  88.         gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
  89.                 - (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
  90.                 y);
  91.         x -= EFEITO_ELLIPSE_PATA << 1;
  92.         gp.lineTo(x - DISTANCIA_X_PATA, y);
  93.         x -= DISTANCIA_X_PATA;
  94.         gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
  95.                 - (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
  96.                 y);
  97.         x -= EFEITO_ELLIPSE_PATA << 1;
  98.         gp.lineTo(x - DISTANCIA_X_PATA, y);
  99.         x -= DISTANCIA_X_PATA;
  100.         gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
  101.                 - (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
  102.                 y);
  103.         x -= EFEITO_ELLIPSE_PATA << 1;
  104.         gp.lineTo(x - (DISTANCIA_X_PATA + 1), y);
  105.         x -= (DISTANCIA_X_PATA + 1);
  106.         gp.curveTo(x - EFEITO_ELLIPSE_PATA, y + TAMANHO_Y_PATA, x
  107.                 - (EFEITO_ELLIPSE_PATA << 1), y, x - (EFEITO_ELLIPSE_PATA << 1),
  108.                 y);
  109.         gp.closePath();
  110.         g2d.fill(gp);
  111.  
  112.         x = xBkp;
  113.         y = yBkp;
  114.  
  115.         g2d.setPaint(Color.WHITE);
  116.         g2d
  117.                 .fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO, y
  118.                         + (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
  119.                         RAIO_OLHO << 1));
  120.         g2d.setPaint(Color.BLUE);
  121.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
  122.                 - RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
  123.                 - RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
  124.                 RAIO_OLHO_CRISTALINO << 1));
  125.         g2d.setPaint(Color.WHITE);
  126.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO
  127.                 + DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
  128.                 RAIO_OLHO << 1, RAIO_OLHO << 1));
  129.         g2d.setPaint(Color.BLUE);
  130.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
  131.                 - RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
  132.                 + (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
  133.                 RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
  134.  
  135.     }
  136.  
  137.     public void pintarFantasma(Graphics2D g2d, Color color, int x, int y) {
  138.         g2d.setPaint(color);
  139.         g2d.fill(new Ellipse2D.Float(x, y, TAMANHO_X, TAMANHO_Y));
  140.         g2d.fill(new Rectangle2D.Float(x, y + (TAMANHO_Y >> 1), TAMANHO_X,
  141.                 TAMANHO_Y >> 1));
  142.  
  143.         int xBkp = x;
  144.  
  145.         g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, x
  146.                 + (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
  147.                 + TAMANHO_X_PATA, y + TAMANHO_Y));
  148.         x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA;
  149.         g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, x
  150.                 + (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
  151.                 + TAMANHO_X_PATA, y + TAMANHO_Y));
  152.         x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA;
  153.         g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, x
  154.                 + (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
  155.                 + TAMANHO_X_PATA, y + TAMANHO_Y));
  156.         x = x + TAMANHO_X_PATA + DISTANCIA_X_PATA + 1;
  157.         g2d.fill(new QuadCurve2D.Float(x, y + TAMANHO_Y, x
  158.                 + (TAMANHO_X_PATA >> 1), y + TAMANHO_Y + TAMANHO_Y_PATA, x
  159.                 + TAMANHO_X_PATA, y + TAMANHO_Y));
  160.  
  161.         x = xBkp;
  162.  
  163.         g2d.setPaint(Color.WHITE);
  164.         g2d
  165.                 .fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO, y
  166.                         + (TAMANHO_Y >> 1) - RAIO_OLHO, RAIO_OLHO << 1,
  167.                         RAIO_OLHO << 1));
  168.         g2d.setPaint(Color.BLUE);
  169.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
  170.                 - RAIO_OLHO_CRISTALINO, y + (TAMANHO_Y >> 1)
  171.                 - RAIO_OLHO_CRISTALINO, RAIO_OLHO_CRISTALINO << 1,
  172.                 RAIO_OLHO_CRISTALINO << 1));
  173.         g2d.setPaint(Color.WHITE);
  174.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3)) - RAIO_OLHO
  175.                 + DISTANCIA_X_OLHOS, y + (TAMANHO_Y >> 1) - RAIO_OLHO,
  176.                 RAIO_OLHO << 1, RAIO_OLHO << 1));
  177.         g2d.setPaint(Color.BLUE);
  178.         g2d.fill(new Ellipse2D.Float((x + (TAMANHO_X / 3))
  179.                 - RAIO_OLHO_CRISTALINO + DISTANCIA_X_OLHOS, y
  180.                 + (TAMANHO_Y >> 1) - RAIO_OLHO_CRISTALINO,
  181.                 RAIO_OLHO_CRISTALINO << 1, RAIO_OLHO_CRISTALINO << 1));
  182.  
  183.     }
  184.  
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement