Cursos y Másters | ||
| Inicio Profesores Aulas Testimonios Cursos Masters Tecnologías Cursos Gratuitos Galería de Proyectos Solicitar Información |
| Página Anterior - El Jugador | Página Actual - 17 - Controlando el jugador | Página Siguiente - Disparos |
| Índice de cursos Java gratuitos |
Controlando el jugadorLa versión anterior del programa mostraba el jugador pero no permitía que el mismo pudiera ser controlador por el usuario. En esta versión añadiremos la posibilidad de controlar la nave del jugador con el teclado, utilizando para ello todas las teclas del cursor. Aunque podríamos gestionar esto en la clase Invaders, lo más correcto sería delegar la gestión del evento a la clase Player, de forma que el planteamiento que seguiremos es:
Definiremos dos nuevos método en la clase Player llamados keyPressed(...) y keyReleased(...), que serán los encargados de recibir las notificaciones de que ha sido pulsada / soltada una tecla. Con la descripción anterior, la clase Invaders queda como sigue:
1 package version17; 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.Graphics2D; 16 import java.awt.event.KeyEvent; 17 import java.awt.event.KeyListener; 18 import java.awt.event.WindowAdapter; 19 import java.awt.event.WindowEvent; 20 import java.awt.image.BufferStrategy; 21 import java.util.ArrayList; 22 23 import javax.swing.JFrame; 24 import javax.swing.JPanel; 25 Y la clase del jugador pasa a ser:
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 version17; 10 11 import java.awt.event.KeyEvent; 12 13 public class Player extends Actor { 14 protected static final int PLAYER_SPEED = 4; 15 protected int vx; 16 protected int vy; 17 private boolean up,down,left,right; 18 19 20 public Player(Stage stage) { 21 super(stage); 22 setSpriteNames( new String[] {"nave.gif"}); 23 } 24 25 public void act() { 26 super.act(); 27 x+=vx; 28 y+=vy; 29 if (x < 0 || x > Stage.WIDTH) 30 vx = -vx; 31 if (y < 0 || y > Stage.HEIGHT) 32 vy = -vy; 33 } 34 35 public int getVx() { return vx; } 36 public void setVx(int i) {vx = i; } 37 public int getVy() { return vy; } 38 public void setVy(int i) {vy = i; } 39 40 Se puede ver que hemos definido también una constante llamada PLAYER_SPEED que determina la velocidad del jugador, de forma que las teclas únicamente cambian la dirección del movimiento, pero no la velocidad |
||||||||||||||
¿Quieres ser notificado cuando salan nuevos tutoriales y cursos?. Pulsa aquí
| Actor.java | Invaders.java | Monster.java | Player.java |
| SpriteCache.java | Stage.java |
| Página Anterior - El Jugador | Página Actual - 17 - Controlando el jugador | Página Siguiente - Disparos |
| Índice de cursos Java gratuitos |
(c) 2004 Planetalia S.L. Todos los derechos reservados. Prohibida su reproducción