Fragmentando los asteroides

Siguiendo con el juego Asteroides, queremos que cuando el misil alcance un asteroide, este se divida en varios fragmentos. Para conseguirlo puedes seguir las instrucciones del siguiente ejercicio:

Ejercicio paso a paso: Frasgmentando los asteroides

1.     Convierte la variable local drawableAsteroide declarada en el constructor de la clase VistaJuego, en una variable global, que será un array de tres elementos:

private Drawable drawableAsteroide[]= new Drawable[3];

2.     En el constructor cuando se quiera trabajar con bitmaps inicializaremos esta variable de la siguiente forma:

drawableAsteroide[0] = context.getResources().    
                             getDrawable(R.drawable.asteroide1);
drawableAsteroide[1] = context.getResources().
                             getDrawable(R.drawable.asteroide2);
drawableAsteroide[2] = context.getResources().
                             getDrawable(R.drawable.asteroide3);

3.     Y en caso de querer trabajar con gráficos vectoriales:

for (int i=0; i<3; i++) {
      ShapeDrawable dAsteroide = new ShapeDrawable(new PathShape(
                                            pathAsteroide, 1, 1));
      dAsteroide.getPaint().setColor(Color.WHITE);
      dAsteroide.getPaint().setStyle(Style.STROKE);
      dAsteroide.setIntrinsicWidth(50 - i * 14);
      dAsteroide.setIntrinsicHeight(50 - i * 14);
      drawableAsteroide[i] = dAsteroide;
}

4.     Añade al principio del método destruyeAsteroide(int i) el código:

int tam;
if(Asteroides.get(i).getDrawable()!=drawableAsteroide[2]){
   if(Asteroides.get(i).getDrawable()==drawableAsteroide[1]){
          tam=2;
   } else {
          tam=1;
   }
   for(int n=0;n

5.     Corrige algún error adicional ocasionado por este cambio.

6.  Prueba los cambios propuestos.

Practica: Mejorando preferencias en Asteroides

1.     Modifica el programa para que el número de fragmentos generados corresponda con el valor introducido en las preferencias.

2.     Puedes aprovechar para que la reproducción de música de fondo y los efectos de de audio sean también configurables por el usuario.