Zmiany

Skocz do: nawigacji, wyszukiwania

Arkanoid (wersja B)

Dodane 554 bajty, 11:08, 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".'''
== Informacje ==
===Cele===
Celem projektu jest stworzenie gry zręcznościowej, polegającej na odbijaniu piłeczki tak, aby zbić wszystkie "klocki" na planszy, jednocześnie nie pozwalając piłeczce opaść poniżej "paletki". Czyli wykonanie klonu sławnej Projekt jest wersją popularnej gry [//en.wikipedia.org/wiki/Arkanoid "Arkanoid"]
# Przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka Scratch
# Wykorzystanie opcji dostępnej w Bloku[[Plik:Blok dane.png]]
# Implementacja gry w środowisku Scratch
===Poziom trudności i proponowane wersje ===
Poziom trudności dla klas 4-6 ✪✪✰✰ Działający projekt [http://scratch.mit.edu/projects/26836173// Arkanoid]
Poziom trudności dla gimnazjum ✪✰✰✰ - przejdź do [[Arkanoid (wersja B)]] / Działający projekt [http://scratch.mit.edu/projects/26839468/ "Arkanoid wersja B"]
===Orientacyjny czas realizacji===
[[Plik:Kulka_pierwszy_krok.jpg]]
'''Uwaga:''' Istotnym atrybutem duszka "piłeczka" jest sposób obrotu. Aby uniknąć sytuacji, w której środek duszka nie znajduje się "idealnie po środku", powodując tym samym ponowne "zderzenie" z paletką, ustawiamy sposób obrotu duszka w opcji "wokół własnej osi". Uchroni to przed sytuacją, w której piłeczka odbijając się od paletki, wykona obrót powodując tym samym ponowne "zderzenie" z paletką.
[[Plik:Obrot.jpg]]
=== Porażka - duszek ''pod paletką''===
* Jedną z możliwości zaprogramowania sytuacji "porażki" jest stworzenie duszka, który będzie obejmował całą przestrzeń poniżej duszka "paletka". Ten duszek pozostaje bez skryptu, ponieważ kod odpowiadający za nadanie informacji o położeniu piłki poniżej paletki, umieszczony zostanie w skrypcie duszka ''piłka''.
[[Plik:Bottom pasek.jpg]]
 * Po utworzeniu tego duszka dodajemy w skryptach piłeczki zdarzenie dotknięcia duszka "przestrzeni przegrywającej" powodujące . W prezentowanym projekcie, takie położenie piłki powoduje zakończenie gry.
[[Plik:Pileczka dodaj przegrana.jpg]]
[[Plik:Listaduszkow duszek1.jpg]]
3. Aby nie powtarzać tej samej funkcjonalności wiele razy, poprzez tworzenie wielu ientycznych identycznych duszków, użyjemy kontrolki kopiującej duszki dostępne w Bloku [[Plik:Sklonuj.png]]. Dzieki temu, tylko w jednym miejscu będziemy programować zachowanie klocka.<br /> Tak stworzony duszek odpowiadać będzie za tworzenie swoich klonów. * Ukrywamy duszka "rodzica"<br />* Ustawiamy startowe miejsce duszka
* 6 razy w pętli uruchamiamy instrukcje odpowiedzialne za stworzenie klonu oraz zmianę pozycji "rodzica" tak, aby każdy kolejny klon był przesunięty w prawo względem poprzedniego
* Ukrywamy duszka "rodzica"<br />
[[Plik:Ukryj.JPG]]
 
* Każdy z utworzonych klonów przy pomocy kontrolki ('kiedy zaczynam jako klon') dostaje końcową funkcjonalność klocka. tj:<br /> ♦ Pokaż klocek,<br /> ♦ W momencie zetknięcia się z piłeczką wysyłamy do systemu informację o tym, że wystąpiło zdefiniowane przez nas zdarzenie "uderzenie w cel"<br />
[[Plik:CelAnowy.JPG]]
5. To samo zdarzenie odbieramy w skrypcie pileczkipiłeczki
[[Plik:Kulka nowy.JPG]]
=== Duszki - Kolejne klocki ===
* Po zaprogramowaniu w ten sposób pierwszego duszka, tworzymy kolejnego ''Cel B'', który będzie posiadać tą samą funkcjonalność, ale inny mu wygląd oraz pozycję startową.
[[Plik:CelBnowy.JPG]]
* A następnie Następnie tworzymy duszka ''Cel C'', który poza funkcjonalnością, posiadaną przez pozostałe duszki, ma również lokalną zmienną "uderzenie" odpowiedzialną za zbieranie informacji o ilości trafień piłki w cel. Ta opcja pozwala stworzyć elementy posiadajace npklocki, których zbicie wymaga dwukrotnego uderzenia piłeczką (tzw.: dwa życia.)'''Uwaga:''' zmienna "uderzenie" jest widziana tylko dla danego duszka. W przypadku gdybyśmy zrobili tą zmienną widoczną Ustawienie tej zmiennej jako globalnej, widocznej dla wszystkich duszków, spowodowałoby, że już pierwsze trafienie w pierwszy klocek z tą zmienną pomniejszaloby wartosc (Cel C) pomniejszałoby wartość ''uderzenie'' dla wszystkich duszków(czyli również dla Cel A i Cel B). Po każdym uderzeniu kulki zmienna zmniejsza się o jeden. Jeżeli wartość spadnie poniżej jednego 1., uznajemy, że klocek został "zbity" i go ukrywamy. Dodana jest również kontrolka "czekaj, aż nie dotyka kulka", aby od razu po dotknięciu przez kulke kulkę odjąć ''uderzenie'' tylko o 1 i zaczekać, aż kulka się odbije. Jest to konieczne , aby uniknąć sytuacji, w której jedno odbicie pomniejsza od razu całą wartość zmiennejo więcej niż 1.
[[Plik:Cel Cnowy.JPG]]
===Zwiększenie prędkości ===
Główny problememproblem: Jak zaprogramować odbijanie piłeczki, aby umożliwić zwiększanie prędkości poruszania?
W bloku [[Plik:Blok dane.png]] tworzymy zmienną ''prędkość'' i rozwijamy skrypt o:
Skrypt zwiększania prędkości piłeczki po każdym uderzeniu od paletki może wyglądać w następujący sposób:
[[Plik:Arkanoid 1ARKANOID1NOWY.pngJPG]]
Skrypt zwiększania prędkości piłeczki po każdym uderzeniu o cel:
[[Plik:Arkanoid 2.pngJPG]] Można również wprowadzić zmianę prędkości piłeczki w uzależnieniu od trafienia w cel oraz po uderzeniu w paletkę, np.:
[[Plik:Arkanoid 3Można również wprowadzić zmianę prędkości piłeczki w uzależnieniu od trafienia w cel oraz po uderzeniu w paletkę.png]]