Codificar un juego tipo “Space Invaders” para Android: Parte 8

Implementando la clase DefenceBrick

La clase DefenceBrick es muy simple. Tiene una variable booleana RectF y otra isVisible. En el constructor, el width y el height son inicializados basados en la resolución de la pantalla, como todos los otros objetos del juego. También declaramos e inicializamos una variable brickPadding a 1, una variable shelterPadding a un noveno del ancho de la pantalla y la variable startHeight para el primer ladrillo de cada guarida.

Cuando inicializemos rect, combinamos estos valores con row, column y shelterNumber para crear al labrillo perfectamente posicionado dentro de uno de las cuatro guaridas. Claro, otra cosa importante acerca de este código es el cómo llamamos al constructor de DefenceBrick. Lo veremos en un momento. Añade este código a la clase de DefenceBrick.

Aquí tenemos ahora algunos get y set simples para DefenceBrick los cuales obtienen al objeto rect, establece al objeto como invisible (para cuando sea destruido) y obtén su estado de visibilidad actual. Agrega estos tres métodos a la clase de DefenceBrick.

Ahora, como siempre, agregamos algo de código a SpaceInvadersView para traer a la vida a nuestras guaridas. Fijate que no necesitamos codificar en update por que no se mueven ni piensan. Veremos como destruimos los ladrillos en update más adelante.

En el código abajo tenemos a un triple for bucle a bucle a través de cuatro guaridas, hecho de diez columnas y cinco filas de objetos DefenceBrick cada uno.

Ingresa este código en el método prepareLevel in el lugar indicado en el comentario.

Ahora podemos repetir el proceso (loop) sobre la formación de bricks dibujando cualquier labrillo en donde getVisibility regrese un true.

Ingresa este código en el método de draw en el lugar indicado por el comentario.

Ejecuta el juego y veremos que gráficamente ya terminamos.

Space Invaders con las guaridas agregadas
Space Invaders con las guaridas agregadas

Solo necesitamos lidiar con todos los tipos de impactos.