Android. Juego del Ahorcado (X). Si pulsamos una tecla incorrecta.

android gingerbreadEn este post, vamos a desarrollar la lógica del juego cuando se pulsa una letra que no está en la palabra oculta. La idea es similar al post anterior. Al final de este post tienes el vínculo que te permite bajar el código fuente actualizado.

Para incluir esta lógica, se han modificado las siguientes clases:

Clase Escenario.

  • Se ha modificado el método onDraw. Se ha eliminado la condición que indicaba

if (letra_pulsada)…

ya que se ha visto innecesaria. El control de los repintados se controla a partir de las letras que estén almacenadas en los atributos letras_acertadas y letras_falladas de la clase palabra. El aspecto de onDraw queda de la siguiente forma:

@Override
protected void onDraw(Canvas canvas)
{

if(nuevo_juego)
{
monigote = new Monigote(canvas);
palabra_juego = new palabra(res, canvas, monigote);
palabra_juego.getPalabra();
nuevo_juego = false;
}

monigote.pinta();
palabra_juego.pinta_palabra();

// pintamos los aciertos

palabra_juego.pinta_letra();

// pintamos los fallos

monigote.pinta_fallos(palabra_juego.getLetras_falladas().length());

}

  • Como se ve, se ha añadido en este método la llamada a pinta_fallos de la clase Monigote. Se explica más adelante.

Clase Monigote.

  • Se ha creado el método pinta_fallos. Este método se ejecuta cada vez que “repintamos” con el invalidate (ver post anterior). Lo que hace es recibir como parámetro el número de fallos acumulados del juego (que se calculan a partir del tamaño del atributo letras_falladas de la clase palabra) y actúa pintando las partes del monigote que correspondan. Si no tenemos ningún fallo, no hace nada. Se han creado una serie de atributos constantes (final) para ayudarnos con las comparaciones: error_pizquierda, error_pderecha, error_bizquierdo, error_bderecho, error_tronco y error_cabeza. El aspecto de este método es el siguiente:

public void pinta_fallos(int numero_fallos)
{
if (numero_fallos >= error_pizquierda)
{
pimonigote.setPincel(pincelblanco);
pimonigote.pinta();
}

if (numero_fallos >= error_pderecha)
{
pdmonigote.setPincel(pincelblanco);
pdmonigote.pinta();
}

if (numero_fallos >= error_bizquierdo)
{
bimonigote.setPincel(pincelblanco);
bimonigote.pinta();
}

if (numero_fallos >= error_bderecho)
{
bdmonigote.setPincel(pincelblanco);
bdmonigote.pinta();
}

if (numero_fallos >= error_tronco)
{
troncomonigote.setPincel(pincelblanco);
troncomonigote.pinta();
}

if (numero_fallos >= error_cabeza)
{
cabezamonigote.setPincel(pincelblanco);
cabezamonigote.pinta();
}
}

  • Los objetos que se crean en esta clase para cada una de las partes del monigote: pimonigote, pdmonigote, bimonigote, bdmonigote, troncomonigote, cabezamonigote, se creaban dentro de métodos, lo cual no permitía “verlos” fuera de ellos. Se ha modificado la clase para que se sigan creando (new) dentro de los mismos métodos, pero se definen como atributos de clase.
  • El método inicializa se ha modificado para añadir una llamada a inicializa_pincelblanco.

Clase partemonigote.

  • Se ha añadido el método setPincel, necesario para cambiar a color blanco a la hora de pintar las partes del monigote cuando se fallan letras.

El aspecto del programa queda así:

Android. Juego del ahorcado.

¡Hasta el próximo post!

Si quieres, puedes bajar el código fuente actualizado haciendo clic aquí.

Acerca de Isildur Fuentes

Apasionado de las buenas historias y aikidoka de la tierra.

Publicado el junio 10, 2011 en Android, Divulgación, EDIB, Escritos, Programación y etiquetado en , , , , , , . Guarda el enlace permanente. 2 comentarios.

  1. seguimos esperando la continuacion del post….hasta el momento estoy modificando el menu poniendo graficos…quiero tratar de avanzar solo pero me es dificil…seria interesante hacer que se pueda jugar entre dos telefonos al mismo tiempo usando agentes con la libreria jade leap pero estoy tratando de enterder muy bien la logica de java para poder avanzar….chao y gracias por tu esfuerzo!!!

    • Isidro Fuentes Hermoso

      Hola fredelec! Muchas gracias por tu comentario y por el interés sobre estos articulillos de Android!. No queda mucho para el próximo post.

      Tomo nota de la posibilidad que comentas, que en principio no he tenido en cuenta pero que, dado que el objetivo de estos posts es aprender desarrollo de programas en Android, la investigaré para futuros posts.

      Un saludo.

A %d blogueros les gusta esto: