Zmiany

Skocz do: nawigacji, wyszukiwania

Czasomierz lekcyjny

Dodane 2369 bajtów, 11:00, 7 lis 2014
[[Category:Scenariusze Scratch]] [[Category:Mistrzowie Kodowania]]
'''Materiały stworzone przez Fundację Coder Dojo Polska w ramach Programu „Mistrzowie Kodowania” finansowanego przez Samsung Electronics Polska, objęte licencją CC BY 3.0 PL "Creative Commons Uznanie Autorstwa 3.0 Polska".'''
== Cel projektu Informacje ======Cele====Celem projektu jest stworzenie aplikacji, która będzie odmierzała czas np. lekcji, albo czas przeznaczony na odpowiedź ucznia na pytania i dawała . Aplikacja, poprzez wizualne i dźwiękowe wskazówki mówiącemusygnalizuje, że jego upływający czas się kończy.
# Przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka Scratch ('''zmienna, nadaj wiadomość, kiedy otrzymam wiadomość'''), # Wykorzystanie opcji dostępnej w Bloku [[Plik:Czasomierz.png]]# Implementacja projektu w środowisku Scratch# Opcjonalnie: '''wykorzystanie możliwości tworzenia własnych bloków''': [[Plik:Wiecej blokow stworz blok.png]] == Instrukcje ==Poziom trudności i proponowane wersje==== Gotowy projekt [http://scratch.mit.edu/projects/26833381/ Czasomierz lekcyjny]* Poziom trudności dla klas 4-6 ✪✪✰✰* Poziom trudności dla gimnazjum ✪✰✰✰ Gotowy projekt projekt [http://scratch.mit.edu/projects/26836599/ Czasomierz lekcyjny - wersja B] z opcją tworzenia własnych bloków* Poziom trudności dla klas 4-6 ✪✪✪✰ * Poziom trudności dla gimnazjum ✪✪✰✰  Gotowy projekt projekt [http://scratch.mit.edu/projects/25974535/ Czasomierz lekcyjny - wersja C] z opcją tworzenia własnych bloków oraz zaznaczaniem kolorem upływającego odcinka czasu, uruchamianie odliczania klawiszem ''spacja''* Poziom trudności dla klas 4-6 ✪✪✪✰* Poziom trudności dla gimnazjum ✪✪✰✰ ====Orientacyjny czas realizacji====Orientacyjny czas realizacji jednej z proponowanych wersji: 2x 45minut. == Etapy ==
=== Interakcja z użytkownikiem ===
Jak Scratch radzi sobie z czasem?Do mierzenia czasu w Scratch możemy użyć dwóch klocków z grupy "czujniki":
* Klocka "czasomierz", który zlicza sekundy (co do części dziesiętnej),
* Klocka "aktualna godzina / minuta".
W prezentowanym projekcie, do mierzenia czasu wykorzystany zostanie '''czasomierz'''. '''Wskazówka:''' [[Plik:Czasowmierz.png]] Pierwszym etapem budowy jest zaprojektowanie sposobu w jaki użytkownik ustawi ile wprowadzi dane liczbowe odpowiadające wartości czasu , który ma być odmierzoneodmierzony. W tym celu wykorzystane zostaną klocki:# [[Plik:Klocek1a.png]] oraz [[Plik:Klocek1b.png]] aby uzyskać informację # [[Plik:Czasomierz nazewnictwo1.JPG]] aby zgromadzić zebrane dane# [[Plik:Połącz.png]] aby połączyć zebrane dane Przykładowy skrypt może wyglądać w następujący sposób
[[Plik:Czasomierz_01.png|Krok 1. - zaprojektowanie sposobu ustawiania czasu do odliczenia]]
==== Radzenie sobie z nietypowymi sytuacjami w interakcji z użytkownikiem ====
Co się stanie jeśli użytkownik aplikacji zamiast liczby minut wpisze dla żartu coś, co nie jest liczbą? Nasz program mógłby zacząć funkcjonować w niespodziewany sposób. Do pewnego stopnia chroni nas przed tym sam Scratch, który jeśli spróbujemy wykonać jakieś działanie matematyczne na zmiennej, która przechowuje napis'''tekst''', zamieni napis '''tekst''' na liczbę zero. W ten też sposób możemy łatwo sprawdzić czy ktoś podał liczbę (tak, jak chcemy), czy napis'''tekst''': (uczniowie mogą sami wymyślić ten sposób na bazie podanej właściwości):
[[Plik:czasomierz_02Czasomierz 02.png|Sposób na sprawdzenie, czy wprowadzona została liczba, czy tekstjpg]]
'''Uwaga:''' Opcjonalnie można wykorzystać opcję definiowania nowych bloków, aby przygotować klocek sprawdzania czy podana wartość jest liczbą.  [[Plik:info.png|50px|left]]Czasem warto - w celu poprawy przejrzystości skryptów - często powtarzające się fragmenty połączyć w jeden blok. Wykorzystując zakładkę [[Plik:Wiecej blokow stworz blok.png]] tworzymy kod złożonego działania, zawarty w pojedynczym bloku. W proponowanym scenariuszu skrypt wykorzystujący opcję definiowania własnego bloku wygląda w następujący sposób: [[Plik:Definiowanie.JPG]] === Grafika Duszek "Wskazówka" ===* Ustawiamy tło (scenę): rysujemy tarczę naszego czasomierza w trybie wektorowym używając narzędzia elipsa z wciśniętym klawiszem "shift" (wtedy uzyskamy dokładne koło)aby uzyskać okrąg.
* Dodajemy duszka - wskazówkę czasomierza. Wygląd jest dowolny, istotne jest to, żeby punkt obrotu duszka był na początku wskazówki:
[[Plik:czasomierz_03.png|Ustawianie punktu obrotu duszka (szary plus na końcu wskazówki)]]
* Wskazówkę ustawiamy tak, żeby zaczynała się na środku tarczy czasomierza.
* W przygotowanym projekcie wskazówka została narysowana w poziomie, co w dalszej kolejności warunkuje ustawienie pozycji startowej (aby wskazówka rozpoczynała ruch od pozycji pionowej, należy ustawić jej kierunek na 0)
=== Przesuwanie wskazówki ===
* Wskazówkę ustawiamy tak, żeby zaczynała się na środku tarczy czasomierza* Zarys skryptu wygląda następująco:[[Plik:Czasomierz 04.png|Krok 3: Zarys skryptu zliczającego czas i przesuwającego wskazówkę]]# W momencie, kiedy dowiemy się już jaki czas należy odmierzyć nadawana Rozpoczęcie ruchu wskazówki inicjowane jest komunikatem nadaj wiadomość "czas-start!"wysyłanym po podaniu przez użytkownika czasu, jaki ma zostać odmierzony.# Wskazówka w reakcji na wiadomość pokazuje się w pionie (można oczywiście wystartować z dowolnej pozycji)Wykorzystując wyrażenie mnożenia oraz dodawania, określona zostaje łączna suma sekund do odliczenia; # Pomarańczowy klocek zlicza sumę sekund jaką należy odmierzyć i przechowuje ją Wprowadzne przez użykownika dane, zostają przechowane w zmiennej (lokalnej (zdefiniowanej tylko dla tego duszka-wskazówki) zmiennej '''czas-suma''' # Uruchamiana Zarys skryptu wygląda następująco: [[Plik:Czasomierz nazewnictwo2.JPG]] * Wykorzystując klocek ''powtarzaj aż'' uruchamiana jest pętla, która ma przesuwać ma wskazówkę (obracać jąobracac) wskazówkę, dopóki czasomierz (który zresetowany został chwilę przed nadaniem wiadomości) wskazanie czasomierza nie zrówna się z wyznaczona wartością czasu do odliczenia. Dodatkowo zabezpieczamy się przed  '''Uwaga:''' W programie Scratch czasomierz stale odmierza sekundy, w związku z tymnależy wprowadzić opcję zresetowania wartości czasomierza wraz z uruchomieniem odliczania zadanego czasu. W tym celu należy użyć klocka  [[Plik:Zeruj stoper.png]]  * Użycie klocków warunku umożliwia określenie zarówno momentu zrównania wartości czasomierza i wyznaczonego czasu, że jak również dodatkowo zabezpiecza przed, sytuacją w kótrej czas odmierzony przez czasomierz może "przeskoczyć" wartość pożądaną - stąd również przekroczenie czasu kończy pętlę# Po zakończeniu odliczania ustawiamy wskazówkę na powrót w pionie i uruchamiamy efekty dodatkowe, np. odgrywamy dźwięk, duszki mogą coś powiedzieć itd.
Trudniejszym elementem jest zawartość pętli ustawiającej duszka. Wygląda ona następująco* Efekt ruchu wskazówki uzyskujemy przy użyciu klocków [[Plik:Czasomierz nazewnictwo3.JPG]]
[[Plik:Czasomierz 05.png|Krok 3: Skrypt obliczający nachylenie wskazówki]]* W scratch kierunki ustawia się następująco: góra do kierunek 0 stopniPo zakończeniu odliczania ustawiamy wskazówkę ponownie w pionie i uruchamiamy efekty dodatkowe, dół to kierunek 180 stopni (lub -180)np. Pozycje pośrednie ze strony prawej mają wartość dodatnią, a z lewej wartość ujemną [[//wiki.scratch.mit.edu/wiki/Direction_(value)]]* W związku z tym musimy podzielić skrypt na trzy sekcje: 1) od początku do połowy czasu wskazówka porusza się od -360 stopni do -180 (rośnie), w połowie ustawia się pionowo w dół (180 stopni), po czym w drugiej połowie czasu aż do końca przesuwa się od 180 do 0 stopni (tym razem malejąco)dźwięk.
Alternatywnie możemy skorzystać z prostego hacku: okazuje się, że Scratch zrozumie również koordynaty od 0 do 360 stopni, wówczas skrypt ten można uprościć do jednego klocka:[[Plik:Czasomierz 06nazewnictwo 4.png|Krok 3: Skrypt obliczający nachylenie wskazówki - uproszczonyJPG]]
== Działający projekt Dodatkowe opcje==Projekt czasomierza można rozwinąć o:*start spacją, umożliwiający start w dowolnym momencie*graficzny efekt odmierzania czasu, uzyskany poprzez użycie narzędzia [//scratch[Plik:Stempluj.mitPNG]] [[Plik:Czasomierz stemplowanie.edu/projects/25272997/ PNG]]*wprowadzenie intuicyjnego, zegarowego kierunku obrotu, poprzez zmianę wartości w ustawieniu kierunku:[[Plik:Czasomierz lekcyjnydodatki.PNG]]