Zmiany

Skocz do: nawigacji, wyszukiwania

Arkanoid (wersja B)

Dodane 4930 bajtów, 23:15, 28 sie 2014
/* Etapy */
W pierwszej kolejności realizujemy etapy opisane w scenariuszu [[Arkanoid]].
=== Główne problemy postawione przed programistą ===
# Jak zaprogramować sterowanie ruchem paletki?
# Jak zaprogramować odbijanie się piłeczki?
# Jak możemy edytować "żywotność" poszczególnych klocków?
# Jak wychwycić moment "przegranej" ?
 
=== Instrukcja krok po kroku ===
 
==== Paletka ====
* Pierwszym krokiem implementacji naszej gry jest utworzenie duszka "Paletka" który odpowiedzialny będzie za odbijanie piłeczki.
<center>[[Plik:Button nowy duszek.jpg|wybierz ikonkę nowego duszka]]</center>
 
* 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.
 
<center>[[Plik:Paletka.jpg]]</center>
 
==== 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.
 
<center>[[Plik:Kulka_pierwszy_krok.jpg]]</center>
 
'''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".
 
<center>[[Plik:Obrot.jpg]]</center>
 
==== Porażka ====
* Jedną z możliwości zaprogramowania sytuacji "porażki" jest stworzenie duszka, który będzie obejmował całą przestrzeń poniżej duszka "paletka".
<center>[[Plik:Bottom pasek.jpg]]</center>
* Po utworzeniu tego duszka dodajemy w skryptach piłeczki zdarzenie dotknięcia duszka "przestrzeni przegrywającej" powodujące zakończenie gry.
<center>[[Plik:Pileczka dodaj przegrana.jpg]]</center>
 
==== Klocki ====
1. Ostatnim elementem gry są klocki, zbijane uderzeniami piłeczki. Analogicznie do wcześniejszych duszków, klocki tworzymy w edytorze graficznym, dowolnie wybierając kształt oraz kolor. <br />
2. Tworzymy duszka "target"<br />
<center>[[Plik:Listaduszkow duszek1.jpg]]</center><br />
 
3. Aby nie powtarzać tej samej funkcjonalności wiele razy, poprzez tworzenie wielu ientycznych 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
* 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 "hit_on_target"<br />
<center>[[Plik:Duszek1 klony.jpg]]</center>
 
5. To samo zdarzenie odbieramy w skrypcie pileczki
 
<center>[[Plik:Koncowa pileczka.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.
 
==== Kolejne klocki ====
* Po zaprogramowaniu w ten sposób pierwszego duszka, tworzymy kolejnego, który będzie posiadać tą samą funkcjonalność, ale inny mu wygląd oraz pozycję startową.
 
<center>[[Plik:Duszek2 kloc.jpg]]
[[Plik:Duszek2 skrpy.jpg]]</center>
* Oraz kolejnego, który poza funkcjonalnością, posiadaną przez pozostałe duszki, ma również lokalną zmienną "hp" odpowiedzialną za zbieranie informacji o ilości trafień piłki w cel. Ta opcja pozwala stworzyć elementy posiadajace np.: dwa życia.
'''Uwaga:''' zmienna "hp" jest widziana tylko dla danego duszka. W przypadku gdybyśmy zrobili tą zmienną widoczną dla wszystkich duszków, już pierwsze trafienie w pierwszy klocek z 2hp pomniejszaloby wartosc hp dla wszystkich duszków.
Po każdym uderzeniu kulki hp zmniejsza się o jeden. Jeżeli spadnie poniżej jednego 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 odjąć hp tylko o 1 i zaczekać, aż kulka się odbije. Jest to konieczne uniknąć sytuacji, w której jedno odbicie pomniejsza od razu całe hp.
<center>[[Plik:Duszek2hp.jpg]]
[[Plik:Duszek3 skrpy.jpg]]</center>
 
===Zwiększenie prędoście===
Główny problemem: Jak zaprogramować odbijanie piłeczki, aby umożliwić zwiększanie prędkości poruszania?
1495
edycji