Arkanoid: Różnice pomiędzy wersjami

Z Wiki Mistrzowie Kodowania
Skocz do: nawigacji, wyszukiwania
(Klocki)
(Klocki)
Linia 42: Linia 42:
 
==== Klocki ====
 
==== Klocki ====
 
* Ostatnim elementem naszej gry są klocki które będziemy zbijać uderzeniami piłeczki. Analogicznie do paletki tworzymy duszka (kształt oraz kolor dowolne wedle pomysłu programisty).  
 
* Ostatnim elementem naszej gry są klocki które będziemy zbijać uderzeniami piłeczki. Analogicznie do paletki tworzymy duszka (kształt oraz kolor dowolne wedle pomysłu programisty).  
* Programujemy zachowanie pojedyńczego klocka
+
* Aby nie powtarzać tej samej funkcjonalności wiele razy użyjemy kontrolki kopiującej duszki - dzieki temu tylko w jednym miejscu będziemy programować zachowanie klocka.
[[Plik:Klocek arkanoid1.jpg]]
+
* Tworzymy więc duszka
* Funkcjonalność naszego klocka to:
+
[[Plik:Lista duszkow duszek1.jpg]]
# Pojawienie się na planszy
+
* Tak stworzony duszek odpowiadać będzie za tworzenie swoich klonów.
# Sprawdzanie czy klocek dotyka piłeczki
+
# Ukrywamy duszka "rodzica"
# Jeżeli tak to ukrycie go i wysłanie do systemu informacji o tym, że wystąpiło zdarzenie zetknięcia piłeczki z klockiem.
+
# Ustawiamy startowe miejsce duszka
# Zdarzenie to odbieramy w skrypcie piłeczki
+
# 5 razy w pętli uruchamiamy instrukcje odpowiedzialne za stworzenie klonu oraz przesunięcie "rodzica" w prawo - 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:
 +
  * Pokaż klocek
 +
  * W momencie zetknięcia się z piłeczką wysyłamy do systemu informację o tym że wystąpiło zdefiniowane przez nas zdarze "hit_on_target"
 +
[[Plik:Duszek1 klony.jpg]]
 +
* To samo zdarzenie odbieramy w skrypcie pileczki
  
 
[[Plik:Koncowa pileczka.jpg]]
 
[[Plik:Koncowa pileczka.jpg]]
Linia 54: Linia 59:
 
* Tak zmieniony skrypt piłeczki (odbierającej wiadomość o zdarzeniu zetknięcia piłeczki z klockiem) zapewni nam efekt "odbicia" piłeczki od klocka.
 
* Tak zmieniony skrypt piłeczki (odbierającej wiadomość o zdarzeniu zetknięcia piłeczki z klockiem) zapewni nam efekt "odbicia" piłeczki od klocka.
  
* Po zaprogramowaniu w ten sposób pierwszego klocka przy pomocy funkcji duplikuj tworzymy kolejne klocki i ustawiamy je na mapie.
+
* Po zaprogramowaniu w ten sposób pierwszego duszka , tworzymy kolejnego - będzie posiadać tą samą funkcjonalność, ale zmienimy mu wygląd - oraz pozycję startową - ten zestaw klocków będzie widniał wiersz wyżej.
[[Plik:Duplikuj.jpg]]
+
  
 
== Działający projekt ==
 
== Działający projekt ==
 
