Android. Juego del Ahorcado (V). Pintando el monigote.

tutorial android castellano

Hasta ahora, lo que hemos hecho es desarrollar configuraciones y menús. A partir de ahora empezaremos a trabajar en la lógica del juego, además de la parte gráfica, que será en 2D.

Empecemos.

El aspecto que deseo que tenga el juego es de un aspecto infantil. Con Android podemos hacer su aspecto más sofisticado, pero ese es un tema que se abordará en posteriores tutoriales.

Lo primero que debes tener en cuenta es que, para poder “pintar” en Android, necesitas hacerlo sobre un canvas, que esté controlado dentro de un view, que a su vez esté controlado por una activity.

Pintar en Android

Pasos:

  • Nota: No intentes desarrollar el código fuente de este post sin antes haber desarrollado los pasos anteriores (sobre todo el I y el II). En este post se hace referencia a partes creadas y explicadas en esos posts.
  • Modificar el método onClick() y añadir el método inicia en la clase Ahorcado.java, todo para que se lance el juego cuando el usuario selecciona el botón “Empezar nuevo juego”. En el fichero de descarga del final de este artículo está incluido el código fuente de esta clase.
  • Al guardar, nos da un error, ya que no existe la clase Juego. Créala (Ve con cuidado de crear la clase dentro del package misejemplos.ahorcado con el botón derecho del ratón).

Esta clase hereda de Activity, por lo que es el primero de los pasos del diagrama anterior. Dentro de ella, puedes ver la línea de código en la que creamos una instancia de la clase Escenario, que heredará de View. Dentro de esta clase tendremos el método onDraw, que nos ayudará a pintar sobre el canvas. Este es el código de la clase Escenario.

Cosas a tener en cuenta respecto a esta clase:

  • Al heredar de View, nos obliga a definir de forma explícita el constructor de la clase.
  • La actividad debe definirse en el fichero AndroidManifest.xml. Es necesario definir todas las activities, para que puedan funcionar. Quedará de la siguiente forma:

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
package=”misejemplos.ahorcado”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.Ahorcado”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.Configuracion”
android:label=”@string/titulo_config” >
</activity>
<activity android:name=”.Juego”
android:label=”@string/nuevo_juego” >
</activity>

</application>
<uses-sdk android:minSdkVersion=”8″ />

</manifest>

Este post explica la forma en la que se implementa el pintar el monigote. No es objetivo hacer algo realista, sino que vamos a utilizar figuras geométricas, sin más. Dejo al lector el profundizar en el aspecto gráfico del monigote. A efectos de este post, le daremos importancia a cómo hacerlo de una manera sencilla, pero tomando unas decisiones sobre la estructura del código.

Para explicar la base de este punto, debemos tener en cuenta lo siguiente:

  • Se ha creado una clase por cada una de las partes del monigote: cabeza, tronco, brazoderecho, brazoizquierdo, piernaderecha y piernaizquierda.
  • Además, se ha creado una clase de nombre partemonigote. La idea es que las clases de las partes del punto anterior heredan de esta. Se ha implementado esta herencia debido a que todas las partes tienen en común la necesidad de usar un canvas, un pincel y la información posicional para pintarse. Al ser comunes, se han definido en partemonigote y, mediante herencia, podemos utilizarlas desde las subclases.

herencia android

  • Además, desde las subclases, llamaremos al constructor de la clase partemonigote con super(). De esta forma también tendremos definido el constructor en un único lugar.
  • Todo lo referente a los datos para “pintar” las partes, como por ejemplo las posiciones, se ha colocado en una clase de nombre datosmonigote. La idea de esta decisión es poner esta información al alcance de las clases de las partes del monigote, pero sin incrustrarla dentro de cada una, con la intención de facilitar el mantenimiento posterior.
  • Se ha creado una clase monigote, que es la que “lanza” todo el proceso del pintado. El objeto de esta clase se crea a partir de la clase Escenario.
  • Por tanto, la idea es que cuando el usuario selecciona “Empezar nuevo juevo”, se crea un objeto de la clase Juego, que a su vez creará uno de la clase Escenario, que a su vez creará uno de la clase monigote, y éste creará uno por cada parte del cuerpo del monigote.

El porqué de todo esto es evitar duplicidad de código, algo nada deseable en la programación.

