Scratch 1.9 Pierwszy własny program (część 3)

Autor Simone Hutsch na platformie Unsplash
Witam Was ponownie


Tym razem podejmiemy się ukończenia gry. Tempo tego wpisu będzie od Was wymagało nieco wprawy nabytej podczas poprzednich postów. Ci, którzy dopiero zaczynają przygodę powinni zwrócić uwagę na pierwszy post z tej serii (link).

Jak pamiętacie nasza gra dotychczas zawiera belkę, którą steruje gracz oraz piłkę, która odbija się od belki. Następny krok to dodanie bloczków, dzięki którym w naszą grę będzie można wygrać!

Pierwszym, co musimy zrobić to dodać do gry nowego duszka - "Button3". Znajdziecie go jak zwykle w menu "Wybierz duszka".

Wybór nowego duszka
Źródło: https://scratch.mit.edu

Po wybraniu duszka musimy zająć się jego programem. Naszym zadaniem będzie utworzenie wielu identycznych duszków na ekranie, rozłożonych obok siebie tak, aby nie stykały się ze sobą i pozwalały na grę. Ponadto musimy kontrolować ich ilość na ekranie - będzie to nam potrzebne, aby dowiedzieć się czy wszystkie klocki zostały już zbite.

Zanim zaczniemy tworzyć program dla duszka, utworzymy nową zmienną.

Zmienna to tak naprawdę rodzaj pudełka w programie. Możemy do niego chować różne rzeczy, na przykład liczby. Dzięki zmiennym możliwe jest przechowywanie danych przydatnych wiele razy, przykładowo liczbę klocków na ekranie. Zmienne zgodnie z nazwą mogą ulegać zmianie - pozwoli to w naszym programie zwiększać i zmniejszać zapisaną liczbę klocków.

Aby utworzyć zmienną należy przejść do kategorii "Zmienne" na liście dostępnych bloków. Tam znajdziemy przycisk "Utwórz zmienną". 

Przycisk tworzenia nowej zmiennej w programie
Źródło: https://scratch.mit.edu
 

Po kliknięciu na niego LPM pojawi się okno z polem do wpisywania. W miejsce to umieścimy nazwę naszej zmiennej. Ja wpiszę "liczbaKlockow" ale Wy możecie wybrać lepszą według Was nazwę.

W świecie programowania nazywanie zmiennych to bardzo ważna sprawa. Zazwyczaj niedopuszczalne jest wstawianie spacji i kilku innych znaków w nazwy. Ponadto istnieje wiele sposobów na tworzenie nazw, na przykład metoda camelCase, w której każdy wyraz w nazwie zaczyna się z dużej litery (poza pierwszym), lub snake_case gdzie wyrazy łączą znaki "podłogi", czyli "_". Ważne jest również to, aby nazwa zmiennej opowiadała co nieco o jej zawartości. Zmienna "a" wcale nie podpowiada że może się w niej znaleźć wiek gracza, ale zmienna "wiekGracza" już tak.

Po wpisaniu nazwy utworzenie zmiennej należy zatwierdzić, klikając przycisk "Ok". Po utworzeniu nowego projektu w skreczu istnieje już jedna zmienna: "moja zmienna". Aby nie podsuwała nam się ona w trakcie tworzenia programów, usuńmy ją.

Aby usunąć zmienną należy kliknąć na nią PPM i wybrać opcję "Usuń zmienną "moja zmienna"".

Usuwanie zmiennej z programu
Źródło: https://scratch.mit.edu

Po tym zabiegu w naszym programie zostanie tylko nasza zmienna. Wykorzystamy ją teraz w programie dla duszka "Button3". Zaczniemy od dodanie bloczka "kiedy kliknięto" z zieloną flagą. Drugi bloczek znajduje się znów w kategorii "Zmienne" i nazywa się "ustaw liczbaKlockow na 0". Po przeciągnięciu go i przyczepieniu do pierwszego bloczka będziemy mieli gotowy mechanizm zerujący wynik za każdym nowym rozpoczęciem gry.

Źródło: https://scratch.mit.edu

Kolejny krok to zmniejszenie rozmiaru duszka tak, abyśmy mogli zmieścić więcej takich samych klocków na ekranie. Posłuży nam do tego bloczek "ustaw rozmiar na 100%" (tak jak w przypadku piłki). Zmienimy jedynie liczbę 100 na 50, co zmniejszy rozmiar bloczka do połowy (czyli 50 procent).

