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.