Robiliśmy animację piłki
odbijającej się od ścian.
Użyliśmy funkcji rysowania
i instrukcji warunkowych.
Określiliśmy zmienne
dla pozycji i prędkości piłki.
W funkcji rysowania, wywoływanej
raz po raz przez program,
malujemy tło i rysujemy elipsę.
Punkt zależy od zmiennej
pozycji oraz prędkości
i tego, jak na siebie wpływają.
Bez instrukcji warunkowych
piłka leciała i leciała,
aż wcisnęliśmy „restart”.
Dodaliśmy dwie instrukcje warunkowe,
żeby sprawdzić, czy piłka
jest blisko lewej lub prawej krawędzi,
a wtedy zmienialiśmy kierunek,
żeby piłka się odbijała.
Teraz piłka będzie się odbijała
w nieskończoność.
Fajna rzecz. W ten sposób
można zrobić wiele animacji.
Teraz włączę do programu
interakcję z użytkownikiem.
Na razie - to jak program w TV.
Jeśli dacie go koledze,
który nie umie programować,
nie zrobi nic poza patrzeniem.
To jest niezłe, ale lepiej
byłoby coś zrobić.
Dajmy użytkownikowi
kontrolę nad piłką.
Pamiętacie, jak uczyliśmy się
o zmiennych globalnych
„mouseX” i „mouseY”?
Zwracają liczby mówiące o bieżącej
pozycji myszki użytkownika.
Dzięki nim program
będzie interaktywny.
Pomyślmy - jak je wykorzystać?
Gdzieś wewnątrz funkcji rysowania.
Bo to jedyny stale wywoływany
kod w trakcie działania programu.
Wszystko spoza „draw”
jest wywoływane raz,
gdy program się uruchamia.
Nie ma sensu używać tam
„mouseX” i „mouseY”.
Żadnej szansy na interakcję.
W „draw” teraz rysujemy piłkę
200 pikseli w dół ekranu.
A gdybyśmy zastąpili to „mouseY”?
Bo to jest pozycja „y”.
Program doda pozycję „y”
zależnie od pozycji „y” użytkownika.
Patrzcie:
Poruszając kursorem w pionie,
zmieniam trasę
poruszania się piłki. I super!
Ale chcę też użyć „mouseX”.
Jak to zrobić?
Może zaprogramujmy drugą piłkę.
Niech przemieszcza się
w górę i w dół.
Wtedy użytkownik
będzie kontrolował pozycję „x”.
Zrobimy odwrotnie
niż poprzednio. Elipsa...
„mouseX” pozycja: 50,50.
Spójrzcie!
Mam dwie piłki, poruszające się
prostopadle do siebie.
Ale to jeszcze nie to.
Chcę więcej kontroli
dla użytkownika!
Żeby sam mógł stworzyć
drugą piłkę.
Po prostu wciskając
przycisk myszki.
Tylko jak powiedzieć programowi,
że ktoś wciska przycisk?
Na szczęście mamy do tego
wyjątkową zmienną logiczną.
Nazywa się „mouseIsPressed”
i używamy jej w instrukcji warunkowej.
Zobaczmy. To druga piłka.
Możemy więc napisać: „if” (jeśli)
„mouseIsPressed”,
i przenosimy tu dwukropek elipsy.
Tutaj mówimy programowi,
że ma narysować tę elipsę
tylko jeśli to jest prawda.
A „mouseIsPressed” jest prawdą,
gdy użytkownik wciska klawisz myszki.
Spróbujmy.
Piłka pojawi się,
gdy wcisnę przycisk myszki.
Przylatuje ze wszechświata
równoległego. Jest! Jest!
Świetnie!
W zmiennej „mouseIsPressed”
ciekawe jest to,
że zmienia się zależnie od działania
użytkownika, a nie programu.
A że funkcja „draw”
jest wywoływana raz po raz,
wynik będzie się zmieniał,
z małą pomocą użytkownika.
Dzięki połączonym siłom instrukcji
warunkowej i „mouseIsPressed”,
macie wszystko, żeby robić
świetne programy do rysowania.