Zmiany

Skocz do: nawigacji, wyszukiwania

QuizMe

Dodane 147 bajtów, 17:16, 15 mar 2015
/* Iteracja pytań */
==Iteracja pytań==
Zdefiniowałeś już zmienną CurrentQuestionIndex, zapamiętującą pytanie, przy którym znajduje się użytkownik. Zaprogramuj teraz zachowanie przycisku NextButton. Gdy zostanie on kliknięty, aplikacja zwiększy wartość zmiennej, np. zmieni ją z 1 na 2 lub z 2 na 3 itd., a następnie użyje tej wartości do zaznaczenia nowego bieżącego pytania. Do tego zachowania potrzebne są następujące bloki:
{| class="wikitable"!Typ bloku !Kategoria !Działanie|-|when NextButton.Click |NextButton |Uruchamia obsługę zdarzeń po kliknięciu przycisku|-|set currentQuestionIndex to |Zmienne |Decyduje o ustawieniu indeksu wybranej listy|-|+ |Math |Służy do zwiększania wartości zmiennej currentQuestionIndex|-|get global currentQuestionIndex |Zmienne |Tworzy nową wartość poprzez zwiększenie poprzedniej wartości o 1|-|0 (1) |Math |Dla + 1|-|set QuestionLabel.Text to |QuestionLabel |Wyświetla kolejne pytanie|-|select list item |Listy |Ustawia element listy jako wartość QuestionLabel|-|get global QuestionList |Zmienne |Wskazuje, która lista będzie wybrana|-|get global currentQuestionIndex |Zmienne |Wskazuje, który element wybranej listy będzie wybrany |}
Bloki powinny wyglądać następująco:
===Jak działają bloki?===
Pierwszy wiersz polecenia zwiększa wartość zmiennej currentQuestionIndex o 1 (jeżeli zmienna zawiera wartość 1, zostaje ona zmieniona na 2, z 2 na 3 itd.). Następnie wykorzystuje nową wartość do wyboru pytania o tym indeksie. 
Przypomnijmy, że w bloku obsługi zdarzeń Screen.Initialize aplikacja wybrała pierwsze do wyświetlenia pytanie:
Polecenia w blokach są wykonywane od prawej do lewej, tzn. aplikacja najpierw określa wartość parametru z bloku Select list item, którym jest zmienna CurrentQuestionIndex. Liczba zawarta w tej zmiennej zostaje użyta jako indeks podczas wykonania poleceń zawartych w bloku Select list item.
 
Po pierwszym kliknięciu przycisku NextButton, wartość zmiennej currentQuestionIndex przeskoczy z 1 na 2, aby aplikacja wybrała drugą pozycję z listy QuestionList (Kto był pierwszym doskonałym miotaczem w 2010?). Po drugim kliknięciu przycisku NextButton, wartość zmiennej currentQuestionIndex zostanie zmieniona z 2 na 3, a aplikacja wybierze trzecie pytanie z listy (Kto był pierwszym doskonałym miotaczem nowej ery?).
===Przetestuj to zachowanie===
Przetestuj zachowanie przycisku NextButton, aby sprawdzić, czy aplikacja działa poprawnie. Wciel się w rolę użytkownika i kliknij przycisk NextButton w telefonie. Czy urządzenie wyświetliło drugie pytanie: Kto był pierwszym doskonałym miotaczem w 2010?? Trzecie pytanie powinno pojawić się po kolejnym kliknięciu przycisku. Jeżeli aplikacja działa, pogratuluj sobie i przejdź dalej. Kliknij przycisk NextButton ponownie (po raz trzeci). Powinien zostać wyświetlony błąd: Próba uzyskania elementu 4 z listy o długości 3. Czy wiesz, na czym polega problem?
 
Problem z aplikacją polega na tym, że zawsze po kliknięciu przycisku NextButton zwiększa ona zmienną CurrentQuestionIndex o 1. Gdy wartość zmiennej wynosi już 3, a użytkownik kolejny raz kliknie przycisk NextButton, aplikacja zmieni wartość zmiennej z 3 na 4, następnie wywoła blok Select list item, aby odczytać pozycję o aktualnym indeksie CurrentQuestionIndex, czyli w tym przypadku czwartą pozycję. Ponieważ zmienna QuestionList zawiera tylko trzy elementy, Android wykaże błąd.
 
Aplikacja musi zadawać pytanie - sprawdzać warunek - gdy nastąpi kliknięcie przycisku NextButton i realizować polecenia zawarte w różnych blokach w zależności od odpowiedzi. Elementem do sprawdzenia jest to, czy zmienna CurrentQuestionIndex już ma wartość 3. Jeżeli tak - należy ustawić CurrentQuestionIndex z powrotem na 0, aby użytkownik wrócił do pierwszego pytania.
 
Będziesz potrzebował następujących bloków:
{| class="wikitable"!Typ bloku !Kategoria !Działanie|-|if then |Control |sprawdzenie, czy użytkownik jest na etapie ostatniego pytania|-|= |Math |sprawdzenie, czy currentQuestionIndex ma wartość 3|-|get global currentQuestionIndex |Variables ||-|0 (3) |Math |3 to numer na liście|-|set currentQuestionIndex to |Variables |ustawienie na 0, aby wrócić do pierwszego pytania|-|0 |Math |ustawienie na 0, ponieważ kolejne bloki zwiększą wartość do 1|}
Zmodyfikowany blok obsługi zdarzenia When NextButton.Click powinien wyglądać następująco:
===Jak działają bloki===
Po kliknięciu przycisku NextButton aplikacja najpierw sprawdza, czy currentQuestionIndex ma wartość 3. Jeżeli tak, wartość tej zmiennej jest ustawiana na 0, aby po zwiększeniu jej w dalszych krokach jej wartość wyniosła 1. Wtedy quiz wróci do pierwszego pytania. Zauważ, że tylko bloki osadzone w bloku if-then są zależne od warunku. Blok zwiększenia wartości i blok Set QuestionLabel.Text to są wykonywane bez względu na jakikolwiek warunek.
 
==Aplikacja modyfikowalna: Ułatwianie modyfikowania pytań==
Teraz zmodyfikujemy aplikację, aby można było łatwo dodawać i usuwać elementy z listy. Zmień bloki tak, aby działały na liście o dowolnej długości, a nie tylko liście z dokładnie trzema pozycjami.
353
edycje