Zmiany

Skocz do: nawigacji, wyszukiwania

Generator wielokątów

Dodane 6728 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:
Po sprawdzeniu czy program działa, przechodzimy do rozwinięcia skryptu o opcję rysowania różnych figur. W tym celu wykorzystujemy klocki z bloku [[Zmienne]]. Tworzymy zmienne lokalne w duszku "Rysownik" dla liczby boków "boki" oraz długości boku "dlugosc", są to wartości modyfikowane przez użytkownika.
 Zmiany zmiennych można wprowadzić na dwa sposoby:1: Duszek''Rrysownik'' zapyta o wartości tych zmiennych i potem wykona ryunek: [[Plik:Wielokaty skrypt 1.png]] 2: Poprzez użycie suwaków dla zmiennych oraz 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 2.png]] Następnie klikamy na element zmienne znajdujący się w oknie [[scena]] programu prawym klawiszem myszy (PPM) i wybieramy "ustaw min i max suwaka": [[Plik:Wielokaty skrypt 3.png]] '''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.: do 20, długość boku od 2 do 50.  === "Interfejs użytkownika"===Interfejs użytkownika tworzymy poprzez modyfikację tła, np.: [[Plik:Wielokaty skrypt 4.png]] ==== Przycisk "Rysuj" ====Dodajemy grafikę przycisku uruchamiającego rysowanie: duszek ''rysuj''. [[Plik:Wielokaty rysuj.png]] 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]] '''Wskazówka''' W proponowanej wersji, zamiast wersji "nadaj rysuj" użuwamy klocka "nadaj "rysuj" i czekaj", aby uniknąć możliwość zakłócenia trwającej procedury rysownika. Zmiana parametrów wielokąta jest możliwa dopiero po ukończeniu rysowania figury. ==== Modyfikacja skryptu ''Rysownik''====Przygotowanie do zaktualizowania skryptu duszka ''Rysownik'' tak, aby reagował na komunikat "Rysuj", a nie [[Plik:Kiedy kliknieto ZF.png]] 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:''' zmienne w scratch mogą zawierać polskie znaki 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 spacjewcisnąć zieloną flagę.</small> ====Rozety====Interesujący efekt można uzyskać rysując tyle figur, ale jak we wszystkich językach programowania - lepiej ich jednak unikaćile jest boków (np. 3x trójkąt, bo mogą powodować problemy z bardziej zaawansowanych procedurach4x kwadrat, 5x pięciokąt itd. Np. sprawdziliśmy), przy założeniu, że stworzenie własnego bloczku kodu każda kolejna figura będzie rysowana z parametrami z polskimi znakami i spacjami uniemożliwia wykonanie koduprzesunię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, blokuje stworzony klocekczyli np. Warto wspomnieć trójkąty powinny być przesunięte o tej radzie również uczniom180 stopni, a pięciokąty o 72 stopnie.</small> Użytkownik musi mieć możliwośc zmiany tych zmiennych. Można ro rozwiązać na =====Duszek ''Rozeta''=====Tworzymy grafikę duszka ''Rozeta'', posiadającą dwa sposobykostiumy:1[[Plik: rysownik zapyta 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 wartości tych zmiennych i potem wykona ryunekalgorytm 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]