Następnym zadaniem jest ustawienie klocka w odpowiednim miejscu ekranu. Użyjemy do tego bloczka "idź do x:  y: ", wpisując w niego odpowiednio "-200" oraz "150".

Dodanie przesunięcia duszka na ekranie
Źródło: https://scratch.mit.edu

Po tym jak ustawiliśmy odpowiednią pozycję klocka, czas na najważniejszy jego element - klonowanie. Dzięki sklonowaniu klocka będziemy mogli utworzyć wiele takich samych duszków, ustawionych na ekranie.

Aby sklonować duszka ustawiając kolejne klocki w odpowiednich miejscach, trzeba będzie stworzyć pętlę wewnątrz innej pętli!

Przez pętle rozumiemy części programu, które wykonują program zazwyczaj więcej niż raz. Dzięki temu można na przykład tworzyć nowe duszki przesuwając każdego duszka nieco dalej.

Użyjemy najpierw pętli "powtórz 10 razy". Dołączcie ją do programu i zmieńcie liczbę 10 na 2 (będą to dwa rzędy klocków licząc od góry do dołu ekranu). Następnie w jej wnętrzu dodajcie drugi raz pętlę, tym razem wpisując liczbę 6 (liczba ta będzie oznaczała liczbę klocków w rzędzie od lewej do prawej strony sceny). Pętle w programie po tych zmianach powinny wyglądać tak jak poniżej:

Kod po dodaniu zagnieżdżonych pętli - pętli w pętli
Źródło: https://scratch.mit.edu

Teraz musimy dodać część programu, która spowoduje że nasze klocki sklonują się. Wewnątrz pętli wykonującej się sześć razy dodajmy bloczek "utwórz klona z siebie" znajdujący się w kategorii "Kontrola".

Kolejny bloczek umieszczamy zaraz za nim: "zmień x o " wpisując do niego liczbę 80. Dzięki niemu po utworzeniu duszka przesuniemy się trochę w prawą stronę, co da nam miejsce na kolejnego duszka.

Ostatni bloczek w tej pętli to "zmień liczbaKlockow o 1". Dzięki niemu będziemy dokładnie zapisywać ile klocków mamy na ekranie. Informacja ta będzie zapisana w naszej zmiennej.

Program odpowiedzialny za klonowanie duszka
Źródło: https://scratch.mit.edu
W programie dodamy jeszcze dwa bloczki: "zmień y o -50" oraz "ustaw x na -200". Bloczki te powinny zostać dołączone za wewnętrzną pętlą. Dzięki tym bloczkom po utworzeniu jednego wiersza z klockami przeniesiemy się do następnego wiersza.

Kompletny program tworzenia klocków na ekranie
Źródło: https://scratch.mit.edu
W ten sposób kończymy jeden z trzech programów jakie są potrzebne aby duszki "Button3" spełniły dobrze swoją rolę w grze.

Zajmiemy się teraz drugim i trzecim programem. Drugi program składał się będzie tylko z dwóch bloczków: "kiedy kliknięto" z zieloną flagą oraz "ukryj". Rolą tego programu będzie ukrycie duszka z którego tworzymy klony. Nie będzie nam on potrzebny w programie, dlatego go ukryjemy natychmiast po rozpoczęciu gry.

Program ukrywający duszka
Źródło: https://scratch.mit.edu
Czas na program nr 3. Jego zadanie będzie polegało na wychwyceniu momentu, gdy klocka dosięgnie piłka, co oznacza zbicie. Na początku jednak trzeba pokazać klony, ponieważ na początku będą one ukryte!

Program który pokazuje klony będzie bardzo podobny do ukrywania duszka. Różnica polega na tym, że będzie on działał tylko na klony - bez duszka który jest klonowany na starcie. Dodajcie dwa bloczki: "gdy zaczynam jako klon" oraz "pokaż".

Pokazanie klonów duszka
Źródło: https://scratch.mit.edu
Aby klocek zareagował zbiciem tylko gdy zostanie dotknięty przez piłkę, wykorzystamy bloczek "czekaj aż". W jego wolne pole wstawmy bloczek "dotyka wskaźnik myszy" z kategorii "Czujniki". W bloczku "wskaźnik myszy" zamieńcie na "Ball". Dzięki temu dalszy program wykona się tylko wtedy, gdy piłka dotknie tego konkretnego klona który się z nią będzie stykał.

