Introduciendo la nave en VistaJuego

El siguiente paso consiste en dibujar la nave que controlará el usuario para destruir los asteroides.

 

Práctica: Introduciendo la nave en VistaJuego

1.     Declara las siguientes variables al comienzo de la clase VistaJuego:

 

// //// NAVE //////
   private Grafico nave; // Gráfico de la nave
   private int giroNave; // Incremento de dirección
   private float aceleracionNave; // aumento de velocidad
   // Incremento estándar de giro y aceleración
   private static final int PASO_GIRO_NAVE = 5;
   private static final float PASO_ACELERACION_NAVE = 0.5f;

Algunas de estas variables serán utilizadas en el siguiente capítulo.

 

2.     En el constructor de la clase instancia la variable drawableNave de forma similar como se ha hecho endrawableAsteroide.

3.     Inicializa también en el constructor la variable nave de la siguiente forma:

nave = new Grafico(this, drawableNave);

4.     En el método onSiceChange() posiciona la nave justo en el centro de la vista.

5.     En el método onDraw() dibuja la nave en el Canvas.

6.     Ejecuta la aplicación. La nave ha de aparecer centrada:

7.     Si cuando situamos los asteroides, alguno coincide con la posición de la nave, el jugador no tendrá ninguna opción de sobrevivir. Sería más interesante asegurarnos de que al posicionar los asteroides estos se encuentran a una distancia adecuada a la nave, y en caso contrario tratar de obtener otra posición. Para conseguirlo puedes utilizar el siguiente código en sustitución de las dos líneas asteroide.setCenX(…) y asteroide.setCenY(…).

do {
       asteroide.setCenX(int)Math.random ()*ancho);
       asteroide.setCenY(int)Math.random ()*alto);
} while(asteroide.distancia(nave) < (ancho+alto)/5);

 

Ejercicio paso a paso: Evitando que VistaJuego cambie su representación con el dispositivo en horizontal y en vertical

1.     Ejecuta la aplicación

2.     Cambia de orientación la pantalla del dispositivo. En el emulador se consigue pulsando la tecla Ctrl-F11.

3.     Observa cómo cada vez, se reinicializa la vista, regenerando los asteroides. Esto nos impediría jugar de forma adecuada. Para solucionarlo edita AndroidManifet.xml. En la lengüeta Application selecciona la actividad Juego. En los parámetros de la derecha selecciona en Screen orientation: landscape.

4.     Ejecuta de nuevo la aplicación. Observa como la actividad Juego será siempre representada en modo horizontal, de forma independiente a la posición del teléfono.

5.     Abre de nuevo las propiedades de la actividad Juego. En Theme selecciona el valor@android:style/Theme.NoTitleBar.Fullscreen. Este tema visualizará la vista ocupando toda la pantalla, sin la barra de notificaciones ni el nombre de la aplicación.

6.     Si en Theme pulsas el botón Browse… y seleccionas el botón circular System Resources puedes ver una lista de estilos definidos en el sistema.

 

NOTA. En algunas instalaciones esta lista puede que no te funcione.

7.     Ejecuta la aplicación en un terminal real y verifica el resultado.

NOTA: en un emulador si cambias la orientación (Crtl-F11) esta cambiará igualmente. Se trata de un error de simulación, al no soportar esta configuración.

 

{jcomments on}