poniedziałek, 1 sierpnia 2016

“Powtórz 3 czas” Trochę ruchu... w Pocket Code


Od kilku dni zachęcony tekstem Krzysztofa Jaworskiego bawię się programem Pocket Code. Umożliwia on tworzenie aplikacji na urządzenia mobilne z Androidem. Wielkim atutem tego programu jest to, że od razu po zainstalowaniu wszystkie bloczki są w języku polskim. Dzięki temu nawet dzieci poradzą sobie z tworzeniem apek. A propos tłumaczeń… czasem trzeba pomyśleć, co autor miał na myśli...



Często programowanie w nowym środowisku zaczynam od “przetłumaczenia” popularnych programów lub gier na ten język. Tym razem spróbowałem stworzyć wstęp do gry Arkanoid. Początek był łatwy jak w Scratchu. W Pocket Paint powstało tło, piłka, paletka, a w głównej aplikacji - kody do nich.

Skrypt piłki


Skrypt paletki

Schody pokonane dzięki fizyce

I tu zaczęły się “schody”, gdyż obydwa duszki świetnie funkcjonowały samodzielnie, ale nie chciały wejść w interakcję. Okazało się, że trzeba sięgnąć po jeden z bloczków nieprzetłumaczonych (na razie) na nasz język: “Set motion type to...” (Ustaw typ ruchu na...). Mamy tu trzy możliwości do wyboru:
  • bouncing with gravity - odbija się od innych duszków i podlega grawitacji;
  • others bounce off it - inne duszki odbijają się od niego;
  • no bouncing - bez funkcji odbijania.

W naszym programie piłka powinna odbijać się, zatem wybieramy pierwszą opcję, a paletka po zderzeniu pozostaje na swoim miejscu, czyli opcja druga. Jednak wprowadzenie tego bloczka sprawia, że piłka przestaje się odbijać od ścian (bez względu na wybraną opcję) i zmierza w stronę prawego górnego rogu. Z pomocą przychodzą nam tutaj prawa fizyki. Nadajemy piłce szybkość początkową za pomocą bloczka “Set velocity to X: _ Y: _ steps/second” (Ustaw szybkość na …. kroków [w osi X oraz Y] na sekundę). Jednak i teraz piłka nie zachowuje się zgodnie z naszymi oczekiwaniami, gdyż po pewnym czasie spada na ziemię (lub na paletkę) i zatrzymuje się. Dlaczego? Ponieważ podlega ziemskiej grawitacji :) Możemy to zmienić korzystając z bloczka “Set gravity for all objects to X: _ Y: _ steps/second2” (Ustaw grawitację dla wszystkich duszków na… kroków/sekundę2) i ustawiając w obu osiach zera. Jest już o wiele lepiej!

Aplikacja dla realistów

Jednak po chwili zauważamy, że piłka powoli zatrzymuje się. Dlaczego? Hmmm… Ta aplikacja jest chyba stworzona dla fizyków… albo realistów. Przecież piłka podczas odbicia traci nieco energii; a jeśli okaże się, że na choćby krótkim odcinku będzie przesuwała się po powierzchni, to straci część energii z powodu tarcia. Na szczęście i tego możemy się pozbyć ustawiając współczynnik odbicia (“Set bounce factor to”) na 100% oraz pomijając tarcie (“Set friction to 0 %”). Teraz miła niespodzianka! Nie trzeba oprogramować zderzenia piłki z paletką. Wszystko dzieje się zgodnie z prawami fizyki :)


Ostateczny skrypt piłki

A co zrobić, aby z czasem piłka zwiększała szybkość? Pewnie warto poeksperymentować. Można zwiększyć współczynnik odbicia ponad 100%, jednak to może skutkować wypadnięciem piłki poza ekran po pewnym czasie. Innym rozwiązaniem może być wprowadzenie po każdym odbiciu od paletki przyspieszenia o dowolnej wartości na krótki czas.

Jeszcze więcej fizyki

Choć z fizyką w teorii  od dawna nie mam do czynienia, Pocket Code zainspirował mnie do stworzenia programu o rzutach: pionowym, poziomym i ukośnym. Nie chodzi o wzory, ale o doświadczenia, po jakim torze poleci piłka i gdzie wyląduje w zależności od prędkości początkowej (oczywiście też ustawionym w dwóch osiach: pionowej i poziomej). A jaki wpływ na poruszanie się piłki ma podłoże (współczynnik odbicia)? Do programu można zajrzeć TUTAJ.

Poza omówionymi wcześniej parametrami ruchu, istnieje również możliwość ustawienia masy duszka (“Set mass to _ kilogram”). Po co? Można zobaczyć w jaki sposób zachowają się dwie kule po zderzeniu (dla wtajemniczonych: centralnym sprężystym). Czy ich prędkość początkowa i masa mają wpływ na to co się stanie po zderzeniu? Każde dziecko wie, że tak! Ale jak to wygląda w praktyce, można zobaczyć TUTAJ


autor: Michał Demski, nauczyciel matematyki w Zespole Szkolno-Przedszkolnym w Smolcu, trener w projekcie Mistrzowie Kodowania
Share:

0 komentarze:

Prześlij komentarz