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 - Barra de estado Página Actual - 22 - Puntuación   Página Siguiente - Muriendo
  Índice de cursos Java gratuitos  

Puntuación

(c) Alexander Hristov

El paso que daremos a continuación es prácticamente trivial. Cuando matamos a un monstruo, queremos que nuestra puntuación aumente en - por ejemplo - 20 puntos. Este cambio lo haremos en el método de la clase Monster que se llama cuando ocurre una colisión. Sin embargo hay un pequeño problema y es que la puntuación es un atributo del jugador, y la clase Monster no tiene acceso a esta variable. Dado que podemos necesitar acceder a la instancia del jugador desde multitud de sitios distintos, por ejemplo para aumentar el número de bombas, para disminuir los escudos, etc., lo que haremos es añadir un método a la clase Stage para obtener a la instancia del jugador desde cualquier punto del programa


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 version22;
10    
11    import java.awt.image.ImageObserver;
12    
13    public interface Stage extends ImageObserver {
14      public static final int WIDTH=640;
15      public static final int HEIGHT=480;
16      public static final int PLAY_HEIGHT = 400; 
17      public static final int SPEED=10;
18      public SpriteCache getSpriteCache();
19      public void addActor(Actor a);
20 public Player getPlayer();
21 } 22

Por supuesto este método hay que implementarlo en la clase Invaders:


           . . .  
81      
82      public Player getPlayer() {
83        return player;
84      }
85      
           . . .  

Ahora que podemos obtener una referencia al jugador, utilizamos este método para aumentar la puntuación cada vez que un monstruo es destruido:


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 version22;
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        setFrameSpeed(35);
18      }
19      
20      public void act() {
21        super.act();
22        x+=vx;
23        if (x < 0 || x > Stage.WIDTH)
24          vx = -vx;
25      }
26    
27      public int getVx() { return vx; }
28      public void setVx(int i) {vx = i; }
29      
30      public void collision(Actor a) {
31        if (a instanceof Bullet || a instanceof Bomb) {
32          remove();
33 stage.getPlayer().addScore(20);
34 } 35 } 36 } 37


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


Lista de archivos Java del programa en este paso

Actor.java Bomb.java Bullet.java Invaders.java
Monster.java Player.java SpriteCache.java Stage.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 - Barra de estado Página Actual - 22 - Puntuación   Página Siguiente - Muriendo
  Índice de cursos Java gratuitos  

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