Java Swing - sortujące klocki

0

Witam,

Piszę program w Java Swing. Polega on na przesuwaniu klocków poprzez klikniecie w przycisk, znajdującego się obok pustego pola, coś w stylu sliding-puzzle'a. Do rzeczy, program fizycznie działa dobrze - klocki przesuwają się, mogę zmieniać objętość 'obrazka' (w zasadzie są to przyciski), ale nie działa mi sprawdzarka check(), która ma na celu zweryfikowanie, czy układanka nie została już poukładana.

Sprawdza kolejno klocki od miejsca (x,y) i następnie porównuje jego tekst z liczbą 'ilość'. Zmienne przX, przY to przesunięcia klocków (nic ważnego w tym problemie).
Kod wygląda tak:

void check(){ //Dokonczyc funkcje check;
ilosc = 1;
boolean isOk = true;

    for(int j = 0; j<wys; j++){
        if(gra && isOk){
            for(int i = 0; i<szer; i++){             
                if(isOk==false || (j==wys-1 && i==szer-1)) break;
                for(int k = 0; k<buttons.size(); k++){
                    if((buttons.get(k).getX()==50*i+przX) && (buttons.get(k).getY()==30*j+przY) &&(buttons.get(k).getText().equals(""+ilosc))){
                        ilosc++;
                        System.out.println("true");
                        break;
                    }else{
                       if(k == buttons.size()-1) isOk = false;
                    }
                }
            }
        }else break;
    }
    System.out.println(""+ilosc);
    if(ilosc==wys*szer) gra = false; //zmienna konczaca gre;
}

Program działa, kiedy od razu wygeneruje mi kolejno klocki od 1 do x2-1. Wypisuje tekst: "Wygrałeś!" Natomiast po włączeniu tasowania i następnie poukładaniu puzzle'a nic się nie wyświetla, gorzej program nie jest zablokowany (napisalem tak, aby po ukończeniu nie można było już klikać na przyciski). Kompletnie nic. I tutaj moje pytanie - czy coś pominąłem albo źle napisałem. Zdaje sobie sprawę, że program mogłem napisać w inny sposób, łatwiejszy, ale trzymam się już powyższego schematu.

Z góry dzieki za pomoc :)

0
     void check(){   //Dokonczyc funkcje check;
        ilosc = 1;
        boolean isOk = true;
        
        for(int j = 0; j<wys; j++){
            if(gra && isOk){
                for(int i = 0; i<szer; i++){             
                    if(isOk==false || (j==wys-1 && i==szer-1)) break;
                    for(int k = 0; k<buttons.size(); k++){
                        if((buttons.get(k).getX()==50*i+przX) && (buttons.get(k).getY()==30*j+przY) &&(buttons.get(k).getText().equals(""+ilosc))){
                            ilosc++;
                            System.out.println("true");
                            break;
                        }else{
                           if(k == buttons.size()-1) isOk = false;
                        }
                    }
                }
            }else break;
        }
        System.out.println(""+ilosc);
        if(ilosc==wys*szer) gra = false; //zmienna konczaca gre;
    }
0

Problem rozwiązany. Funkcja check() była umieszczona w złym miejscu. Wziąłem układ se slicka, a tutaj nie ma czegoś takiego jak pętla nieskończona, sprawdzająca każdą metodę itp. Wsadziłem do ActionListenera i po problemie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1