Foros del Web » Programando para Internet » Android »

Problema con un trabajo que estoy desarrollando en Android

Estas en el tema de Problema con un trabajo que estoy desarrollando en Android en el foro de Android en Foros del Web. Buenas noches, estoy desarrollando un trabajo de Android que consiste en el juego Symon Says. La idea es la siguiente, relleno un array de int ...
  #1 (permalink)  
Antiguo 05/02/2016, 13:57
 
Fecha de Ingreso: septiembre-2015
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Problema con un trabajo que estoy desarrollando en Android

Buenas noches, estoy desarrollando un trabajo de Android que consiste en el juego Symon Says. La idea es la siguiente, relleno un array de int con números aleatorios entre 0-3 que corresponden a los colores y luego voy cambiando las imágenes de los botones simulando que los botones se "encienden y apagan". El código no tiene ningún fallo y en teoría funciona, pero parece que unicamente con el último boton, es decir como si el for recorriera todo muy rápido y por tanto solo hiciera el último "encendido" de botones. Dejo por aquí el código a ver si alguien me echa una mano. Gracias de antemano.

Código:
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.Random;

public class Game extends AppCompatActivity {
    Button botones[];
    boolean rojo,amarillo,verde,azul;
    Random random;
    int repeticiones=6;
    int colores[];
    Handler handler;
    int a=0;
    //Rojo = 0; Amarillo = 1; Verde = 2; Azul = 3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);

        random = new Random();
        handler = new Handler();
        botones = new Button[4];
        colores = new int[repeticiones];

        botones[0] = (Button) findViewById(R.id.btnrojo);
        botones[1] = (Button) findViewById(R.id.btnverde);
        botones[2] = (Button) findViewById(R.id.btnamarillo);
        botones[3] = (Button) findViewById(R.id.btnazul);

        for (a=0; a<botones.length; a++){
            botones[a].setClickable(false);

            switch (colores[a]) {
                case 0:
                    botones[0].setBackgroundResource(R.drawable.ro);
                    break;

                case 1:
                    botones[1].setBackgroundResource(R.drawable.ve);
                    break;

                case 2:
                    botones[2].setBackgroundResource(R.drawable.am);
                    break;

                case 3:
                    botones[3].setBackgroundResource(R.drawable.az);
                    break;

                default:
                    //do nothing
                    break;

            }

            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    switch (colores[a]) {
                        case 0:
                            botones[0].setBackgroundResource(R.drawable.ro3);
                            break;

                        case 1:
                            botones[1].setBackgroundResource(R.drawable.ve3);
                            break;

                        case 2:
                            botones[2].setBackgroundResource(R.drawable.am3);
                            break;

                        case 3:
                            botones[3].setBackgroundResource(R.drawable.az3);
                            break;

                        default:
                            //do nothing
                            break;

                    }
                }
            },800);
        }

        juego();
    }

    public void juego(){
        for (int i=0; i<repeticiones; i++){
            int color = random.nextInt(4);
            colores[i]=color;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_game, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
  #2 (permalink)  
Antiguo 14/03/2016, 13:25
Avatar de cocu3  
Fecha de Ingreso: diciembre-2007
Mensajes: 235
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Problema con un trabajo que estoy desarrollando en Android

hola,
estas creando un hilo por cada ciclo del for, quizas sea eso,
__________________
editor de fotos

Etiquetas: app, layout, trabajo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:11.