Desarrollo juego en Android

tOWERR

Hola amigos MVderos, recurro a vosotros porque tengo un lío enorme (Normal, no he podido ir a clase durante este trimestre por el curro) y no me entero muy bien de como puedo hacer el proyecto que es para este Lunes. Se que el proyecto no es nada difícil pero el problema es que no he asistido a clase lo cual no me he enterado muy bien de como funciona cada cosa.

Tengo que realizar como proyecto un juego, yo he elegido el mítico juego "Simón dice", y el diseño del canvas lo tengo hecho es una cosa tal que así:

El rectángulo grande es el encargado de mostrar la combinación de colores, y los rectángulos de abajo se encargan de que cuando haya terminado de mostrarse la combinación, se muestren para que el usuario pueda elegir la combinación.

El diseño ya lo tengo realizado. Tengo un método llamado "Generador();" que es el encargado de generar el color y se incrementa la variable de nivel, este método se llamará al principio y cada vez que el usuario acierte cada nivel.

En mente tengo pensado un método en el cuál irá un Thread, cuando arranque ese Thread comprobará los colores del arrayList que tengo para almacenar la secuencia de colores e ir mostrándolos, mediante unas condicionales se comprueba si la posición del array es igual a un color, si es asi quiero poner el rectángulo del color correspondiente, dormir el hilo y cuando termine el "sleep()" volver a pintar el rectángulo del color por defecto y así sucesivamente, cuando ya ha terminado de mostrar los colores, parar el hilo y pintar los rectángulos de abajo para que el usuario pueda elegir la combinación. Si acierta, mostrarle un toast para que siga al siguiente nivel y volver a llamar al metodo que contiene el Thread para volver a mostrar la siguiente combinación.

El problema yo le tengo que no sé como hacer para ir pintando el rectángulo y los rectángulos en el metodo del Thread.

¿Alguien me podría dar una idea de como hacerlo?

Espero ayuda, porque estoy desesperado, un saludo y muchas gracias.

Puni

Solo el hilo principal de ejecución puede modificar el UI por tanto desde tu Thread no puedes tocar directamente ninguna vista.

Dicho esto tienes dos opciones.

Usar la clase AsyncTask o usar un Handler para pasarle mensajes si prefieres tirar con un Thread de toda la vida.

Personalmente creo que AsyncTask es muy útil de usar y bastante intuitivo

Añadiendo un poco más de info sobre AsyncTask. Básicamente es crear una clase que herede de AsyncTask. Tendrás tres parámetros para la clase que tendrás que usar.

Los métodos que tienes que implementar.

onPreExecute(), este todavía se ejecuta en el hilo principal, normalmente se usa para lanzar algún diálogo de progreso

doInBackground(Params...), éste si que va en segundo plano.El primer parámetro de los que pusiste en la clase se usa aquí. Puedes usar el metodo publishProgress(Progress...) para actualizar el UI.

onProgressUpdate(Progress...),se ejecuta en el hilo principal después de llamar a publishProgress(Progress...).

onPostExecute(Result), Cualquier cosa que quieras hacer al finalizar la ejecución del hilo.

Usuarios habituales

  • Puni
  • tOWERR