Es posible que, para algún lector, algunos de los conceptos que surgen en los párrafos anteriores no sean comprensibles, como por ejemplo la herencia en programación orientada a objetos, subclase, superclase o el concepto de constructor. No es objetivo de este artículo hacer una exposición sobre el paradigma de la orientación a objetos, por lo que recomiendo que, si quiere profundizar en este tema, lea uno de tantos artículos que circulan por la web. Además, recomiendo que, como primera aproximación, consulte los artículos de este mismo blog dedicados a las tarjetas CRC, ya que son una herramienta útil y fácil para introducirse en este paradigma de la programación.

El aspecto de las subclases cabeza, tronco, brazoderecho, brazoizquierdo, piernaderecha y piernaizquierda es similar. Como muestra, detallo a continuación el código de brazoderecho:

package misejemplos.ahorcado;

import android.graphics.Canvas;
import android.graphics.Paint;

public class brazoderecho extends partemonigote{

brazoderecho(Canvas canvas, Paint pincel, datosmonigote datos)
{
super(canvas, pincel, datos);
pinta();
}

public void pinta()
{

this.getCanvas().drawRect(this.getDatos().getBdsupizq(),
this.getDatos().getBdsup(),
this.getDatos().getBdinfder(),
this.getDatos().getBdinf(),
this.getPincel());

}

}

Cosas a tener en cuenta:

  • Hereda de partemonigote …extends partemonigote…
  • El método pinta() es el que hace el trabajo específico de pintar la parte del monigote.
  • El constructor brazoderecho(…) llama al constructor de la superclase partemonigote con super(…).
  • Todas las subclases tienen la misma estructura.

Con estas modificaciones, el aspecto al hacer clic en el botón “Empezar nuevo juego” es el siguiente:

monigote android

La idea es que según aparezcan fallos, las partes se iluminarán de color blanco.

Puedes descargar el código fuente de estas clases haciendo clic aquí.

Puedes descargar el fichero main.xml de res->layout (ver comentarios) haciendo clic aquí.

Puedes descargar el fichero Androidmanifest.xml haciendo clic aquí.

Acerca de Isildur Fuentes

Apasionado de las buenas historias y aikidoka de la tierra.