[//scratch.mit.edu/projects/25323412// Arkanoid]
 
[//scratch.mit.edu/projects/25323412// Arkanoid]

Wersja z 18:13, 11 sie 2014

Materiały stworzone w ramach Programu „Mistrzowie Kodowania” finansowanego przez Samsung Electronics Polska

Cel projektu

Celem projektu jest stworzenie gry polegającej na odbijaniu piłeczki tak aby zbić wszystkie "klocki" na planszy jednocześnie nie pozwalając piłeczce opaść poniżej "paletki".

Instrukcje

Główne problemy postawione przed programistą

  1. Jak zaprogramować sterowanie ruchem paletki?
  2. Jak zaprogramować odbijanie się piłeczki?
  3. Jak możemy edytować "żywotność" poszczególnych klocków?
  4. 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.

wybierz ikonkę nowego duszka

  • Po wybraniu "nowy duszek" przy uzyciu kreatora duszków rysujemy paletkę (zwykły prostokąt)
  • Następnie ustawiamy startowe położenie paletki po starcie programu, oraz programujemy sterowanie paletką (ruch w lewo i prawo za pomocą strzałek - odbywa się to poprzez zmienianie współrzędnej X)

Paletka all.jpg

Piłeczka

  • Następnym krokiem jest utworzenie duszka "piłeczka" - analogicznie do paletki, aczkolwiek tym razem tworzymy kółko zamiast prostokątu (trzymanie shiftu w trakcie rysowania koła pomoże nam stworzyć idealnie okrągły kształt)
  • Aby gra mogła zadziałąć potrzebujemy poruszającej się piłeczki. Aby wprawić ją w ruch potrzebujemy ustawić jej pozycję "startową", ustawić kierunek w którym ma się poruszać oraz prędkość. Dodatkowo musimy zadbać o to aby odbijała się od krawędzi mapy oraz paletki. Ustawiamy więc piłeczke na środku planszy (x: 0 , y: 0) ustawiamy jej kierunek na spadanie, ale nie idealnie w dół (np. 190 stopni).

Kulka pierwszy krok.jpg

  • W tym momencie mamy zaimplementowaną podstawową mechanikę gry. Nasza piłeczka odbija się od ścian i od paletki, a gracz może sterowac paletką wedle własnego uznania. Do kompletu funkcjonalności ozostało nam jeszcze oprogramować sytuacje "przegranej" oraz dodać klocki które gracz będzie musiał "zbijać".

Porażka

  • Aby zaprogramować sytuację "porażki" potrzebujemy stworzyć kolejnego duszka, który będzie obejmował całą przesteń w której pojawienie się piłeczki będzie oznaczać porażkę.

Bottom pasek.jpg

  • Po utworzeniu tego duszka dodajemy w skryptach piłeczki zdarzenie dotknięcia duszka "przestrzeni przegrywającej" powodujące zakończenie gry.

Pileczka dodaj przegrana.jpg

Klocki

  • Ostatnim elementem naszej gry są klocki które będziemy zbijać uderzeniami piłeczki. Analogicznie do paletki tworzymy duszka (kształt oraz kolor dowolne wedle pomysłu programisty).
  • Aby nie powtarzać tej samej funkcjonalności wiele razy użyjemy kontrolki kopiującej duszki - dzieki temu tylko w jednym miejscu będziemy programować zachowanie klocka.
  • Tworzymy więc duszka

Lista duszkow duszek1.jpg

  • Tak stworzony duszek odpowiadać będzie za tworzenie swoich klonów.
  1. Ukrywamy duszka "rodzica"
  2. Ustawiamy startowe miejsce duszka
  3. 5 razy w pętli uruchamiamy instrukcje odpowiedzialne za stworzenie klonu oraz przesunięcie "rodzica" w prawo - aby każdy kolejny klon był przesunięty w prawo względem poprzedniego
  4. Każdy z utworzonych klonów przy pomocy kontrolki ('kiedy zaczynam jako klon') dostaje końcową funkcjonalność klocka. Tj:
 * Pokaż klocek
 * W momencie zetknięcia się z piłeczką wysyłamy do systemu informację o tym że wystąpiło zdefiniowane przez nas zdarze "hit_on_target"

Duszek1 klony.jpg

  • To samo zdarzenie odbieramy w skrypcie pileczki

Koncowa pileczka.jpg

  • Tak zmieniony skrypt piłeczki (odbierającej wiadomość o zdarzeniu zetknięcia piłeczki z klockiem) zapewni nam efekt "odbicia" piłeczki od klocka.
  • Po zaprogramowaniu w ten sposób pierwszego duszka , tworzymy kolejnego - będzie posiadać tą samą funkcjonalność, ale zmienimy mu wygląd - oraz pozycję startową - ten zestaw klocków będzie widniał wiersz wyżej.

Działający projekt

Arkanoid