Kolejnym bloczkiem jest "zmień liczbaKlockow o 1" który dodamy, zmieniając jedynie cyfrę 1 na "-1", co będzie oznaczało zbicie klocka.

Oczekiwanie na dotknięcie klona przez piłkę
Źródło: https://scratch.mit.edu
Zostały nam dwa bloczki do ukończenia programu tego duszka. Pierwszy z nich jest nowością, nazywa się "nadaj komunikat wiadomość1". Dzięki niemu powiadomimy program znajdujący się u duszka "Ball" o tym, że udało się zbić klon duszka "Button3". Wykorzystamy tę wiedzę za chwilę, kończąc program piłki.

Teraz natomiast musimy jeszcze dodać ostatnią rzecz - usunięcie klona aby nie dało się od niego odbić więcej razy. Posłuży nam do tego bloczek "usuń tego klona".

Ostatecznie kod powinien wyglądać podobnie do tego poniżej:

Kompletny program dla duszka Button3
Źródło: https://scratch.mit.edu
Program klocków został ukończony! Ostatnim elementem naszej gry jest sprawienie, że piłka zareaguje na dotknięcie klocka.

Przejdźmy najpierw do programu piłki, klikając na nią pod sceną.

Zmiana pokazywanego programu
Źródło: https://scratch.mit.edu
Drugi program tego duszka nie będzie rozpoczynał pracy po rozpoczęciu gry, a dopiero wtedy, gdy otrzyma komunikat nadany przez klona duszka "Button3".

Dodajmy do programu bloczek "kiedy otrzymam wiadomość1". Będzie on początkiem tej części programu duszka. Zaraz za nim należy dodać bloczki składające się na tekst "ustaw kierunek na losuj liczbę od 120 do 240". Takie ułożenie robiliśmy już w programie obok - warto tam zajrzeć aby przypomnieć sobie jakie bloczki były do tego potrzebne.

Dodanie akcji po otrzymaniu komunikatu i zmiana kierunku lotu piłki
Źródło: https://scratch.mit.edu
 Po dodaniu ostatniego bloczka piłka zacznie zmieniać kierunek po odbiciu się od jednego z klocków. Ostatnią rzeczą o jaką powinniśmy zadbać to sprawdzenie czy pozostały jakiekolwiek klocki po zbiciu. Jeśli nie ma już ani jednego klocka, oznacza to że gra zakończyła się wygraną.

Pierwszy potrzebny bloczek to "jeżeli  to". Po dodaniu, w jego wolne pole należy dodać bloczek z kategorii "Wyrażenia", " = 50". bloczek ten sprawdzi czy pozostały niezbite klocki. Aby tak zadziałał, należy w pola zielonego bloczka wstawić kolejno "liczbaKlockow" z kategii "Zmienne" oraz "0" po drugiej stronie. Zestaw tych klocków sprawdzi, czy liczba klocków wynosi 0. Jeśli tak, wykona się program dodany przez nas za chwilę, obsługujący wygraną.

Bloczek jeżeli ze sprawdzaniem czy wszystkie klocki zostały zbite
Źródło: https://scratch.mit.edu
Pozostały nam do dodania dwa bloczki: "zmień tło na Wygrana" oraz "zatrzymaj wszystko". Obydwa bloczki powinny znaleźć się wewnątrz bloczka "jeżeli  to".

Ostatecznie wygląd programu będzie wyglądał tak jak poniżej:

Program piłki odbijający ją od klocków i pokazujący wygraną.
Źródło: https://scratch.mit.edu
To koniec prac nad naszą grą! Niesamowite jak dużo ciekawej pracy trzeba było wykonać żeby dotrzeć aż tutaj. Aby zagrać w naszą grę, wystarczy użyć zielonej flagi znajdującej się nad sceną.

Możecie się teraz pochwalić innym jakie niesamowite rzeczy umiecie zaprogramować! Oczywiście nic nie stoi na przeszkodzie, abyście ulepszyli tę grę. Jest na to wiele pomysłów i wierzę że macie ich całe mnóstwo! Już teraz przychodzi mi na myśl użycie kolejnej zmiennej aby zmieniać prędkość piłki i szereg innych fajnych dodatków.

Teraz rozkoszujcie siebie i innych tym co udało Wam się stworzyć, a za chwilę zróbice sobie trochę wolnego - ten wpis na pewno wymagał od Was nieco sił!


Trzymajcie się i do zaczytania!

Komentarze