Cursos y Másters | ||
| Inicio Profesores Aulas Testimonios Cursos Masters Tecnologías Cursos Gratuitos Solicitar Información Ofertas de Empleo |
| Página Anterior - Reorganización del código Java | Página Actual - 14 - Fotogramas | Página Siguiente - Fotogramas - II |
| Índice de cursos Java gratuitos |
FotogramasAhora que tenemos un montón de bichos moviéndose por todas partes, vamos a dotarles de animación. En este tipo de videojuegos, así como en muchos otros como por ejemplo de estrategia, de aventura o de rol con perspectiva isométrica, de plataforma, etc. la animación de los monigotes suele ser sinónimo de fotogramas : la imagen del actor va recorriendo una serie sucesiva de imagenes llamadas "fotogramas". Cuantos más fotogramas hay, más suave es la animación del propio bicho En este caso vamos a utilizar los siguientes dos fotogramas, llamados "bicho0.gif" y "bicho1.gif":
Dado que los fotogramas es algo que podemos querer que tenga cualquier objeto de nuestro juego - disparos, bonus, monstruos, etc, añadiremos esa funcionalidad a la clase Actor en lugar de a la clase Monster. La propiedad spriteName desaparece y es sustituida por la propiedad spriteNames, que es una matriz de nombres de gráficos en lugar de un único gráfico. Adicionalmente, el método act() se encarga de incrementar el número de fotograma cada vez:
1 /** 2 * Curso B?sico de desarrollo de Juegos en Java - Invaders 3 * 4 * (c) 2004 Planetalia S.L. - Todos los derechos reservados. Prohibida su reproducci?n 5 * 6 * http://www.planetalia.com 7 * 8 */ 9 package version14; 10 11 import java.awt.Graphics2D; 12 import java.awt.image.BufferedImage; 13 14 public class Actor { 15 protected int x,y; 16 protected int width, height; 17 protected String[] spriteNames; 18 protected int currentFrame; 19 protected Stage stage; 20 protected SpriteCache spriteCache; 21 22 public Actor(Stage stage) { 23 this.stage = stage; 24 spriteCache = stage.getSpriteCache(); 25 currentFrame = 0; 26 } 27 Es interesante que nos fijemos en la forma en que se aumenta el contador de fotogramas : se utiliza un % spriteNames.length para asegurarse que su valor siempre esté entre 0 y el número de fotogramas - 1 Puesto que ahora tenemos funcionalidad en el método act() de Actor, los hijos no pueden sobreescribir ese método sin más, sino que deben acordarse de llamar al método ancestro antes de comenzar a realizar sus propias acciones particulares. Esto hace que la clase Monster quede modificada de la siguiente forma:/
1 /** 2 * Curso B?sico de desarrollo de Juegos en Java - Invaders 3 * 4 * (c) 2004 Planetalia S.L. - Todos los derechos reservados. Prohibida su reproducci?n 5 * 6 * http://www.planetalia.com 7 * 8 */ 9 package version14; 10 11 public class Monster extends Actor { 12 protected int vx; 13 14 public Monster(Stage stage) { 15 super(stage); 16 setSpriteNames( new String[] {"bicho0.gif","bicho1.gif"}); 17 } 18 19 public void act() { 21 x+=vx; 22 if (x < 0 || x > Stage.WIDTH) 23 vx = -vx; 24 } 25 26 public int getVx() { return vx; } 27 public void setVx(int i) {vx = i; }} 28 |
||||||||||||||
¿Quieres ser notificado cuando salan nuevos tutoriales y cursos?. Pulsa aquí
| Actor.java | Invaders.java | Monster.java | SpriteCache.java |
| Stage.java |
| Página Anterior - Reorganización del código Java | Página Actual - 14 - Fotogramas | Página Siguiente - Fotogramas - II |
| Índice de cursos Java gratuitos |
(c) 2004 Planetalia S.L. Todos los derechos reservados. Prohibida su reproducción