Zmiany
Arkanoid
,[[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".Projekt jest wersją popularnej gry [//en.wikipedia.org/wiki/Arkanoid "Arkanoid"]# aPrzypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka Scratch# bWykorzystanie opcji dostępnej w Bloku [[Plik:Blok dane.png]]# cImplementacja gry w środowisku Scratch
===Poziom trudnościi proponowane wersje ===Poziom trudności dla klas 4-6 ✪✪✰✰ Działający projekt [http://scratch.mit.edu/projects/2532341226836173/ Arkanoid]
Poziom trudności dla gimnazjum ✪✰✰✰ - przejdź do [[Arkanoid (wersja B)]] / Działający projekt projekt [Maszynka losującahttp://scratch.mit.edu/projects/26839468/ "Arkanoid wersja B"]
== Instrukcje =Orientacyjny czas realizacji===Orientacyjny czas realizacji jednej z proponowanych wersji: 2x 45minut ==Etapy= =Główne problemy postawione przed programistą ===:
# Jak zaprogramować sterowanie ruchem paletki?
# Jak zaprogramować odbijanie się piłeczki?
# Jak wychwycić moment "przegranej" ?
=== Instrukcja krok po kroku === ==== Duszek - Paletka ====
* Pierwszym krokiem implementacji naszej gry jest utworzenie duszka "Paletka" który odpowiedzialny będzie za odbijanie piłeczki.
* Po wybraniu "nowy duszek" przy użyciu kreatora duszków rysujemy paletkę (np.: prostokąt)
* Następnie ustawiamy startowe położenie paletki, oraz programujemy sterowanie paletką, tj. ruch w lewo i prawo za pomocą strzałek, odbywajacy się poprzez zmienianie współrzędnej X.
==== Duszek - Piłeczka ====
* Następnym krokiem jest utworzenie duszka "piłeczka"
'''Wskazówka ->''' W trybie wektorowym edytora graficznego, do narysowania koła wykorzystujemy narzędzie 'elipsa' jednocześnie trzymając włączony klawisz Shift.
* Skrypt duszka "Piłeczka" zawiera pozycję "startową" np.: (x: 0 , y: 0), informację na temat kierunku w którym ma się poruszać (spadanie, np.: 190 stopni) oraz prędkość jej poruszania. Dodatkowo ustawiamy odbicie od krawędzi sceny oraz od paletki.
* Każdy z utworzonych klonów przy pomocy kontrolki ('kiedy zaczynam jako klon') dostaje końcową funkcjonalność klocka. tj:<centerbr />♦ 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:Koncowa pileczkaCelAnowy.jpgJPG]] 5. To samo zdarzenie odbieramy w skrypcie piłeczki [[Plik:Kulka nowy.JPG]]</center>
6. Tak zmieniony skrypt piłeczki (odbierającej wiadomość o zdarzeniu zetknięcia piłeczki z klockiem) zapewni nam efekt "odbicia" piłeczki od klocka.
==== Duszki - Kolejne klocki ====* Po zaprogramowaniu w ten sposób pierwszego duszka , tworzymy kolejnego - ''Cel B'', który będzie posiadać tą samą funkcjonalność, ale zmienimy mu inny wygląd - oraz pozycję startową - ten zestaw klocków będzie widniał wiersz wyżej.<center>[[Plik:Duszek2 kloc.jpg]] [[Plik:Duszek2 skrpyCelBnowy.jpgJPG]]</center> * Oraz kolejnegoNastępnie tworzymy duszka ''Cel C'', który będzie posiadać 2 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ć klocki, których zbicie wymaga dwukrotnego uderzenia piłeczką (tzw. dwa życia)<center>[[Plik'''Uwaga:Duszek2hp''' zmienna "uderzenie" jest widziana tylko dla danego duszka. Ustawienie tej zmiennej jako globalnej, widocznej dla wszystkich duszków, spowodowałoby, że już pierwsze trafienie w klocek z tą zmienną (Cel C) pomniejszałoby wartość ''uderzenie'' dla wszystkich duszków (czyli również dla Cel A i Cel B).jpg]][[Plik:Duszek3 skrpyPo każdym uderzeniu kulki zmienna zmniejsza się o jeden. Jeżeli wartość spadnie poniżej 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 kulkę odjąć ''uderzenie'' tylko o 1 i zaczekać, aż kulka się odbije. Jest to konieczne, aby uniknąć sytuacji, w której jedno odbicie pomniejsza wartość zmiennej o więcej niż 1.jpg]]</center>