Publicado el febrero 22, 2011 en Android, EDIB, Programación y etiquetado en , , , , , , , . Guarda el enlace permanente. 48 comentarios.

  1. Buenas! Gracias por la siguiente entrega. Ya se esperaba con ansias😀

  2. Hola de nuevo! Al no poder solucionar el problema del botón de configuración he decidido seguir adelante sin esta parte. Aquí me surge otro problema. En la clase Ahorcado.java, donde hay que poner:

    Button nuevojuego = (Button)findViewById(R.id.boton_nuevo_juego);
    nuevojuego.setOnClickListener(this);
    Button salir = (Button)findViewById(R.id.boton_salir);
    salir.setOnClickListener(this);

    Me sale error, y me dice que setOnClickListener no admite argumentos de este tipo. Me recomienda sustituirlo por:

    Button nuevojuego = (Button)findViewById(R.id.boton_nuevo_juego);
    nuevojuego.setOnClickListener((OnClickListener) this);
    Button salir = (Button)findViewById(R.id.boton_salir);
    salir.setOnClickListener((OnClickListener) this);

    pero no consigo que funcione… De todas formas el tutorial me está siendo de gran ayuda para introducirme en este mundillo🙂 Gracias por las entradas!

    • Isidro Fuentes Hermoso

      ¡Hola de nuevo!

      He estado mirando, en mi código fuente, el problema que comentas . He conseguido reproducirlo cuando quito el import:

      import android.view.View.OnClickListener;

      de la zona de los imports de la clase Ahorcado,java. Cuando no está este import, me da el error y me propone el mismo cambio que comentas. Pero si vuelvo a poner esa orden así como está (cuidado con las mayúsculas/minúsculas), el error desaparece y vuelve a funcionar.

      Espero haber sido de ayuda.

      Un saludo.

  3. Muy buenas,
    lo primero muchas gracias por el tutorial que me está viniendo muy bien para iniciarme en este mundillo.

    Estoy teniendo un problema en la clase Ahorcado a la hora de compilarlo. Me da un error en el paso :

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button nuevojuego = (Button)findViewById(R.id.boton_nuevo_juego);
    nuevojuego.setOnClickListener(this); <–Aquí
    Button salir = (Button)findViewById(R.id.boton_salir);
    salir.setOnClickListener(this);
    }

    He intentado poner otras opciones, como null, y sigue fallando.

    Por si sirve de algo el Logcat devuelve esto:

    05-02 09:13:34.869: ERROR/AndroidRuntime(402): FATAL EXCEPTION: main
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): java.lang.RuntimeException: Unable to start activity ComponentInfo{misejemplos.ahorcado/misejemplos.ahorcado.Ahorcado}: java.lang.NullPointerException
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.os.Handler.dispatchMessage(Handler.java:99)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.os.Looper.loop(Looper.java:123)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread.main(ActivityThread.java:4627)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at java.lang.reflect.Method.invokeNative(Native Method)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at java.lang.reflect.Method.invoke(Method.java:521)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at dalvik.system.NativeStart.main(Native Method)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): Caused by: java.lang.NullPointerException
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at misejemplos.ahorcado.Ahorcado.onCreate(Ahorcado.java:21)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    05-02 09:13:34.869: ERROR/AndroidRuntime(402): … 11 more

    Gracias por todo

    • buenas, me contesto yo..

      tenía mal definidos los botones en el main.xml…

      gracias por todo

      • Isidro Fuentes Hermoso

        Hola Koldo.

        ¡Muchas gracias por tus comentarios!.

        Acabo de ver tu dos mensajes y me alegro que hayas encontrado la solución tan rápidamente.

        Te ruego no dudes en compartir tus futuras experiencias con el desarrollo para Android cuando lo estimes necesario.

        ¡Un saludo!

  4. Juan Fernando Dominguez

    Buenas Isidro !!muy bueno tu tutorial

    Todas las clases que bienen en el rar se ponen en el paquete misejemplos.ahorcado
    y aparte de eso no se hace nada mas ??
    porque no me tira ningun error pero si varios !! en 3 clases Escenario Juego Monigote
    y a la hora de ejecutar

    me dice

    ! Sorry
    The Application Ahorcado
    (Process misejemplos.
    ahorcado) has stopped
    unexpectedly. Please try again.

    • Juan Fernando Dominguez

      cuando digo si varios !! me refiero a los signos ! en las clases

      en algunos en los import y en otras partes del programa

      • Isidro Fuentes Hermoso

        Hola de nuevo, Juan.

        Lo probaré. Te diré cosas.

        Un saludo.

      • Isidro Fuentes Hermoso

        Hola Juan.

        Te envíe por mail una respuesta con la solución del problema que me enviaste. ¿Lo has recibido?. ¿te fue bien?

        Saludos

      • hola disculpa he seguido el tuto y muy bueno por cierto me ha ayudado mucho pero fijate que me da el mismo error al ejecutarlo
        ! Sorry
        The Application Ahorcado
        (Process misejemplos.
        ahorcado) has stopped
        unexpectedly. Please try again.
        necesito solucionarlo por fa necesito ayuda gracias de antemano

  5. me salen 18 warnings
    Description Resource Path Location Type
    The field Escenario.juego is never read locally Escenario.java /Ahorcado/src/com/ig/carrasco line 12 Java Problem
    The field Escenario.lienzo is never read locally Escenario.java /Ahorcado/src/com/ig/carrasco line 13 Java Problem
    The import android.content.Context is never used Juego.java /Ahorcado/src/com/ig/carrasco line 3 Java Problem
    The import android.graphics.Bitmap is never used Escenario.java /Ahorcado/src/com/ig/carrasco line 3 Java Problem
    The import android.graphics.Color is never used Escenario.java /Ahorcado/src/com/ig/carrasco line 6 Java Problem
    The import android.graphics.Paint is never used Escenario.java /Ahorcado/src/com/ig/carrasco line 7 Java Problem
    The import android.graphics.Rect is never used Monigote.java /Ahorcado/src/com/ig/carrasco line 7 Java Problem
    The import android.R.color is never used Monigote.java /Ahorcado/src/com/ig/carrasco line 3 Java Problem
    The import android.view.inputmethod.InputMethodManager is never used Juego.java /Ahorcado/src/com/ig/carrasco line 5 Java Problem
    The local variable bdmonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 61 Java Problem
    The local variable bimonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 65 Java Problem
    The local variable cabezamonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 49 Java Problem
    The local variable monigote is never read Escenario.java /Ahorcado/src/com/ig/carrasco line 27 Java Problem
    The local variable pdmonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 79 Java Problem
    The local variable pimonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 76 Java Problem
    The local variable troncomonigote is never read Monigote.java /Ahorcado/src/com/ig/carrasco line 50 Java Problem
    The method inicializa_pincelblanco() from the type Monigote is never used locally Monigote.java /Ahorcado/src/com/ig/carrasco line 38 Java Problem
    The import android.graphics.BitmapFactory is never used Escenario.java /Ahorcado/src/com/ig/carrasco line 4 Java Problem

    y me da el problema

    ! Sorry
    The Application Ahorcado
    (Process com.ig.carrasco) has stopped
    unexpectedly. Please try again.

    • Isidro Fuentes Hermoso

      Hola Ignacio.

      Adjunto aquí la solución que encontré para el caso de Juan, que se parece al tuyo. Si aún así no soluciona tu problema, no dudes en comentarlo. Un saludo y gracias por tu dedicación a estos posts de Android.

      Hola Juan.

      He mirado el problema y he encontrado la solución.

      Básicamente, el problema venía dado por dos cosas:

      1- En la definición del fichero Ahorcado -> res ->layout ->main.xml faltaba la definición de los id de los botones del menú. Esto provocaba que no se encontrasen dichos botones desde la clase ahorcado.java, en su orden:

      Button nuevojuego = (Button)findViewById(R.id.boton_nuevo_juego);

      ya que no existía dicha id para el botón. La definición del id se explica en el post: Android. Juego del ahorcado (II). Interfaz de usuario modo landscape
      por lo que, si quieres saber más sobre este punto, te ruego vayas a ese post.

      Adjunto en este mail el fichero main.xml actualizado. Puedes actualizar el tuyo a partir de él.

      2- La actividad para la clase juego no está definida en el fichero AndroidManifest.xml. Es necesario definir todas las activities, para que puedan funcionar. Adjunto también el fichero actualizado para que puedas actualizar el tuyo.

      Con estos cambios, tu programa me ha funcionado y he visto pintado el monigote. Si te funciona después de haber hecho los cambios, te ruego me lo hagas saber ya que creo importante colocar la solución en los comentarios del blog por si otras personas han tenido el mismo problema.

      Espero haber sido de ayuda. De hecho para mí sí ha sido de ayuda ya que he visto posibles mejorar al redactar los posts, por lo que te agradezco tu dedicación a los tutoriales de Android de robiol.org

      Un saludo.

      • DISCULPA DONDE PUEDO CONSEGUIR EL MAIN.XML ACTUALIZADO POR FA ES URGENTE

      • Isidro Fuentes Hermoso

        Hola elmer.

        He actualizado este artículo. Al final del mismo verás un texto con el link para bajar el main.xml

        Un saludo y muchas gracias por tu interés en este site.

      • disculpa amigo me gustaria saber tu correo o facebook por alguna duda por fa y tal ves me ayudas si sigo teniendo proble con :
        ! Sorry
        The Application Ahorcado
        (Process misejemplos.
        ahorcado) has stopped
        unexpectedly. Please try again.

      • Isidro Fuentes Hermoso

        Hola de nuevo.

        Envia el proyecto a la cuenta que sale en “Sobre Robiol.org” en el home.

        Saludos.

      • hola disculpa la molestia ya te debo tener aburrido, te enviare el proyecto pero me gustaria q me explicaras bien como se soluciona el probl de:
        ! Sorry
        The Application Ahorcado
        (Process misejemplos.
        ahorcado) has stopped
        unexpectedly. Please try again.
        habias dicho que se modificaba el main.xml bueno ya lo tengo actualizado ahora mi duda es lo del manifest.xml como quedaria

      • Isidro Fuentes Hermoso

        Hola elmer.

        No hace falta que envies el proyecto si consigues hacerlo funcionar. Respecto al fichero Androidmanifest.xml, en él se definen las activities, que en el caso de este juego son las referentes a la pantalla inicial, a la pantalla de configuración y a la pantalla de juego.

        Al final del artículo verás que puedes bajar este fichero. Piensa que es mi versión. Te recomiendo que lo adaptes de forma que pongas el nombre de tu package y de tus activities.

        un saludo.

      • Isidro Fuentes Hermoso

        Hola de nuevo.

        Voy a estar ausente un rato. Si no consigues hacer funcionar el programa, y quieres alguna ayuda, hazlo saber. Más tarde volveré a conectar.

        Saludos.

      • hola ya pude solucionar el problema y me corre de maravilla muchas gracias espero seguir en contacto de veras te lo agradezco mucho no sabes cuanto me has ayudado gracias hasta pronto brother

  6. Muy buen tutorial, gracias por todo.
    Por cierto, en que casos hay que añadir las nuevas activities al manifest.xml?
    Por ejemplo, porque Juego es una nueva activity y en cambio Escenario no lo es?

    • Isidro Fuentes Hermoso

      Hola Bruno.

      Muchas gracias por tu comentario. Respecto a lo que comentas de las activities, es cierto que tienes que declararlas en el manifest.xml. La clase Escenario no es una activity. Puedes comprobarlo en su definición, en el código fuente. La clase juego lo es, ya que su definición pone…

      public class Juego extends Activity{ …

      En cambio, la clase Escenario pone…

      public class Escenario extends View {…

      La idea es que la clase juego define la activity y “usa” un objeto de la clase Escenario para “pintar” la pantalla, ya que lo crea dentro de su método onCreate…

      this.escenario = new Escenario(this, res);

      Espero haber podido aclarar la duda.

      Un saludo y muchas gracias por el interés que demuestras en estos articulillos sobre desarrollo en Android.

  7. Hola Maestro sabe esto me da error en Escenario.java

    private final Juego juego; en juego me da warning
    private Canvas lienzo;en lienzo me da warning

  8. y en monigote me da error tambien

  9. Description Resource Path Location Type
    The method inicializa_pincelblanco() from the type Monigote is never used locally Monigote.java /Ahorcado/src/garcia/Ahorcado line 33 Java Problem
    The value of the field Escenario.juego is not used Escenario.java /Ahorcado/src/garcia/Ahorcado line 11 Java Problem
    The value of the field Escenario.lienzo is not used Escenario.java /Ahorcado/src/garcia/Ahorcado line 12 Java Problem
    The value of the local variable bdmonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 53 Java Problem
    The value of the local variable bimonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 56 Java Problem
    The value of the local variable cabezamonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 42 Java Problem
    The value of the local variable monigote is not used Escenario.java /Ahorcado/src/garcia/Ahorcado line 25 Java Problem
    The value of the local variable pdmonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 62 Java Problem
    The value of the local variable pimonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 61 Java Problem
    The value of the local variable troncomonigote is not used Monigote.java /Ahorcado/src/garcia/Ahorcado line 43 Java Problem

    • Isidro Fuentes Hermoso

      Hola Jimmy.

      Los errores que comentas no me ocurren a mi. Si no se solucionan, puedes mandarme los fuentes a la cuenta de email que encontrarás en la página “Sobre Robiol.org” y veremos entre todos qué es lo que pasa.

      Saludos.

  10. Hola Amigo de acuerdo al proyecto en el cual he presentado
    Solo utilizare la clase Juego
    no se si sera necesario la clase “Escenario” o si es necesaria porque en mi proyecto no dibujare ninguna canva

    ayudame por favor

    Proyecto Mision Imposible

    • Isidro Fuentes Hermoso

      Hola Jimmy.

      Creo que te será más fácil si mantienes la clase Escenario. Desde ella se “pinta” la palabra y el monigote, además de tener controles de fin de juego que puedes aprovechar. Si no quieres pintar el monigote, puedes simplemente comentar o borrar todo aquello que se refiera a él, dejando que sólo pinte la palabra. A partir de ahí puedes ir añadiendo tus gráficos y los controles. El objetivo de esta clase Escenario es agrupar todo aquello que se “pinta” en la pantalla.

      ¿Recibiste el correo que te envié con las que creo que serán las opciones que mejor te pueden ir?

  11. Buenas!
    Estoy siguiendo el tutorial y la verdad es que es perfecto para aprender.

    El problema es que aún estoy un poco flojo y no se hacer lo que dice al principio, así que he intentado descargarme el código fuente para ver los pasos, pero los enlaces estan rotos.

    ¿Podrias volver a subirlos?

    Muchas gracias!

    • Hola Arnau.

      Agradezco de verdad el interés que demuestras por este blog.

      Es cierto. Los enlaces están rotos debido a que estoy migrando el blog a wordpress.com y aún no he hecho ese paso. Estoy en ello y espero que estén lo antes posible. En cuanto tenga de nuevo en funcionamiento los enlaces de este post te lo haré saber.

      Un saludo.

      Isidro.

    • Hola de nuevo Arnau!.

      Tal como te comenté, te escribo este comentario para informarte que los links de las descargas de código fuente vuelven a estar operativos.

      Un saludo y de nuevo muchas gracias por tu interés.

      • Muchísimas gracias! Ya pensaba que iba a tardar algunas semanas.

        Perfectos tutoriales y perfecta atención, muchas gracias!

  12. Hola! Llevo un tiempo buscando ejemplos de android , y esta página me parece la más completa! Como muchos de mis compañeros me ha surgido un problema , y es que después de copiar todo , me sale un error en layout -> main.xml :

    Description Resource Path Location Type
    error: Error: No resource found that matches the given name (at ‘background’ with value ‘@drawable/android1’). main.xml /Ahorcado/res/layout line 2 Android AAPT Problem

    me sale el error en esta linea : android:background=”@drawable/android1″

    alguna sugerencia ?

    Muchas gracias!

  13. hola isidro antes segui tu tutorial sobre el ahorcado y me resulto genial pero ahora te vengo a molestar con otro proyecto que tengo. Es que quiero hacer un tablero en android antes habia hecho uno en java pero en android on se por donde empezar tengo la logica pero no se como manejar matrices en android pues anteriormente lo hice usando unn jframe y dentro una matriz de jlabel quisiera saber alguna manera de pornerme en contacto contigo y me puedas ayudar por fa

    • Hola Elmer.
      Gracias por tu comentario.
      Si no consigues dar con la solución, y si aún estás interesado, contacta a partir del lunes a ver si lo solucionamos entre todos.
      Saludos.

  14. hola amigo el lunes como a que hora y por medio del blog o que onda

    • Propongo que envies un mail con el detalle de lo que quieres hacer a la cuenta que aparece en “Sobre Robiol”. No sé de dónde escribes. En mi caso,mi horario es el de España (GMT+1).

      Saludos.

  15. Hola isidro estoy siguiendo este tutorial me parece muy interesante, estoy aprendiendo patrones de diseño y estoy realizando este juego, quisiera saber que patron usaste o que patron podria usar para realizar este juego en android. gracias de antemano

    • Hola Christian!

      Gracias por tu comentario!!. Siento no poder ayudarte sobre el tema de patrones de diseño. Este juego del ahorcado consiste en una serie de experimentos de aprendizaje y no entró ese punto en ellos.

      Un saludo.

  16. hola me podrias decir como queda el MainActivity.java
    el que esta en el folder src
    es que al parecer le moví y ahora me marca error y no se como debe de quedar

  17. Buenas Isidro, esta muy bueno tu tutorial pero tengo un problema he hecho todos los pasos y he solucionado todos los problemas que me han aparecido pero al momento de ejecutar la aplicacion en el emulador y dar clic en en el boton nuevo juego no me dibuja el monigote, quisiera saber si me podrias ayudar

    • Hola Miguel!!
      Agradezco tu interés!!. Le echaré un vistazo. Te comentaré cosas en cuanto haya podido ver algo. Te recuerdo también que este blog a evolucionado a http://tutorlab.es, y que en breve dejará de existir. Sin embargo todos los tutoriales del ahorcado los encontrarás allí también.

      un saludo.

  18. Muchas gracias Isidro la verdad yo estaba trabajando con los tutoriales de http://tutorlab.es
    y de esa pagina encontre la direccion de este blog y comente en ambos lugares para ver en cual obtenia una respuesta.

  19. Buen día.
    Primero que todo, muchas gracias por los tutoriales, me han servido mucho.

    Mira, mi problema es que al darle empezar nuevo me muestra una pantalla en blanco que antes de salir se alcanza a observar que detrás de esta queda el muñeco, ¿qué hago para que quede delante?.

    Muchas gracias.

    • Hola Luis!!

      Gracias por tu comentario!

      ¿Es posible que tengas algún código autogenerado por el Eclipse? Fíjate si en la activity tienes alguna línea setContentView que este “tirando” de un layout en blanco.

      permíteme informarte que este blog ya está en desuso y que la información se ha traspasado a

      http://tutorlab.es

      Donde encontrarás ésta y más información.
      Un saludo.

A %d blogueros les gusta esto: