El siguiente paso que necesitamos de forma imprescindible es poder pintar cosas encima de la ventana.
Esto nos genera un problema. Para pintar, según lo que conocemos hasta ahora, necesitamos sobreescribir el método
paint de "alguien" - de alguna ventana, o de algún panel.. Sin embargo, ni la clase Invaders es una ventana ni
tampoco podríamos hacer nada si lo fuese, ya que la ventana que se muestra es otra que creamos dentro del constructor
de Invaders.
Una posible solución es hacer descender nuestra clase Invaders de la clase Canvas - la
clase ancestro por excelencia para los componentes visuales. Siendo un Canvas, heredamos el método paint() que podemos
sobreescribir. ¿Y cómo hacer la asociación entre nuestra clase y la ventana que estamos manejando? Sencillo : siendo
Canvas un descendiente de Component , podemos añadirnos
al panel de la ventana como un componente más:
Invaders.java
1 package version03;
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.Color;
14 import java.awt.Dimension;
15 import java.awt.Graphics;
16 import java.awt.event.WindowAdapter;
17 import java.awt.event.WindowEvent;
18
19 import javax.swing.JFrame;
20 import javax.swing.JPanel;
21
22 public class Invaders extends Canvas {
23 public static final int WIDTH = 800;
24 public static final int HEIGHT = 600;
25
26 public Invaders() {
27 JFrame ventana = new JFrame("Invaders");