#17 Grywalizacja, czyli dodanie kolejnej logiki to zadań

Kolejnym krokiem w rozwoju naszej aplikacji jest napisanie następnej logiki 😉 Ta jednak będzie nieco bardziej będzie opierała się o zasady grywalizacji.

Przypomnę dla porządku czym jest grywalizacja, chodzi o zastosowanie zdobywania punktów, odznak, poziomów w (naszym przypadku) procesie uczenia. Pomysł jest taki, aby użytkownicy mogli sobie wybrać zestaw zadań do rozwiązania na 3 poziomach. Najwyższy poziom daje najmniej czasu na odpowiedź, oraz nie pozwala na pomyłki. Wyższe pozwalają na dwie lub jedną pomyłkę. Pokażę może teraz jak to działa:

Jak widać ekran po wykonaniu zadania nie jest jeszcze zaprojektowany. To tam będzie informacja, czy użytkownik dostał daną odznakę, czy mu się nie udało. Na ekranie widzimy wyświetlone zadanie, oraz pomniejszającą się ikonkę zegarka (taki na ten moment miałem pomysł na pokazanie uciekającego czasu 😉 oraz liczbę punktów. Brakuje jeszcze sporo rzeczy (między innymi nie wyświetlam jeszcze opisu zadań, czyli co trzeba zrobić i w jakim czasie na danym poziomie).
Parę słów o implementacji, po pierwsze, niech żyją interfejsy! Doszedłem do wniosku, że jedyną informacją jaką powinienem przekazywać jest informacja, czy użytkownik dał dobrą czy złą odpowiedź, oczekując w odpowiedzi czy w związku z tym uruchomić następną aktywność, czy niech odpowiada dalej. Stworzyłem więc sobie do tego interfejs:
Następnie stworzyłem klasę która dziedziczyła z klasy głównej i którą będą rozszerzały wszystkie zadania. Klasa ta zawiera np taki fragment:
Jak widzimy nadklasa decyduje której implementacji użyć, W klasie właściwej używam tylko:
Sprawdzam co zwraca implementacja i decyduję, czy startuję z aktywnością, czy czyszczę ekran i użytkownik ma następną szansę. Ta nadklasa decyduje również o wystartowaniu animacji (konstruktor przyjmujący obiekt Intent ją implementuje). Ma też metody start i stop time:
Niestety listener obiektu Animation wymusza na mnie implementację 3 metod, chociaż korzystam tylko z jednej.

To by było chyba na tyle jeśli chodzi o postępy w projekcie. Wkrótce następne wpisy, stay tuned! 😉

Pozdrawiam!