Salvo que tengamos un ordenaro excepcionalmente rápido, nos habremos percatado que el programa anterior tiene
un defecto extremadamente molesto y es un parpadeo en el bicho. El parpadeo ocurre porque durante unos instantes
el ojo está viendo la pantalla recién borrada en la que todavía no se ha pintado ningún bicho. Si el ordenador
que tenemos es muy rápido y no podemos apreciarlo, basta en general con aumentar el tamaño de la ventana o utilizar
gráficos más grandes para que el efecto pase a ser apreciable.
Para resolver esta situación utilizaremos una técnica llamada double buffering. Esta técnica
consiste en tener una imagen en memoria del mismo tamaño que el escenario en la cual se hacen todas las operaciones
gráficas. Una vez que el escenario ha sido pintado "fuera de la pantalla" (off-screen), esa
imagen en memoria es volcada encima de la ventana. A esta imagen en memoria se la suele llamar buffer
Invaders.java
1 package version10;
2 /**
3 * Curso B?sico de desarrollo de Juegos en Java - Invaders
4 *
5 * (c) 2004 Planetalia S.L. - Todos los derechos reservados. Prohibida su reproducci?n
6 *
7 * http://www.planetalia.com
8 *
9 */
10
11
12 import java.awt.Canvas;
13 import java.awt.Dimension;
14 import java.awt.Graphics;
15 import java.awt.event.WindowAdapter;
16 import java.awt.event.WindowEvent;
17 import java.awt.image.BufferedImage;
18 import java.net.URL;
19 import java.util.HashMap;
20
21 import javax.imageio.ImageIO;
22 import javax.swing.JFrame;
23 import javax.swing.JPanel;
24
25 public class Invaders extends Canvas {
26 public static final int WIDTH = 640;
27 public static final int HEIGHT = 480;
28 public static final int SPEED = 10;
29
30 public HashMap sprites;
31 public int posX,posY,vX;