Zmiany

Skocz do: nawigacji, wyszukiwania

Scenariusz 2 - Squash

Dodane 4143 bajty, 15:39, 2 mar 2015
/* Scenariusz 2 */
[[Plik:info.png|left]]''Warto zwrócić uwagę na hierarchię komponentów w oknie '''Components'''. Jak pamiętamy, w poprzedniej aplikacji wszystkie komponenty były bezpośrednio podrzędne dla '''Screen1'''. Tutaj podrzędny dla '''Screen1''' jest tylko '''Canvas1''', natomiast pozostałe dwa komponenty ('''Piłka''' oraz '''ImageSprite''') są podrzędne dla komponentu '''Canvas1'''.''
 
[[Plik:s2-6.png]]
 
Zmieńmy jeszcze nazwy pozostałych komponentów. '''Canvas1''' przestawmy na '''Boisko''' (1), zaś '''ImageSprite1''' na '''Paletka''' (2).
 
[[Plik:s2-7.png]]
 
Teraz przejdziemy do następnego kroku, czyli do skonfigurowania paletki.
 
[[Plik:s2-8.png]]
 
Przejdźmy zatem do zmiany właściwości komponentu o nazwie Paletka. Na początek kliknijmy na paletkę w oknie Components, by ją zaznaczyć - dzięki temu w oknie Properties pojawią się opcje, które pozwolą nam skonfigurować naszą paletkę. Konfigurację jej cech podzielimy na dwa kroki. W pierwszym kroku zadbamy o jej wygląd, zaś w drugim zajmiemy się jej rozmiarem i pozycją.
<ol><li>'''Ustawienie pliku graficznego''' - wygląd paletki będzie wczytany z pliku graficznego, który załadujemy do programu. Paletka bez załadowanej grafiki byłaby przezroczysta, a to zdecydowanie utrudniłoby nam grę. Musimy zatem przygotować dowolny plik graficzny, np. w formacie png i wczytać go do mediów aplikacji, by następnie przypisać do paletki. Kliknijmy więc na '''Upload File''' (1) w oknie '''Media''' i odszukajmy plik, który chcemy wczytać do programu. Następnie przechodzimy do okna '''Properties''' i tam w polu '''Picture''' z rozwijanej listy wybierzmy nasz plik. Plików multimedialnych nie możemy przypisać bezpośrednio do komponentów, stąd w pierwszej kolejności musieliśmy wczytać plik do biblioteki mediów.</li>
<li>'''Wielkość i pozycja''' - po tym, jak wczytaliśmy już plik graficzny, przejdźmy do ustawienia pozostałych parametrów. Współrzędną X ustawmy na 100 pikseli, zaś Y - na 270 (3). Następnie parametry '''Width''' (szerokość) na 70 pikseli, a '''Height''' (wysokość) na 20 pikseli.</li></ol>
'''<li>Squash - programowanie aplikacji</li>'''
Po tym, jak zakończyliśmy projektowanie interfejsu aplikacji, możemy zająć się stworzeniem odpowiedniego programu. Tym razem zbudowanie poprawnego kodu będzie wymagało od nas większej pracy niż w przypadku poprzedniej aplikacji. Tam wystarczyła nam tylko jedna instrukcja zbudowana z bloków, natomiast tutaj potrzebujemy ich kilka. Przejdźmy więc teraz do zakładki '''Blocks''', a poniżej, krok po kroku, omówimy wszystkie instrukcje.
 
'''Zderzenie piłki z paletką i odbicie piłki'''
 
Podstawową interakcją w naszej grze jest zderzenie piłeczki z paletką. Gdy do tego dojdzie, piłka musi odbić się od paletki. Musimy zatem ustalić, w jaki sposób ma zachować się piłka i określić, w stosunku do jakiego obiektu to zachowanie ma wystąpić.
 
Naszą instrukcję można opisać w następujący sposób: '''Kiedy piłka zderzy się z innym obiektem, to odbij piłkę tak, jakby dotknęła dolnej krawędzi.'''
 
[[Plik:s2-9.png]]
 
Jak to działa? Przede wszystkim pamiętajmy, że piłka ma swoją prędkość. Gdy poruszająca się '''Piłka''' uderza w krawędź '''Canvas''' (nasze '''Boisko'''), to wywołuje wydarzenie '''EdgeReached''' (''zetknięcie z krawędzią''), a gdy uderza w inny obiekt, to wywołuje wydarzenie '''CollidedWith''' (''zderzenie z...''). My na ekranie mamy tylko jeden obiekt inny niż piłka, czyli paletkę. Zatem gdy piłka uderzy w paletkę, to zostanie uruchomiona akcja '''call[Piłka].Bounce''' (“''odbij piłkę''”). Akcja odbicia musi jeszcze wiedzieć, w którą stronę ma piłkę odbić, gdy ta uderzy w krawędź boczną lub górną i właśnie do tego służy parametr '''edge''' (''krawędź''). Jego wartość ustawiona na -1 powoduje odbicie '''Piłki''' tak, jakby dotknęła dolnej krawędzi (oznaczenia wszystkich krawędzi znajdują
się dalej).
 
'''Other''' (''inny obiekt''), można wykorzystać do ustalenia, w który obiekt uderzyła '''Piłka'''. My na ekranie mamy tylko paletkę, więc nie musimy sprawdzać wartości '''other'''.
 
Polecenia '''When[Piłka].CollidedWith''' oraz '''Call[Piłka].Bounce''' znajdziemy w grupie '''Piłka''' (1), zaś obiekt z wartością liczbową - w grupie '''Math''' (2).
 
[[Plik:s2-10.png]]
 
[[Plik:info.png|left]]''Wszystkie instrukcje, tak jak w Scratchu, podzielone są na kategorie oznaczone odpowiednimi kolorami, co ułatwia nawigację.''
353
edycje