Android. Juego del Ahorcado (VIII). Detectando las pulsaciones de teclado.

Hasta ahora, en posts anteriores, ya hemos desarrollado el monigote, hemos escogido una palabra y hemos presentado el teclado soft.

En este post, vamos a ver cómo detectamos si el usuario ha pulsado una tecla y si esta es una letra y no un símbolo que no tenemos en cuenta en la lógica del juego.

Nuestra clase juego.java hereda de Activity. Debido a esta herencia, se define un método de nombre onKeyDown, que es el que se “lanza” cuando se detecta el evento de pulsación de una tecla. Lo que vamos a hacer es redefinirlo dentro de esta clase para que haga lo que nosotros queramos.

Este post presenta cómo redefinir este método. En siguientes posts crearemos la lógica del juego, tanto cuando el usuario teclea una letra que está en la palabra como cuando no está.

Veamos el aspecto de la clase juego, una vez efectuados los cambios (podrás verlos en negrita):

package misejemplos.ahorcado;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;

import android.view.KeyEvent;
import android.view.inputmethod.InputMethodManager;

public class Juego extends Activity{

private Escenario escenario;
private Resources res;
private String letras = “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”;

protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
res = getResources();
this.escenario = new Escenario(this, res);
setContentView(this.escenario);

// visualizar teclado soft siempre
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);

}

// control de las pulsaciones de las teclas

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{

if (esletra(Character.toString(event.getDisplayLabel())))
{
// Aquí seguiremos con la lógica del juego (en próximos posts).
}
return true;

}

private boolean esletra(String caracter)
{
return  letras.contains(caracter);
}

}

Veamos los pasos efectuados:

  • Hemos definido un atributo de clase, de nombre letras, de tipo cadena de texto (String), y contiene los caracteres que se tendrán en cuenta en el juego, si se pulsan.
  • Hemos definido un método, de nombre esletra, al que le pasamos una cadena de texto (String caracter), y que nos devuelve:
    • Verdadero (true), si el caracter que le pasamos está en en el valor del atributo letras.
    • Falso (false), en caso contrario.

Con el método esletra, controlamos que la lógica del programa sólo tenga en cuenta aquellos caracteres que hemos definido en el atributo letras.

  • Redefinimos el método onKeyDown. Como se ve, es una redefinición (le especificamos un @Override). Este método tiene dos parámetros, que nos permiten saber el código de la tecla pulsada y el tipo de evento de pulsación. Dentro de él, lo que hacemos es simplemente llamar a esletra, pasándole el carácter asociado a la tecla pulsada (con getDisplayLabel). Si es una letra, entonces pondremos en marcha la lógica (en posteriores posts). Si no, no hace caso, como por ejemplo si ha pulsado un espacio o un número.

Este método se lanza tanto si pulsamos una tecla del teclado “físico” del emulador como el teclado “soft” que presentamos con el juego. De esta manera tenemos en cuenta aquellos dispositivos que no tienen teclado físico.

¡Hasta el próximo post!

Acerca de Isildur Fuentes

Apasionado de las buenas historias y aikidoka de la tierra.

Publicado el mayo 6, 2011 en Android, Divulgación, EDIB, Programación y etiquetado en , , , , , , . Guarda el enlace permanente. 4 comentarios.

  1. hola quiero saber si existe la continuación de este post???

    • Isidro Fuentes Hermoso

      Hola yamy!.

      Te agradezco el interés que demuestras por la serie de artículos sobre desarrollo en Android. Nuestra intención es seguir con ellos. De hecho, en estos momentos se está elaborando el siguiente post (continuación de este), que espero guste como los anteriores. En breve estará publicado. Intentamos que, dado el seguimiento que están teniendo, estos artículos estén lo mejor elaborados posible.

      Gracias por compartir tus experiencias en este blog.

      Un saludo.

      • Hola, pues a mi me han encantado todos los post porque me ha motivado a hacer mi propio juego de ahorcado… y he tratado de continuarlo por mi propia cuenta, pero a decir verdad soy nueva programando en android… jeje… pero lo único que he conseguido un puño de errores…😦 jeje… así que espero con ansias el siguiente post…

      • Isidro Fuentes Hermoso

        Es cierto que, cuando programas y lo consigues, tienes una sensación de orgullo muy chula.

        Te animo a seguir intentándolo con Android. Dentro de muy poco tendrás un nuevo post a tu disposición.

        Un saludo.

A %d blogueros les gusta esto: