Android. Juego del Ahorcado (XIV). Fin de juego. Palabra acertada

android gingerbreadSiguiendo con el juego del ahorcado, en este post vamos a modificar el código fuente para detectar el final del juego cuando el jugador adivina la palabra completa, dejando para un próximo post el control del fin de juego cuando se completa el monigote del ahorcado. Para ello, vamos a presentar un mensaje de alerta con un botón de aceptar para que, cuando lo pulse salgamos del juego.

Veamos las modificaciones…

Clase palabra.java

  • Se ha creado un nuevo atributo de clase, de nombre ocurrencias_acertadas, cuyo objetivo es ir almacenando la cantidad de letras (repetidas o no) acertadas por el jugador. Este atributo nos permitirá saber si el jugador ha conseguido acertarlas todas. Ha sido necesario crear los métodos get… y set… para la manipulación de este atributo.
  • Se ha modificado el método pinta_letra() para poder actualizar el atributo ocurrencias_acertadas. Lo que se ha hecho es inicializarlo a cero justo antes del bucle for y sumarle + 1 dentro del bucle while. Para estas actualizaciones se ha utilizado el método set… creado antes. El método pinta_letra queda así:

public void pinta_letra()
{

// método que “pinta” todas las ocurrencias de una letra

int inicio=0;
int i = 0;
boolean letra_pintada = false;
String letra_actual;

posicion_inicio =  munyeco.getdatosmonigote().getPdinfder();
setOcurrencias_acertadas(0);

for (i=0;i<getLetras_acertadas().length();i++)
{

letra_actual = letra_de_acertadas(i);
letra_pintada = false;
inicio = 0;

while(!letra_pintada)
{

inicio = getPalabra_en_curso().indexOf(letra_actual, inicio);
if(inicio == -1)

{
letra_pintada = true;
}
else
{

lienzo.drawText(letra_actual,
posicion_inicio + ((tamanyo_linea + espacio_entre) * inicio),
munyeco.getdatosmonigote().getPdinf() + espacio_abajo,
pincel_linea);

setOcurrencias_acertadas(getOcurrencias_acertadas()+1);

inicio++;

}

}

}

}

Clase Juego.java

  • Se ha creado el método palabra_acertada(), para que devuelva verdadero si se comprueba que es así y falso en el caso contrario. Queda así:

private boolean palabra_acertada()
{

return escenario.getPalabra_juego().getPalabra_en_curso().length() == escenario.getPalabra_juego().getOcurrencias_acertadas()+1;

}

  • Se ha modificado el archi-conocido método onKeyDown(), para controlar el proceso de comprobación. Se ha añadido el siguiente código al final:

if(palabra_acertada())
{
dialogo_fin_juego(true);
}

  • Se han añadido dos atributos de clase para el mensaje de alerta. Son especialmente importantes, por los que los detallo:

private AlertDialog.Builder creador;
private AlertDialog alerta_finjuego;

Estos dos atributos utilizarán AlertDialog (predefinido), para mostrar el mensaje. El primero (creador), lo necesitamos para “configurar” la alerta, mientras que el segundo es el que utilizaremos para mostrarlo una vez configurado.

  • Se ha creado el método dialogo_fin_juego(). Este es el método que hace el trabajo de presentar la alerta, utilizando los atributos de clase anteriores. Su aspecto es el siguiente:

private void dialogo_fin_juego(boolean ha_ganado)
{

if(creador == null)
{

creador = new AlertDialog.Builder(this);
creador.setPositiveButton(“Aceptar”,
new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int id) {

Juego.this.finish();

}

});

}

if(ha_ganado)
{

creador.setMessage(“¡Enhorabuena!”);

}
else
{

creador.setMessage(“¡Inténtalo de nuevo!”);

}

if(alerta_finjuego == null)
{

alerta_finjuego = creador.create();

}

alerta_finjuego.show();

}

Ahora, cuando se acierta la palabra, aparece el siguiente mensaje:

Desarrollo de un juego en Android

Si quieres, puedes descargarte los fuentes a este nivel de desarrollo haciendo clic aquí.

¡Hasta el próximo post!.

Acerca de Isildur Fuentes

Apasionado de las buenas historias y aikidoka de la tierra.

Publicado el septiembre 13, 2011 en Android, Divulgación, EDIB, Programación y etiquetado en , , , , , , . Guarda el enlace permanente. Comentarios desactivados en Android. Juego del Ahorcado (XIV). Fin de juego. Palabra acertada.

Los comentarios están cerrados.

A %d blogueros les gusta esto: