Katedra Inżynierii Wiedzy laborki 3
Rysunek: Tworzymy projekt
Rysunek: Tworzymy projekt
Tworzenie GUI szybki sposób - ustawiamy kontrolki tak, aby łącznie uzyskać 9 przycisków typu ToggleButton oraz 3 kontrolki tekstowe (np. TextView) u góry oraz 3 kontrolki - uwaga, w przypadku RelativeLayout kontrolki są ustawione względem boku ekranu lub np. względem siebie - nie możemy przesuwać pojedynczych kontrolek; wolny sposób - tworzymy zestaw pojemników, do których przypisujemy poszczególne elementy - w naszym przypadku będą to 3 pojemniki LinearLayout. Pierwszy u góry(największy) będzie zawierał wszystkie podstawowe elementy: przyciski ToggleButton oraz TextView. Środkowy LinearLayout będzie zawierał przyciski menu, natomiast dolny będzie pusty. (plik xml do pobrania ze strony).
Rysunek: Ustalamy LinearLayout
Rysunek: W pliku java tworzymy przyciski klasy ToggleButton (pamiętamu o importowaniu ToggleButton import android.widget.togglebutton;)
Rysunek: Oraz 6 kontrolek TextView (3 dla wierszy oraz 3 dla kolumn) do wyświetlania liczby włączonych pól odpowiednio w kolumnie i wierszu
Rysunek: W metodzie oncreate przypisujemy obiektom klasy ToggleBotton konkretne elementy z pliku XML (rzutujemy na obiekty klasy ToggleButton)
Rysunek: Analogicznie postępujemy z kontrolkami klasy TextView
Rysunek: Dodajemy przyciski Menu: Poziom 1, Poziom 2, Restart oraz Koniec(sprawdzenie)
Rysunek: Do pliku Java dopisujemy obiekty klasy Button (poniżej obiektów klasy TextView)
Rysunek: Rzutowanie elementów z pliku XML na obiekty w pliku Java
Rysunek: W głównej klasie pliku Java tworzymy 4 dodatkowe metody, które powiązane będą z przyciskami: Poziom 1, Poziom 2, Restart oraz Koniec
Rysunek: Dla każdego z przycisków z powyższego slajdu w oknie Properties w polu onclick przypisujemy odpowiednią metodę
Rysunek: Dodajmy zmienną opisującą każdy poziom Pomysł jest taki, aby w pojedynczym łańcuchu znaków 1:1 1:3:2:1 1:2 przechowywać dane dotyczące poziomu. Łańcuch składa się z 6 części oddzielonych dwukropkiem. Pierwsza część, to informacje o ułożeniu kratek w pierwszym wierszu, druga część odpowiada drugiemu wierszowi, czwarta część to pierwsza kolumna, piąta część - piąta kolumna.
Rysunek: Przygotowujemy definicję metody odpowiedzialnej za wczytanie danych dotyczących poziomu 1 (i analogicznie 2) metoda split umożliwia podzielenie łańcucha znaków, gdzie separatorem jest element przekazany jako parametr tej metody (w naszym przypadku bedzie to : ); nie zajmujemy się wyrównaniem tekstu, zatem po wczytaniu danych do odpowiednich elementów TextView całość może się nieco rozjechać. Możemy wyrównać położenie tych elementów dodając dodatkowe symbole (np. spacji) przed liczbami, zatem nasz kod wyglądałby następująco: kolumna2.settext( + temp[4]);
Rysunek: Metoda Restart Metoda ustawiająca wszystkie przyciski typu Toggle w stan off. Wystarczy, że dla każdego przycisku sprawdzimy jego aktualny stan: jeżeli jest wciśnięty, to wywołujemy metodę Toggle, która zmienia bieżący stan na przeciwny. Operację powtarzamy dla każdego przycisku.
Rysunek: Metoda Restart Dodajmy do naszego kodu 2 zmienne odpowiedzialne za sprawdzenie, który poziom aktualnie jest aktywny - zmienne typu boolean.
Rysunek: Metoda Restart W metodach odpowiedzialnych za załadowanie poziomu dodajmy również informację, który poziom aktualnie został wybrany.
Rysunek: Metoda Restart Żeby ułatwić sobie sprawdzenie, czy poziom został rozwiązany poprawnie - dodamy w kodzie dodatkowe zmienne reprezentujące rozwiązanie w postaci łańcucha znaków. W naszym przypadku 010101111 dla poziomu pierwszego oznacza, iż w pierwszym wierszu mamy 010, czyli tylko drugi przycisk jest przełączony, w kolejnym wierszu następne 3 elementy, czyli 101, a zatem pierwszy i trzeci przycisk, wreszcie w ostatnim wierszu 111, a więc wszystkie trzy przyciski włączone.
Rysunek: Metoda Sprawdź Ostatni etap, to utworzenie łańcucha składającego się z zer i jedynek na podstawie przycisków ToggleButton. Zakładamy, że włączony przycisk oznacza jedynkę, natomiast wyłączony - zero. Na rys. przedstawiono fragment kodu dla dwóch pierwszych przycisków.
Rysunek: Metoda Sprawdź Ostatni etap, to sprawdzenie, który poziom aktualnie jest wybrany (zmienna typu boolean), następnie przyrównanie łańcucha zer i jedynek ze wzorcem opisującym dany poziom (utworzony 2 slajdy wcześniej). Jeżeli porównanie wypadło pomyślnie, to układ przycisków ToggleButton odpowiada wzorcowi i poziom uznajemy za ukończony.