Zmiany

Skocz do: nawigacji, wyszukiwania

Generator wielokątów

Dodane 5776 bajtów, 11:00, 7 lis 2014
== Cele ==Celem jest stworzenie generatora wielokątów, umożliwiającego rysowanie wielokąty o zadanych przez użytkownika parametrach - liczbie boków i długości boku, jednocześnie wprowadzona zostanie procedura w języku [[Category:Scenariusze Scratch tworzenia własnych klocków (opcja ]] [[Więcej blokówCategory:Mistrzowie Kodowania]]) i projektowanie interfejsu użytkownika'''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".'''
==Informacje= Cele ogólne ===...
=== Cele szczegółowe ===© Oparto o pomysł Wiesławy Bednarskiej [https://www.dropbox.com/sh/65n404j8p7pd6ox/AACqat9v9wfGvBnHmf9QD2uMa "Miara kątów wielokątów i wielokąty foremne"], licencja: [http://creativecommons.org/licenses/by-sa/3.0/ CC-BY-SA 3.0 Deed]
=== Podstawa programowa Cele ===Celem jest stworzenie generatora wielokątów, umożliwiającego rysowanie wielokątów o zadanych przez użytkownika parametrach - liczbie boków i długości boku, jednocześnie wprowadzona zostanie procedura w języku Scratch tworzenia własnych klocków (opcja [[Więcej bloków]]) i projektowanie interfejsu użytkownika...* Aplikacja ma umożliwiać rysowanie dowolnych wielokątów - od trójkąta aż po wielokąt o tysiącu boków* Aplikacja ma umożliwiać regulowanie długości boku wielokąta tak, żeby uzyskać wielokąt mały lub duży
==Informacje==# Przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka Scratch ('''zmienna, pisak, nadaj wiadomość i czekaj'''), # Implementacja projektu w środowisku Scratch# Wykorzystanie opcji '''definiuj'''© Oparto o pomysł Wiesławy Bednarkiej [https[Plik://wwwDefiniuj.dropbox.com/sh/65n404j8p7pd6ox/AACqat9v9wfGvBnHmf9QD2uMa "Miara kątów wielokąta i kąty foremne"png], licencja: [http://creativecommons.org/licenses/by-sa/3.0/ CC-BY-SA 3.0 Deed]
===Poziom trudności i proponowane wersje=== Poziom trudności dla klas 4-6 ✪✪✰✰ Gotowy projekt [http://scratch.mit.edu/projects/24590302/ Wielokąty] Projekt można rozwinąć o: '''Założenia projektu:1. regulację liczby elementów w rozecie'''* Aplikacja ma umożliwiać rysowanie dowolnych wielokątów - od trójkąta aż po wielokąt o tysiącu to nie musi być zawsze tyle ile liczba boków- można wyobrazić sobie np. 20 trójkątów rozłożonych równomiernie na planie okręgu.* Aplikacja ma umożliwiać regulowanie długości boku wielokątaDobrze dodać na scenie również informację o tym, tak, żeby uzyskać wielokąt mały lub dużyże "flaga" czyści ekran.Ciekawe efekty daje łączenie wielu figur na jednym ekranie. '''2. wypełnianie kolorem rozety złożonej z wieloboków'''# [http://scratch.mit.edu/projects/25798168/ wypełnianie wieloboków i układanie rozety]# [http://scratch.mit.edu/projects/25798410/ rysowanie rozety i wypełnianie jej kolorem] ===Orientacyjny czas realizacji===Orientacyjny czzas realizacji podstawowej wersji 2x45minut.
==Etapy==
===Skrypt duszka ''Rysownik''===
Generator wielokątów ma umożliwić tworzenie figur zgodnie z uniwersalną zasadą: '''duszek ma obrócić się o liczbę stopni według wzoru 360 stopni / liczba boków,''' czyli np. w przypadku trójkąta o 120, w przypadku kwadratu o 90, pięcioboku pięciokąta o 72 itd. Aby tworzenie figur było widoczne wykorzystujemy klocki bloku [[Pisak]].
Aby przetestować założenia programujemy prosty skrypt dla trójkąta:
[[Plik:Wielokaty skrypt 1.png]]
2: Poprzez uzycie użycie suwaków dla zmiennych oraz stworzyć stworzenie duszka "start", po którego kliknięciu rozpocznie się rysowanie. W dalszej części proponowanego projektu realizowany będzie drugi sposób:
W bloku [[Dane]] zaznaczamy stworzone zmienne:
[[Plik:Wielokaty skrypt 3.png]]
Ustawiamy '''Uwaga:'''Istotne jest, aby w trakcie ustalania minimalnej oraz maksymalnej ilości kątów, położyć nacisk na rozsądne wartości: minimalna liczba boków 3, maksymalna np.: boki od 3 do 20, długość boku od 2 do 50.
=== "Interfejs użytkownika"===
==== Przycisk "Rysuj" ====
Dodajemy przycisk uruchamiający grafikę przycisku uruchamiającego rysowanie: duszek ''rysuj''.
[[Plik:Wielokaty rysuj.png]]
Oraz Na tym etapie tworzymy prosty skrypt, nadający sygnał "rysuj" kiedy przycisk zostanie wciśnięty. W dalszej części powstanie skrypt umożliwiający uruchamianie rysowania.
[[Plik:Wielokaty rysuj1.png]]
'''Zadanie:Wskazówka''' Dlaczego użycie W proponowanej wersji, zamiast wersji "nadaj rysuj" jest gorszym rozwiązaniem od użuwamy klocka "nadaj "rysuj" i czekaj"?<small>''Możliwość , aby uniknąć możliwość zakłócenia trwającą procedurę trwającej procedury rysownika''</small>. Zmiana parametrów wielokąta jest możliwa dopiero po ukończeniu rysowania figury.
==== Modyfikacja skryptu ''Rysownik''====
Na tym etapie konieczne jest zaktualizowanie dotychczasowego Przygotowanie do zaktualizowania skryptu duszka ''Rysownik''. Taktak, aby reagował na komunikat "Rysuj", a nie [[Plik:Kiedy kliknieto ZF.png]] która ma rozpoczynamy od poleceń mających tylko przygotować ''Rysownika'' do działania:
[[Plik:Wielokaty rysuj2.png]]
 
=== Tworzenie własnej procedury ''[[Więcej Bloków]]''===
W dalszej części, aktualizacja skryptu duszka ''Rysownik'' tak aby po otrzymaniu komunikatu narysował wielokąt, oparta jest o wprowadzenie "własnych klocków" czy "procedur". W tym celu korzystamy z opcji [[Więcej Bloków]]:
 
[[Plik:Procedura.png]]
 
Zaznaczamy ''stwórz blok'':
 
[[Plik:Procedura2.png]]
 
Nadajemy nazwę, np.: ''rysuj_wielobok'' a w opcjach dodatkowych dodajemy do procedury dwa miejsca na własne parametry liczbowe (tam trafią zmienne informujące o liczbie boków i długości boków). Zatwierdzamy nowy blok, będący początkiem procedury:
 
[[Plik:Procedura3.png]]
 
Do bloku rozpoczynającego procedurę dodajemy kolejne etapy rysowania wieloboku w oparciu o zmienne.
 
'''Uwaga:'''
procedura nie reaguje na zmienne zewnętrzne (pomarańczowe owale w Scratch), a jedynie swoje własne parametry (niebieskie owale). W procedurze wykorzystywane są parametry własne.
 
[[Plik:Procedura4.png]]
 
Kolejnym etapem jest wywołanie całej procedury ''rysuj wielobok'' po otrzymaniu komunikatu ''Rysuj'':
 
[[Plik:Procedura5.png]]
 
===Opcje dodatkowe===
====Kolorowe figury====
Dodanie jednego klocka do zdefiniowanej procedury ''rysuj_wielobok'', umożliwia wprowadzenie zmiany kolorów rysowanych figur.
 
* Aby cała figura została narysowana tęczowymi kolorami:
 
[[Plik:Wielokaty kolorowe figury.png]]
 
* Aby każda figura miala losowo wybrany kolor:
 
[[Plik:Wielokaty kolorowe figury1.png]]
 
====Efekt wciśnięcia przycisku ''Rysuj''====
Aby uatrakcyjnić graficznie grę, można dodać efekt "wciśnięcia" przycisku ''Rysuj''. Wiąże się to z koniecznością dodania kostiumu guzika "wciśniętego":
 
[[Plik:Przycisk rysuj.png]]
 
A następnie modyfikację skryptu duszka ''Rysuj''
 
[[Plik:Rysuj.png]]
 
<small>'''Uwaga:'''
W trybie edycji, kod może sprawiać wrażenie, że nie działa, ponieważ przytrzymanie guzika powoduje, że Scratch umożliwia nam jego przesuwanie zamiast uruchomienia skryptu. Aby sprawdzić działanie animacji należy uruchomić aplikację na całym ekranie i wcisnąć zieloną flagę.</small>
 
====Rozety====
Interesujący efekt można uzyskać rysując tyle figur, ile jest boków (np. 3x trójkąt, 4x kwadrat, 5x pięciokąt itd..), przy założeniu, że każda kolejna figura będzie rysowana z przesunięciem. Wzór taki nazywał się będzie rozetą.
 
'''Zadanie:''' O ile stopni przesunięte powinny być figury, żeby rozłożyły się równomiernie na planie okręgu?
<small>Jest to ta sama liczba stopni, która służyła do obrotu przy rysowaniu figury, czyli np. trójkąty powinny być przesunięte o 180 stopni, a pięciokąty o 72 stopnie.</small>
 
=====Duszek ''Rozeta''=====
Tworzymy grafikę duszka ''Rozeta'', posiadającą dwa kostiumy:
 
[[Plik:Rozeta.png]]
 
=====Skrypt duszka ''Rozeta''=====
Skrypt duszka ''Rozeta'' ma umożliwić zmianę wyglądu przycisku oraz zmianę trybu włączony/wyłączony, w zależności od zaznaczenia opcji przez gracza.
 
[[Plik:Rozeta1.png]]
 
=====Modyfikacja skryptu duszka ''Rysownik''=====
Wprowadzenie opcji rysowania rozety wymaga kolejnej modyfikacji w skrypcie duszka Rysownik. Dotychczasowy skrypt należy uzupełnić o algorytm umożliwiający uzyskanie efektu rysowania tylu figur, ile jest boków.
Niezależny skrypt rysowania rozety może wyglądać w następujący sposób:
 
[[Plik:Rozeta2.png]]
 
Wprowadzamy modyfikację dotychczasowego skryptu duszka ''Rysownik'' o skrypt rysowania rozety uzyskując finalny skrypt:
 
[[Plik:Rozeta finalny.png]]
 
Jednocześnie zmodyfikowany został punkt startowy rysowania:
 
[[Plik:Polozenie rysowania.png]]
 
==Rozwinięcie projektu==
 
'''Zadanie problemowe:''' w jaki sposób uzyskać efekt wypełnienia kolorem pola wielokątów?
Proponujemy uczniom samodzielne poszukiwanie rozwiązań. Uzyskane wyniki można porównać z dwoma propozycjami:
# projekt zawierający kod [http://scratch.mit.edu/projects/25798168/ wypełniania kolorem wieloboków a następnie układania rozety]
# projekt zawierajacy kod [http://scratch.mit.edu/projects/25798410/ rysowania rozety i stopniowe wypełnianie jej kolorem]