Planetalia - Cursos

Cursos y Másters

Inicio    Profesores    Aulas    Testimonios    Cursos    Masters    Tecnologías    Cursos Gratuitos    Galería de Proyectos    Solicitar Información   

Curso - Programación de un Space Invaders en Java

  Página Anterior - Primeros pegotes sobre la ventana Página Actual - 04 - Primeras imágenes   Página Siguiente - Optimizando la carga de imágenes
  Índice de cursos Java gratuitos  

Primeras imágenes

(c) Alexander Hristov

Como pretendemos dar al juego un aspecto algo vistoso, está claro que no vamos a poder conformarnos con pintar los gráficos mediante las herramientas de Graphics2D de Java. Por ello los gráficos deben ser imágenes externas que iremos cargando según vayamos necesitando

El siguiente paso consistirá en cargar una imagen y mostrarla sobre la ventana. Para poder tener transparencias sin complicaciones vamos a utilizar para los bichos imágenes en formato .gif. Para cargar la imagen utilizaremos la clase ImageIO , existente desde el JDK 1.4

La imagen a cargar se llamará bicho.gif y debe estar en un subdirectorio llamado "res" (recursos en inglés) que debe colgar del directorio del proyecto (pero no del directorio del paquete). Es decir, si la clase está en c:\planetalia\curso\java\version04\Invaders.class, entonces el subdirectorio de recursos debe estar en c:\planetalia\curso\java\res\):

El gráfico en concreto es este:

Bicho para el videojuego de java


1     package version04;
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    
20    import javax.imageio.ImageIO;
21    import javax.swing.JFrame;
22    import javax.swing.JPanel;
23    
24    public class Invaders extends Canvas {
25      public static final int WIDTH = 800;
26      public static final int HEIGHT = 600;
27      
28      
29      public Invaders() {
30        JFrame ventana = new JFrame("Invaders");
31        JPanel panel = (JPanel)ventana.getContentPane();
32        setBounds(0,0,WIDTH,HEIGHT);
33        panel.setPreferredSize(new Dimension(WIDTH,HEIGHT));
34        panel.setLayout(null);
35        panel.add(this);
36        ventana.setBounds(0,0,WIDTH,HEIGHT);
37        ventana.setVisible(true);
38        ventana.addWindowListener( new WindowAdapter() {
39          public void windowClosing(WindowEvent e) {
40            System.exit(0);
41          }
42        });
43      }
44      
45      public BufferedImage loadImage(String nombre) {
46 URL url=null; 47 try { 48 url = getClass().getClassLoader().getResource(nombre); 49 return ImageIO.read(url); 50 } catch (Exception e) { 51 System.out.println("No se pudo cargar la imagen " + nombre +" de "+url); 52 System.out.println("El error fue : "+e.getClass().getName()+" "+e.getMessage()); 53 System.exit(0); 54 return null; 55 } 56 } 57 58
59 public void paint(Graphics g) { 60 BufferedImage bicho = loadImage("res/bicho.gif");
61 g.drawImage(bicho, 40, 40,this);
62 } 63 64 public static void main(String[] args) { 65 Invaders inv = new Invaders(); 66 } 67 } 68

Se puede ver que la gestión de errores es inexistente : cualquier fallo en la carga de la imagen hace que el programa se cierre. Intentaremos mejorar esto posteriormente.

También es interesante señalar que en lugar de poner una ruta de archivo "a pedal" utilizamos getClass().getClassLoader().getResource(...), que permite obtener una URL apuntando a un subdirectorio relativo al sitio del cual fue cargada la clase. Esto permite que nuestro programa funcione de forma transparente si luego decidimos convertirlo en applet o en programa autoejecutable de Java utilizando WebStart.

El resultado de este programa es el siguiente:

Tutorial Space Invaders en Java



¿Quieres ser notificado cuando salan nuevos tutoriales y cursos?. Pulsa aquí


Lista de archivos Java del programa en este paso

Invaders.java      

Lista de recursos

bicho.gif bicho0.gif bicho1.gif bicho2.gif
bombD.gif bombDL.gif bombDR.gif bombL.gif
bombR.gif bombU.gif bombUL.gif bombUR.gif
disparo.gif disparo0.gif disparo1.gif disparo2.gif
explosion.wav misil.gif missile.wav musica.wav
nave.gif oceano.gif photon.wav test.gif
Thumbs.db      

  Página Anterior - Primeros pegotes sobre la ventana Página Actual - 04 - Primeras imágenes   Página Siguiente - Optimizando la carga de imágenes
  Índice de cursos Java gratuitos  

(c) 2004 Planetalia S.L. Todos los derechos reservados. Prohibida su reproducción