¿Cómo verificar si el rompecabezas está completo o no?

Estoy preparando un pequeño juego como rompecabezas, para eso estoy usando 9 vistas de imagen con 9 imágenes diferentes en el diseño. configurar las imágenes para ver imágenes al momento de comenzar, esas son imágenes reales, después de que el usuario aleatorio haga deslizar las imágenes para completar el rompecabezas, quiero verificar la imagen modificada con las imágenes reales, si el tiempo es igual o no, si son iguales aparecerá un mensaje emergente , como gameover.

intenté así

1.utilizando el operador AND entre las imágenes (Dibujables) pero desafortunado.

2.Utilizando setLevel () para las imágenes, compare esos valores setLevel con los valores getLevel para las imágenes después de deslizar todavía Desafortunado ... aquí el problema es si hago clic en imageview una vez getLevel () da el valor correcto, si hago clic más de una vez da valor cero Por qué sucede así ...

Por favor, ayúdame si encuentras algún error en mi código; de lo contrario, guíame con una buena técnica ...

Xml code like this
<RelativeLayout
   //9 imageview's  

in código jave como este si el usuario hace clic en la vista de imagen, intercambiará la imagen

 img_View11.setOnClickListener(new View.OnClickListener()  {            
    public void onClick(View v)  { 

        if(img_View21.getDrawable() == default_img || 
                                    img_View12.getDrawable() == default_img) {

            System.out.println("yes");
            ++click;
            Noof_moves.setText("Moves: " +click);
            ImageView iv = (ImageView)v;                 
            d11 = iv.getDrawable();   
            prev_img = prev_imgView.getDrawable();

            la11 = d11.getLevel();
            System.out.println("d11 value is " +la11);                  

            prev_imgView.setImageDrawable(d11);                 

            img_View11.setImageDrawable(prev_img);                
            prev_imgView = img_View11;

            check();
            }
        else { System.out.println("no");  }
        }
    });

void check(){

    System.out.println("in checking condition");
    if((lb11==la11) && (lb12==la12) && (lb13==la13) && (lb21==la21) && (lb22==la22)
        && (lb23==la23) && (lb31==la31) && (lb32==la32) && (lb33==la33)) {
            Context c = getBaseContext();
            System.out.println("gameover");
            Toast.makeText(c, " GameOver ", Toast.LENGTH_SHORT).show();
    }else{ System.out.println(" codition not checked "); }
} 
//here lb=level before sliding
//     la=level after sliding..

Respuestas a la pregunta(4)

Su respuesta a la pregunta