Scratch bez tajemnic. Programowanie gier od podstaw 9788328321427

Scratch bez tajemnic zawiera kilkanaście projektów prostych gier napisanych w języku Scratch, stworzonym specjalnie do n

212 107 8MB

Polish Pages [129] Year 2015

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Spis treści
Wstęp
CZĘŚĆ 01. NA CZYM POLEGA PROGRAMOWANIE
ROZDZIAŁ 1. Projekt akwarium
Początek przygody
Duszki
Ruch duszków
Naucz rybę pływać
Jedną ręką stwórz akwarium
Tam i z powrotem
Łączenie programu w całość
Ośmiornica wchodzi do gry
Może jeszcze rozgwiazda?
Pływając wśród ryb
ROZDZIAŁ 2. Znikający duszek i okrutna matematyka
Czym jest zmienna?
Naucz duszka matematyki
Pojawia się duszek
Układ współrzędnych
Co zrobić, aby duszek zniknął?
Licznik punktów
Instrukcja dla gracza
Co zrobić, aby gra zawsze zaczynała się tak samo?
ROZDZIAŁ 3. Pogrywamy sobie w kotka i myszkę
Instrukcje warunkowe
Pętle
Zabawa w kotka i myszkę — założenia gry
Mysz harcuje
Biegające koty
Mysz dostaje drugie życie
Wprowadź poprawki
Nietoperz płata figle
ROZDZIAŁ 4. Przygody w kosmosie
Klony
Lataj
Sklonuj pociski
Nadlatują asteroidy
Licznik punktów
ROZDZIAŁ 5. Kosmiczna bitwa
Komunikaty
Potężny wróg
Amunicja wroga
Wysłanie komunikatu pojaw się
Odbiór komunikatu pojaw się
Zestrzelenie przeciwnika
Salwa przeciwnika
Eksplozje i wybuchy — czyli tworzymy animację
CZĘŚĆ 02. Jak samodzielnie rozwiązywać problemy
ROZDZIAŁ 6. Żuczek na autostradzie
Ruch żuczka
Pierwszy pas ruchu
Kolejne pasy ruchu
Warunki zwycięstwa i przegranej
Czas się kończy
ROZDZIAŁ 7. Arkanoid
Arkanoid — czyli co?
Belka
Piłka
Odbicie piłki od paletki — wersja zaawansowana
Bloki
Kolizja piłki i bloku
Zwycięstwo i przegrana
ROZDZIAŁ 8. Twoje własne bloczki
Po co Ci definiowanie bloczków?
Tworzenie własnych bloczków
Bloczki z parametrami
Tworzenie bloczków, ćwiczenie 1. — baletnica
Tworzenie bloczków, ćwiczenie 2. — inwazja baletnic
ROZDZIAŁ 9. Inwazja bakterii
Inwazja bakterii — pomysł na grę
Podążanie za kursorem
Strzelanie
Pojawiają się bakterie
Bakterie nacierają
Bakterie znikają
ROZDZIAŁ 10. Rysowanie jest proste
Kwadrat
Jak porusza się duszek?
Jak narysować kwiatek?
Wiele kwadratów
Kolorowe kółko
Zabawa półkolami
W labiryncie
N-kąt foremny
CZĘŚĆ 03. JAK STWORZYĆ WYMARZONĄ GRĘ
ROZDZIAŁ 11. Platformówka
Metoda działania
Skok — wersja najprostsza
Skok — poprawiony warunek wykonania skoku
Ruch w bok
Ruch w bok — poprawki
Ruch w bok — inne podejście
Skok — odbicia od platform
Platformy
Kolizja ze spodem platformy
ROZDZIAŁ 12. Zupełnie inna platformówka
Dwa rodzaje zmiennych
Przesuwające się tło — zasada działania
Przesuwające się tło
Skok
ROZDZIAŁ 13. Wąż
Listy — sposób na wiele danych
Tworzenie list
Listy — nowe bloczki
Stemplowanie
Ruch węża
Zostaw ślad
Popraw ruch
Skracanie węża
Karmienie węża
ROZDZIAŁ 14. Turniej łuczniczy
Założenia gry
Obliczanie odległości pomiędzy punktami
Przygotowania
Proste sterowanie celownikiem
Strzał
Liczenie punktów
Utrudnij sobie strzelanie
Drgania celownika
Obliczanie różnicy pozycji i zapisywanie jej w liście
Obliczanie średniej
ROZDZIAŁ 15. Niech zabrzmią działa
Jak leci kula armatnia?
Przygotowania
Ruch kuli
Sterowanie armatą
Niech zabrzmią działa
Parametry wystrzału
Do zobaczenia
Skorowidz
Recommend Papers

Scratch bez tajemnic. Programowanie gier od podstaw
 9788328321427

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Opieka redakcyjna: Ewelina Burska Projekt okładki: ULABUKA Materiały graficzne na okładce i wewnątrz książki wykorzystane za zgodą Shutterstock.

Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/scrabt_ebook Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

ISBN: 978-83-283-2142-7

Copyright © Helion 2015

• Poleć książkę na Facebook.com • Kup w wersji papierowej • Oceń książkę

• Księgarnia internetowa • Lubię to! » Nasza społeczność

Spis treści Wstęp • 7

Część 01. Na czym polega programowanie • 11 Rozdział 1. Projekt akwarium • 12 Początek przygody • 12 Duszki • 13 Ruch duszków • 14 Naucz rybę pływać • 14 Jedną ręką stwórz akwarium • 15 Tam i z powrotem • 16 Łączenie programu w całość • 16 Ośmiornica wchodzi do gry • 18 Może jeszcze rozgwiazda? • 19 Pływając wśród ryb • 19 Rozdział 2. Znikający duszek i okrutna matematyka • 22 Czym jest zmienna? • 22 Naucz duszka matematyki • 23 Pojawia się duszek • 24 Układ współrzędnych • 24 Co zrobić, aby duszek zniknął? • 27 Licznik punktów • 28 Instrukcja dla gracza • 28 Co zrobić, aby gra zawsze zaczynała się tak samo? • 29 Rozdział 3. Pogrywamy sobie w kotka i myszkę • 30 Instrukcje warunkowe • 30 Pętle • 31 Zabawa w kotka i myszkę — założenia gry • 32 Mysz harcuje • 33 Biegające koty • 33 Mysz dostaje drugie życie • 34 Wprowadź poprawki • 35 Nietoperz płata figle • 36 Rozdział 4. Przygody w kosmosie • 39 Klony • 39 Lataj • 40

SPIS TREŚCI

3

Sklonuj pociski • 41 Nadlatują asteroidy • 43 Licznik punktów • 44 Rozdział 5. Kosmiczna bitwa • 46 Komunikaty • 46 Potężny wróg • 47 Amunicja wroga • 47 Wysłanie komunikatu pojaw się • 48 Odbiór komunikatu pojaw się • 49 Zestrzelenie przeciwnika • 49 Salwa przeciwnika • 51 Eksplozje i wybuchy — czyli tworzymy animację • 52

Część 02. Jak samodzielnie rozwiązywać problemy • 55 Rozdział 6. Żuczek na autostradzie • 56 Ruch żuczka • 56 Pierwszy pas ruchu • 57 Kolejne pasy ruchu • 58 Warunki zwycięstwa i przegranej • 59 Czas się kończy • 60 Rozdział 7. Arkanoid • 62 Arkanoid — czyli co? • 62 Belka • 63 Piłka • 63 Odbicie piłki od paletki — wersja zaawansowana • 64 Bloki • 65 Kolizja piłki i bloku • 66 Zwycięstwo i przegrana • 67 Rozdział 8. Twoje własne bloczki • 68 Po co Ci definiowanie bloczków? • 68 Tworzenie własnych bloczków • 69 Bloczki z parametrami • 70 Tworzenie bloczków, ćwiczenie 1. — baletnica • 71 Tworzenie bloczków, ćwiczenie 2. — inwazja baletnic • 71 Rozdział 9. Inwazja bakterii • 74 Inwazja bakterii — pomysł na grę • 74

4

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Podążanie za kursorem • 74 Strzelanie • 75 Pojawiają się bakterie • 76 Bakterie nacierają • 77 Bakterie znikają • 78 Rozdział 10. Rysowanie jest proste • 80 Kwadrat • 80 Jak porusza się duszek? • 81 Jak narysować kwiatek? • 81 Wiele kwadratów • 82 Kolorowe kółko • 83 Zabawa półkolami • 83 W labiryncie • 84 N-kąt foremny • 85

Część 03. Jak stworzyć wymarzoną grę • 87 Rozdział 11. Platformówka • 88 Metoda działania • 88 Skok — wersja najprostsza • 89 Skok — poprawiony warunek wykonania skoku • 89 Ruch w bok • 90 Ruch w bok — poprawki • 91 Ruch w bok — inne podejście • 91 Skok — odbicia od platform • 92 Platformy • 92 Kolizja ze spodem platformy • 93 Rozdział 12. Zupełnie inna platformówka • 95 Dwa rodzaje zmiennych • 95 Przesuwające się tło — zasada działania • 96 Przesuwające się tło • 97 Skok • 99 Rozdział 13. Wąż • 100 Listy — sposób na wiele danych • 100 Tworzenie list • 101 Listy — nowe bloczki • 102 Stemplowanie • 103 Ruch węża • 103 Zostaw ślad • 104

SPIS TREŚCI

5

Popraw ruch • 105 Skracanie węża • 105 Karmienie węża • 107 Rozdział 14. Turniej łuczniczy • 109 Założenia gry • 109 Obliczanie odległości pomiędzy punktami • 109 Przygotowania • 111 Proste sterowanie celownikiem • 111 Strzał • 112 Liczenie punktów • 113 Utrudnij sobie strzelanie • 114 Drgania celownika • 115 Obliczanie różnicy pozycji i zapisywanie jej w liście • 115 Obliczanie średniej • 116 Rozdział 15. Niech zabrzmią działa • 118 Jak leci kula armatnia? • 118 Przygotowania • 119 Ruch kuli • 120 Sterowanie armatą • 121 Niech zabrzmią działa • 122 Parametry wystrzału • 123 Do zobaczenia • 126 Skorowidz • 127

6

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

I: L E EŻ

J

• • • •

masz 10 – 15 lat, lubisz gry komputerowe, chcesz dowiedzieć się, na czym polega programowanie, chcesz napisać własną grę, taką, w którą nikt na świecie jeszcze nie grał,

to ta książka jest dla Ciebie.

Wstęp Witaj na początku fascynującej przygody z tworzeniem gier komputerowych! Stworzenie gry komputerowej jest łatwiejsze, niż mogłoby się wydawać. W tym momencie możesz jeszcze nie wiedzieć, jak zacząć, lecz wszystko stanie się bardzo proste, gdy nauczysz się porozumiewać z komputerem. Najważniejszym sekretem jest to, że: komputer nie jest wszystkowiedzącym urządzeniem. Umie przetwarzać i wyświetlać to, co zapisał w nim programista. Bez systemu operacyjnego, danych i programów jest tylko stosem elektronicznego złomu. To dzięki programistom może wydawać się, że komputer ma wiedzę i jest inteligentny. Na przykład bez zainstalowanego kalkulatora komputer nie będzie potrafił obliczyć wyniku prostego zadania matematycznego. Dzięki tej książce i Ty masz możliwość zostania programistą. Jak komputer może zrozumieć to, co masz mu do powiedzenia? Do komunikowania się z nim służą języki programowania. Są one pomostem pomiędzy językiem, w jakim ludzie porozumiewają się między

WSTĘP

7

sobą, a sposobem zapisywania i przetwarzania informacji w komputerze. Jednym z języków programowania jest Scratch. Scratch to język stworzony specjalnie do nauki programowania. Składa się z różnokolorowych bloczków zawierających poszczególne polecenia. Bloczki połączone ze sobą tworzą skrypty, które mogą służyć do zaprojektowania animacji, odegrania muzyki, stworzenia opowiadania bądź napisania gry. Książka, którą trzymasz w ręce, jest napisana w możliwie najprostszy sposób. Każdy rozdział to pomysł na nową grę. Podczas tworzenia opisanych gier poznasz kolejno wszystkie bloczki i możliwości języka Scratch. Na początek potrzebujesz dużo dobrych chęci i cierpliwości. Programowanie nie jest trudne, lecz wymaga czasu i wytrwałości. Jeśli tylko zechcesz, niedługo będziesz tworzyć programy, którymi pochwalisz się swoim kolegom i koleżankom. Nauczysz się, jak napisać wiele różnych gier, tych łatwych i tych troszkę trudniejszych, tak aby wreszcie móc stworzyć swoją wymarzoną grę. Życzymy Ci dobrej zabawy!

Korzystanie z tej książki ułatwią Ci poniższe oznaczenia. Ikoną tablicy oznaczone są podrozdziały, w których możesz znaleźć krótko przedstawioną teorię, niezbędną, aby posługiwać się Scratchem i napisać nowy fragment gry.

Ołówkiem oznaczone są kolejne polecenia dla Ciebie. Ich dokładne wykonanie gwarantuje, że Twój program zadziała.

✔ Na końcu każdego rozdziału znajduje się podsumowanie tego, co już umiesz. Ptaszkiem oznaczone są nowe elementy, które pojawiły się w danym rozdziale.

8

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

Zadania Bardzo ważna w nauce programowania jest własna praca. Po każdym rozdziale w takiej ramce znajdziesz zadania do samodzielnego zrealizowania. Nie zapomnij ich wykonać.

Książka jest podzielona na trzy części, każda część zawiera pięć rozdziałów. Część I — poznasz w niej podstawowe polecenia Scratcha i zaczniesz pisać pierwsze programy. W tej części wszystkie kroki potrzebne do wykonania gry są dokładnie opisane. Część II — da Ci możliwość przećwiczenia samodzielnego rozwiązywania prostych problemów programistycznych na podstawie przykładów z części I. Poznasz nowe elementy języka. Nauczysz się tworzyć własne bloczki. Część III — nauczy Cię samodzielnie budować Twoje gry, gotowe rozwiązania pojawią się tylko w przypadku nowych problemów. Poznasz wszystkie możliwości języka i kilka zaawansowanych sztuczek. Uwaga, możesz przez przypadek nauczyć się matematyki lub fizyki! Przewróć stronę i rozpocznij swoją wielką przygodę z programowaniem!

WSTĘP

9

ŚĆ

1 0

CZĘ

ym z c Na e i a n g a e pol ramow g pro

S C R AT C H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

11

IAŁ

Projekt akwarium

DZ Z O R

1

Stoisz właśnie u wrót wielkiej przygody. Za kilka chwil zaczniesz odkrywać, jak można nauczyć komputer, aby robił dokładnie to, co zechcesz. W tym rozdziale napiszesz prosty program, ale z czasem jedynym ograniczeniem będzie tylko Twoja wyobraźnia.

Początek przygody Twoim pierwszym zadaniem jest stworzenie wirtualnego akwarium. Najpierw jednak musisz poznać podstawy działania Scratcha. Wejdź na stronę: scratch.mit.edu. Kliknij przycisk Stwórz.

Początkowo edytor Scratcha wygląda tak jak na poniższym obrazku.

12

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

W tym edytorze jest kilka regionów o różnym przeznaczeniu. 1

W tym okienku możesz obserwować, jak wygląda program.

2

Tu znajdują się bloczki — proste polecenia, które służą do budowania programów (skryptów). Bloczki są podzielone na kategorie, oznaczone różnymi kolorami. Każda kategoria daje inne możliwości, np. bloczki z kategorii Ruch pozwalają na przesuwanie elementów na ekranie, te z kategorii Dźwięk umożliwiają wprowadzenie dźwięku i muzyki do Twojego programu. Wszystkie bloczki i kategorie poznasz stopniowo w trakcie tworzenia gier.

3

Jest to miejsce, w którym tworzymy skrypty i programy.

4

Znajdują się tu wszystkie duszki — czyli elementy występujące w programie.

Duszki Wszystkie elementy (postacie, kształty, bohaterowie, przeciwnicy), jakie pojawiają się na ekranie, są nazywane duszkami. Można dowolnie zmieniać ich wygląd i zachowanie. Zamień kota, który pojawił się domyślnie, na rybkę, którą za chwilę nauczysz pływać w akwarium. Kot pojawia się zawsze na początku — jest domyślnym duszkiem w każdym nowo utworzonym projekcie. Aby dodać nowego duszka, kliknij zaznaczony przycisk:

Pojawi się cała biblioteka duszków — wybierz (kliknij dwa razy) dowolną rybkę. Pozostaje już tylko usunąć kota — kliknij go PPM (prawym przyciskiem myszy). Z menu, które się pojawi, wybierz opcję usuń.

R OZ DZ I A Ł 1 . P R O J E K T A K WA R I U M

13

Ruch duszków Czas wydać komputerowi pierwsze polecenie. Z działu Ruch wybierz poniższy bloczek i przenieś go na szare pole po prawej stronie.

Dwukrotnie kliknij przeniesiony bloczek. Co się stało?

Kliknięcie bloczka jest jednym ze sposobów uruchomienia programu. Zmień liczbę kroków, o które ma przesunąć się ryba — wpisz

50.

Naucz rybę pływać Zauważ, że teraz Twoja ryba zamiast płynąć, porusza się skokami. Trzeba to poprawić! Zamiast przesuwać ją od razu o 50 kroków, przesuń ją 25 razy o 2 kroki. Zmień liczbę określającą, ile kroków ma przepłynąć ryba, na 2. Z działu Kontrola wybierz bloczek powtórz 10 razy i ustaw go tak, żeby obejmował polecenie przesuń. Zmień liczbę powtórzeń na

25.

Twój program powinien teraz wyglądać tak:

Uruchom program poprzez dwukrotne kliknięcie i sprawdź jego działanie.

14

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Jedną ręką stwórz akwarium Ryba już pływa, ale nie ma jeszcze akwarium z wodą. Trzeba dodać odpowiednie tło. Kliknij przycisk wybierania nowego tła:

Przejdź do sekcji Pod wodą i wybierz takie tło, aby pasowało do Twojego projektu.

Zauważ, że gdzieś zniknęły Twoje skrypty. W ich miejsce pojawiły się narzędzia do rysowania, które pozwalają na dorysowanie nowych elementów. Wróć do napisanego programu. Kliknij zakładkę Skrypty oraz rybkę na liście duszków.

R OZ DZ I A Ł 1 . P R O J E K T A K WA R I U M

15

Tam i z powrotem Rybka pływa teraz w akwarium, ale tylko w jedną stronę. Czas nauczyć ją, jak zawracać. Dodaj do swojego programu bloczek Ruch/ustaw kierunek. W skryptach dla ryby utwórz drugi program, taki sam jak poprzedni. Najłatwiej to zrobić, klikając program PPM (prawym przyciskiem myszy) i wybierając polecenie duplikuj. W pierwszym programie kierunek ustaw na 90 (w prawo), a w drugim na

90

(w lewo).

Twoje programy powinny wyglądać tak jak poniżej:

Rybka umie już pływać tam i z powrotem. Co prawda na razie w jedną stronę pływa do góry brzuchem, ale za chwilę ten problem będzie rozwiązany.

Łączenie programu w całość Połącz oba programy w jeden — przypnij jeden pod drugim. Uruchom swój program i zaobserwuj, co się dzieje.

Rybka pływa w jedną stronę brzuchem do góry, ponieważ domyślnie duszki obracają się dookoła (jak wskazówki zegara). Po takim obrocie dół obrazka znajduje się na górze. Ponieważ komputer nie ma własnej wiedzy i po prostu robi dokładnie to, co mu każesz, nie przejmuje się tym, że tak pływająca ryba wygląda dziwnie. Trzeba mu wytłumaczyć, jak ma obracać rybkę.

16

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01 Dodaj na początku programu bloczek Ruch/ustaw styl obrotu lewo-prawo.

Rybka pływa już poprawnie, ale tylko raz, a potem się zatrzymuje. Aby pływała ciągle, musisz całość programu objąć bloczkiem Kontrola/zawsze.

Wprowadź jeszcze lepszy sposób na włączenie programu. Na samej górze dodaj bloczek Zdarzenia/kiedy kliknięto

. Teraz możesz włączyć program poprzez

kliknięcie zielonej flagi

— znajduje się ona powyżej

tworzonego przez Ciebie programu.

Gratulacje! Właśnie powstał Twój pierwszy program!

R OZ DZ I A Ł 1 . P R O J E K T A K WA R I U M

17

Ośmiornica wchodzi do gry Dodaj do programu inne duszki, aby ożywić swoje akwarium. Wybierz z biblioteki duszków zieloną ośmiornicę.

Przejdź do zakładki Kostiumy. Możesz tam zauważyć, że ośmiornica ma dwa kostiumy. Potraktuj je jako dwie klatki animacji ruchu. Powróć do zakładki Skrypty. Użyj trzech bloczków z poniższego rysunku, aby zbudować animację ruchu ośmiornicy. Zastanów się, jak je poprawnie połączyć.

Dodaj blok Ruch/przesuń wewnątrz bloku zawsze i dopasuj liczbę kroków tak, aby dobrze się zgrywała z ruchem ośmiornicy. Po raz kolejny spotykasz się z problemem wychodzenia duszka poza obszar programu. Można temu zapobiec, używając polecenia Ruch/jeżeli na brzegu, odbij się. Znajdź dla tego bloczka odpowiednie miejsce.

Podobnie jak w przypadku ryby, dodaj na początku programu dla ośmiornicy dwa polecenia:

Jaki będzie efekt dodania tych dwóch poleceń na początku programu? Uruchom swój program i przetestuj go.

18

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Może jeszcze rozgwiazda? Dodaj do akwarium nieco szaloną rozgwiazdę, która będzie się kręcić i zmieniać kolory. Dodaj rozgwiazdę do swojego projektu.

Rozgwiazda powinna się kręcić i zmieniać kolor. Z podanej poniżej rozsypanki bloczków ułóż odpowiedni program.

Pływając wśród ryb Czas dodać do programu interakcje z użytkownikiem. Stworzysz nurka, który będzie sterowany klawiszami strzałek. Dodaj kolejnego duszka — nurka.

Na początku naucz go płynąć w prawo. Dodaj bloczek Zdarzenia/kiedy klawisz oraz wybierz kiedy klawisz strzałka w prawo naciśnięty.

Dodaj bloczek, który ustawi odpowiedni kierunek ruchu.

R OZ DZ I A Ł 1 . P R O J E K T A K WA R I U M

19

Wydaj polecenie ruchu nurka.

Jak się domyślasz, po zaprogramowaniu ruchu w prawo łatwo będzie dodać następne kierunki. Wykonaj trzy kopie programu, który teraz powstał. Potrzebujesz razem czterech programów, dla każdej strzałki po jednym. W skopiowanych programach pozmieniaj odpowiednio: klikany klawisz i kierunek ruchu. Na koniec dopasuj rozmiar duszków na ekranie. Wykorzystaj do tego przyciski zmniejsz i zwiększ (znajdują się one na samej górze edytora):

Brawo! Twój pierwszy program jest skończony. Kliknij flaga.png, żeby uruchomić ruch zwierząt, i popływaj wśród nich nurkiem.

Z

ad

anie: Jeszcze jeden duszek Dodaj do akwarium jeszcze jedno zwierzę. Z biblioteki wybierz duszka według swojego uznania. Korzystając z tego, co już umiesz, napisz program opisujący jego zachowanie. Spróbuj zmienić wygląd tego duszka. Możesz też pozwolić mu na wydawanie różnych dźwięków. Poeksperymentuj z bloczkami z działów Wygląd oraz Dźwięk.

20

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Ten rozdział nauczył Cię: ✔ ✔ ✔ ✔ ✔ ✔

Obsługiwać interfejs Scratcha. Uruchamiać proste programy. Definiować ruch duszków. Umożliwić graczowi sterowanie duszkiem. Dodawać tło. Zmieniać kostiumy i kolory duszków.

R OZ DZ I A Ł 1 . P R O J E K T A K WA R I U M

21

IAŁ

DZ Z O R

2

Znikający duszek i okrutna matematyka W tym rozdziale powstanie Twoja pierwsza prawdziwa gra. Będzie polegała na klikaniu pojawiającego się w różnych miejscach duszka. Dowiesz się również, czym jest układ współrzędnych, do czego służą zmienne i jak nauczyć duszka prostej matematyki.

Czym jest zmienna?

W programach trzeba przechowywać różne wartości, np. liczbę żyć gracza, jego wynik, osiągnięty poziom, ilość złota. Do przechowywania takich wartości służą zmienne. Zmienna musi mieć swoją nazwę i wartość. 1. 2. 3. 4.

Aby utworzyć zmienną, trzeba przejść do działu Dane. Należy kliknąć przycisk Stwórz zmienną. Pojawi się wtedy okno o nazwie Nowa zmienna. Zmiennej trzeba nadać nazwę. I kliknąć OK

Po stworzeniu zmienna od razu pojawia się na ekranie. Aby ją wyłączyć, trzeba kliknąć pole wyboru przy nazwie zmiennej.

22

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Naucz duszka matematyki W tym podrozdziale przećwiczysz korzystanie ze zmiennych. Stworzysz program, który nauczy wybranego przez Ciebie duszka dodawać liczby. Utwórz nowy projekt. Dodaj do projektu dowolnego duszka, nie zapomnij o usunięciu kota. Utwórz trzy zmienne:

liczba 1, liczba 2, suma.

Poniższy rysunek pokazuje, w jaki sposób można pobierać liczby od użytkownika. Wykorzystane są bloczki Dane/ustaw, Czujniki/odpowiedź oraz Czujniki/zapytaj i czekaj. Zauważ, że bloczek odpowiedź znajduje się wewnątrz bloczka ustaw. Bloczki, które mają zaokrąglone boki, pozwalają użyć zmiennych i innych wartości z programu bezpośrednio w Twoich skryptach. Te zaokrąglone bloczki można wstawiać wewnątrz innych — wystarczy je tylko przeciągnąć na wolne miejsce w innym bloczku.

Użyj przedstawionego powyżej sposobu, żeby ustawić wartości zmiennych liczba

1

oraz

liczba 2.

Do programu dodaj bloczek, który obliczy sumę dwóch podanych liczb i zapisze ją w zmiennej wynik. Aby dodać dwie liczby, należy użyć odpowiedniego bloczka z kategorii Wyrażenia.

Na koniec nakaż duszkowi, aby powiedział wynik.

Przetestuj działanie swojego programu.

R OZ DZ I A Ł 2 . Z N I K A J ĄC Y D U S Z E K I O K R U T N A M AT E M AT Y K A

23

Pojawia się duszek Czas rozpocząć budowanie Twojej pierwszej prawdziwej gry. Będzie ona polegała na klikaniu pojawiającego się i znikającego duszka. Za każde trafienie w duszka kursorem gracz dostanie punkty, za każde pudło może je stracić. Dodaj główną postać w grze — ducha. Przejdź do biblioteki duszków i dodaj wybranego ducha. Usuń domyślną postać — kotka. Dodaj tło. Z biblioteki wybierz motyw zamek lub inne tło, które najbardziej Ci się podoba.

Układ współrzędnych

Zanim przejdziesz do dalszego tworzenia gry, musisz dowiedzieć się, czym jest układ współrzędnych. Będziesz z niego korzystał w prawie wszystkich grach, które napiszesz. Układ współrzędnych pozwala na dokładne określenie pozycji duszków na ekranie. Jeżeli ustawisz duszki na osi liczbowej, tak jak na rysunku poniżej, to możliwe będzie określenie ich pozycji: czerwony duszek znajduje się na pozycji 6, a pomarańczowy na pozycji 4.

24

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Niestety oś liczbowa wyznacza pozycję tylko w jednym kierunku (wymiarze). To za mało, żeby określić pozycję duszka na planszy, która ma dwa wymiary (rozwija się w dwóch kierunkach). Na szczęście i na to jest sposób. Wystarczy, że połączysz ze sobą dwie osie liczbowe, jedną w pionie, a drugą w poziomie. Oś pozioma to oś X, a oś pionowa to oś Y. Miejsce przecięcia się osi jest nazywane początkiem układu współrzędnych. W tym punkcie obie współrzędne mają wartość 0.

Dzięki układowi współrzędnych można dokładnie określić umiejscowienie duszka, wskazując jego pozycję względem obu osi. Przyjrzyj się rysunkowi powyżej. Czerwony duszek znajduje się w pozycji 5 na osi X i w pozycji 3 na osi Y, dlatego jego pozycja to (5, 3). Zawsze najpierw podawaj pozycję w poziomie (oś X), a potem w pionie (oś Y). Z kolei duszek pomarańczowy znajduje się w pozycji ( 5, 5).

R OZ DZ I A Ł 2 . Z N I K A J ĄC Y D U S Z E K I O K R U T N A M AT E M AT Y K A

25

W ramach ćwiczeń określ, jaka jest pozycja dwóch pozostałych duszków: • duszek szary: pozycja X = …, pozycja Y = … • duszek niebieski: pozycja X = …, pozycja Y = …

Podobny, ale nieco większy układ współrzędnych znajduje się w okienku Twojego programu. Oś X rozciąga się od 240 do 240, a oś Y od 180 do 180. Jest on przedstawiony na rysunku poniżej.

Istnieje wiele bloczków, za pomocą których możesz ustawiać pozycję duszka. Jeden z nich to Ruch/idź do x, y.

Wypróbuj działanie tego bloczka. Wpisz różne wartości x oraz y, a następnie kliknij bloczek. Zaobserwuj, gdzie przeniesie się duszek.

26

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Co zrobić, aby duszek zniknął? W tej sekcji stworzysz główny skrypt gry, odpowiedzialny za zachowanie ducha. Aby sprawić, by duch zniknął, użyj bloczka Wygląd/ ukryj.

Z działu Kontrola dodaj bloczek czekaj 1 s.

Przyszedł czas, aby wstawić polecenie, które pozwoli duchowi na pojawianie się w losowym miejscu. Wybierz bloczek Ruch/idź do x, y.

Aby zbudować skrypt pozwalający na pojawianie się duszka w losowej pozycji, musisz użyć bloczka Wyrażenia/losuj. Skorzystaj z tego bloczka, aby wylosować nową pozycję duszka. Ustaw odpowiednie przedziały, z których będą losowane liczby.

Kolejny krok to dodanie bloczka pokaż z działu Wygląd.

Dodaj jeszcze raz bloczek Kontrola/czekaj i zmień wartość na

0.7 s.

Spróbuj teraz uruchomić swój program.

Aby duszek ciągle pojawiał się i znikał bez konieczności uruchamiania programu, dodaj polecenie Kontrola/ zawsze. Cały napisany dotychczas przez Ciebie kod powinien znaleźć się wewnątrz tego bloczka.

R OZ DZ I A Ł 2 . Z N I K A J ĄC Y D U S Z E K I O K R U T N A M AT E M AT Y K A

27

Licznik punktów Aby gra działała poprawnie, trzeba dodać licznik punktów. Gracz dostanie jeden punkt za każde kliknięcie pojawiającego się duszka. Utwórz nową zmienną o nazwie

punkty.

Z nowych bloczków, które właśnie się pojawiły, wybierz Dane/zmień punkty o 1. Przesuń go na szare pole, tworząc nowy program. Nie łącz go z wcześniejszym skryptem!

Zwróć uwagę, że pojawił się licznik punktów. Chwyć go i ustaw w wybranym miejscu na ekranie. Przypnij blok Zdarzenia/kiedy duszek kliknięty nad bloczkiem zmień punkty o 1.

Dodaj wybrany przez siebie dźwięk, który będzie odtworzony po kliknięciu duszka.

Instrukcja dla gracza Twoja gra jest już prawie gotowa. Jednak nie każdy użytkownik będzie wiedział, jak w nią grać. Trzeba dodać instrukcję, którą powie do gracza duszek. Z działu Wygląd dodaj bloczek powiedz i przypnij go u góry pierwszego programu, nad bloczkiem zawsze.

Zmień wyświetlany tekst na: Kliknij na mnie, aby zdobyć punkty.

28

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

Co zrobić, aby gra zawsze zaczynała się tak samo? Przygotuj grę do rozpoczęcia rozgrywki, tak by zawsze zaczynała się tak samo. Z działu Zdarzenia wybierz kiedy kliknięto

.

Pod spodem dodaj bloczek Dane/ustaw punkty na 0. To pozwoli na rozpoczęcie gry za każdym razem z zerową punktacją. Z działu Ruch wybierz idź do x, y. Ustaw pozycję na x = 0, y =

0

i przypnij pod poprzednim poleceniem.

Dodaj również polecenie Wygląd/pokaż i przypnij do tego kodu.

Cały kod, który przed chwilą zbudowałeś, przypnij na górze, do pierwszego skryptu.

Z

ad

anie: Dobry duszek i zły duszek Wprowadź do swojej gry utrudnienie polegające na tym, że na ekranie będzie pojawiał się również drugi duszek. Kliknięcie jednego duszka ma dodawać punkty, a drugiego odejmować.

Ten rozdział nauczył Cię: ✔ ✔ ✔ ✔ ✔ ✔

Czym jest układ współrzędnych. Sterować pozycją duszków na ekranie. Tworzyć zmienne i używać ich. Zapisywać proste obliczenia w Scratchu. Losować liczby. Ustawiać duszki jako widoczne/niewidoczne.

R OZ DZ I A Ł 2 . Z N I K A J ĄC Y D U S Z E K I O K R U T N A M AT E M AT Y K A

29

01

IAŁ

DZ Z O R

3

Pogrywamy sobie w kotka i myszkę Przed Tobą rozdział, w którym mała mysz próbuje uciekać przed biegającymi tam i z powrotem kotami oraz niesfornym nietoperzem. Ty natomiast dowiesz się, czym są instrukcje warunkowe i pętle — jedne z najważniejszych bloczków, które na pewno przydadzą się każdemu twórcy gier.

Instrukcje warunkowe

Zauważ, że dotychczas wszystkie programy wykonywały po prostu polecenia z kolejnych bloczków — jedno po drugim. Jednak czasami przydatne jest, aby jakieś polecenie było wykonywane tylko pod danym warunkiem. Przykładowo napis „Koniec gry” powinien wyświetlać się tylko wtedy, gdy gracz przegra. Do takich zadań służą właśnie instrukcje warunkowe. Jak stworzyć instrukcję, która wykona się tylko po spełnieniu danego warunku? Użyj do tego celu bloczka Kontrola/jeżeli… to.

Zauważ, że w tym bloczku są dwa miejsca do uzupełnienia: •



30

Wolne miejsce w środku bloczka służy do wstawiania poleceń, które mają zostać wykonane. Mogą to być dowolne wybrane przez Ciebie bloczki lub całe skrypty. Po słowie jeżeli znajduje się warunek. Tylko jeżeli warunek będzie spełniony, polecenia znajdujące się wewnątrz bloczka zostaną wykonane.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01 Przykład instrukcji warunkowej:

Zauważ, że bloczek sprawdzający warunek różni się kształtem od bloczków, które pojawiały się dotychczas. Większość tego typu bloczków znajduje się w działach Czujniki oraz Wyrażenia. Możliwe jest też użycie bloczka pokazanego na obrazku poniżej. Pozwala on dodać polecenia, które mają być wykonane, jeżeli warunek jest spełniony i kiedy warunek nie jest spełniony.

Pętle

Jak zapewne pamiętasz z poprzednich rozdziałów, czasami potrzebne było, aby duszek wykonywał jakąś akcję wiele razy. Służą do tego bloczki powtórz oraz zawsze z działu Kontrola. Ale co tak naprawdę się dzieje, kiedy używasz tych bloczków? Czas to sobie dokładnie wyjaśnić. Najważniejsza zasada brzmi: Pętle powtarzają polecenia, które zawierają. Można również określić, pod jakimi warunkami mają powtarzać te polecenia. W Scratchu istnieją trzy rodzaje pętli: •

Kontrola/zawsze

R OZ DZ I A Ł 3 . P O G R Y WA M Y S O B I E W KOT K A I M Y S Z K Ę

31

Pętla zawsze, jak sama nazwa wskazuje, powtarza umieszczone w niej polecenia przez cały czas, aż do wyłączenia programu. •

Kontrola/powtórz… razy

Pętla powtórz… razy wykonuje umieszczone w niej polecenia dokładnie podaną liczbę razy. •

Kontrola/powtarzaj aż…

Pętla powtarzaj aż… wykonuje się, dopóki warunek umieszczony po słowie aż jest prawdziwy. Działa trochę podobnie do bloczka Kontrola/jeżeli, ale w przeciwieństwie do niego polecenia, które zawiera, może wykonywać wiele razy. Wewnątrz każdej z tych pętli muszą znajdować się inne bloczki. Mogą to być proste polecenia, ale i inne pętle oraz instrukcje warunkowe.

Zabawa w kotka i myszkę — założenia gry Gra, którą stworzysz, będzie polegała na poruszaniu się myszką i unikaniu przeciwników: dwóch kotów oraz nietoperza. Gracz będzie mógł sterować uciekającą myszką przy użyciu klawiszy strzałek. Do gry dodasz licznik, który pozwoli na odejmowanie żyć w momencie dotknięcia kota lub nietoperza. W końcowej fazie dołożysz możliwość zbierania pokazujących się i znikających bonusów.

32

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Mysz harcuje Usuń domyślnego duszka i dodaj myszkę. Skorzystaj z biblioteki duszków. Ustaw dowolne tło. Dodaj myszce możliwość poruszania się. Zbuduj poniższy program, składający się z instrukcji warunkowej, ustawienia kierunku oraz bloczka ruchu.

Stwórz podobne polecenia pozwalające na ruch za pomocą klawiszy: • strzałka w dół, • strzałka w prawo, • strzałka w lewo. Połącz wszystkie skrypty w jeden program. Użyj pętli zawsze, wstaw do niej cały dotychczas stworzony program. Dodaj blok Zdarzenia/kiedy kliknięto

na początku

skryptu. Przetestuj działanie swojego programu.

Biegające koty Dodaj nowego duszka — biegnącego kota, znajduje się on w bibliotece duszków.

Zauważ, że po dodaniu nowego duszka z edytora zniknął Twój program. W Scratchu dla każdego duszka możesz tworzyć osobne skrypty. To, dla którego duszka aktualnie tworzysz polecenia, zależy od tego, który z nich jest zaznaczony w dziale Duszki, poniżej ekranu gry.

R OZ DZ I A Ł 3 . P O G R Y WA M Y S O B I E W KOT K A I M Y S Z K Ę

33

Na szarym pasku u góry strony znajdują się przyciski pozwalające na zmniejszenie i zwiększenie duszka. Zmniejsz kota o połowę.

Używając bloczków z poniższej rozsypanki, utwórz program, który pozwoli kotu na bieganie tam i z powrotem pomiędzy brzegami okna gry.

Utwórz drugiego kota z takim samym kodem. Aby zrobić to jak najprościej, kliknij kota PPM i z menu, które się pojawi, wybierz polecenie duplikuj. Ustaw koty tak, aby jeden biegał w górnej połowie pola gry, a drugi w dolnej. Uruchom swój program. Dopasuj prędkość ruchu kotów.

Mysz dostaje drugie życie W skryptach dla myszy dodaj polecenia, które sprawią, że mysz po dotknięciu kota straci punkty życia. Stwórz zmienną

życie.

Dodaj bloczek Dane/ustaw życie. Za jego pomocą zmień wartość zmiennej życie na

10.

Z działu Zdarzenia dodaj kiedy kliknięto

i przypnij

u góry skryptu. Pozostaw ten skrypt osobno, z boku.

34

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Stwórz drugi skrypt pozwalający na odejmowanie żyć, gdy myszka dotknie kota. Z działu Kontrola wybierz instrukcję jeżeli… to.

Jako warunek instrukcji jeżeli dodaj Czujniki/dotyka i ustaw na nazwę duszka przedstawiającego kota.

Jako polecenie wewnątrz instrukcji jeżeli… to umieść bloczek Dane/zmień życie o. Zmień wartość w tym poleceniu z

1

na

1.

Korzystając z bloczków z działu Dźwięk, dodaj dźwięk, który będzie odegrany, kiedy zostanie wykryta kolizja myszy i kota.

Całość kodu zamknij w pętli zawsze. Połącz oba skrypty. Uruchom i przetestuj grę.

Wprowadź poprawki Okazuje się, że obecnie mysz traci punkty, ale tylko w przypadku, kiedy dotyka jednego z kotów. Dotknięcie drugiego nie robi na niej wrażenia. Zmień obecny warunek (tylko instrukcję jeżeli) tak, aby wyglądała jak na rysunku poniżej.

R OZ DZ I A Ł 3 . P O G R Y WA M Y S O B I E W KOT K A I M Y S Z K Ę

35

Zastanów się, czym różni się ten skrypt od poprzedniego.

Pojawił się też problem z tym, że w momencie kolizji z kotem mysz traci bardzo dużo żyć. Dzieje się tak dlatego, że kolizja nie następuje tylko w jednej klatce, ale w wielu kolejnych klatkach i w każdej odejmowane jest jedno życie. Na końcu instrukcji, które wykonują się w przypadku kolizji, dodaj polecenie Kontrola/czekaj 1 s. Zatrzyma ono pętlę sprawdzającą kolizję na jedną sekundę — dzięki temu kot i myszka zdążą się minąć, zanim kolizja zostanie ponownie wykryta.

Nietoperz płata figle W tej sekcji dodasz do gry nietoperza, który będzie latał w losowych kierunkach po planszy. Wstaw nowego duszka z biblioteki — nietoperza — i zmniejsz go do rozmiaru kotów. Zbuduj polecenia, które sprawią, że po kliknięciu nietoperz zacznie machać skrzydłami. Pomiędzy kolejnymi zmianami kostiumu czekaj ok. 0,1 – 0,3 sekundy. Dodaj osobny skrypt, który będzie odpowiadał za ruch nietoperza. Zacznij od bloczka Zdarzenia/kiedy kliknięto :

36

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01 Dodaj pod nim pętlę Kontrola/zawsze.

Wewnątrz pętli wstaw najważniejszy element — polecenie Ruch/leć przez.

Jednak zamiast podawać tam wartości bezpośrednio, ustaw, by były losowane. W ten sposób ruch nietoperza będzie bardziej nieprzewidywalny, a gra ciekawsza. We wszystkich wolnych miejscach w poleceniu leć przez zamiast liczb wstaw bloczek:

Dobierz odpowiednie wartości, tak aby nietoperz latał po całej planszy odpowiednio szybko. Przykład:

Zmień skrypt dla myszki, tak by była wykrywana również kolizja z nietoperzem.

Zadanie 1.: Zrób prezent myszce Dodaj do swojego programu nowego duszka — bonus. Jeśli myszka go dotknie, gracz zdobędzie dodatkowe punkty i życia. Bonus ma pojawiać się i znikać w losowych częściach ekranu. Aby to zrobić, wzoruj się na wcześniejszej lekcji.

R OZ DZ I A Ł 3 . P O G R Y WA M Y S O B I E W KOT K A I M Y S Z K Ę

37

Zadanie 2.: Testy działania programu Przetestuj swoją grę i popraw w niej wszystkie niedociągnięcia. • •



Weź kartkę i ołówek. Spędź kilka minut, grając w swoją grę. Za każdym razem, kiedy podczas gry napotkasz coś, co Ci się nie podoba, zapisz to na liście. Zastanów się, jak poprawić kolejne punkty z listy.

Ten rozdział nauczył Cię: ✔ Czym są instrukcje warunkowe. ✔ Używać polecenia jeżeli do wykonania kodu, tylko jeśli pewien warunek jest spełniony. ✔ Do czego służą pętle. ✔ Jak wykorzystać pętle, aby duszki powtarzały swoje akcje wiele razy. ✔ Sprawdzać kolizje pomiędzy duszkami.

38

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

IAŁ

Przygody w kosmosie

DZ Z O R

4

W tym rozdziale stworzysz grę, która pozwoli graczowi wcielić się w pilota statku kosmicznego. Podczas podróży przez kosmos jego głównym zadaniem będzie unikanie niebezpiecznych asteroid. Do stworzenia tej gry na pewno przyda Ci się umiejętność klonowania duszków.

Klony

Czym są klony? Klony to po prostu kopie jakiegoś duszka, które używają tych samych skryptów. W dziale Kontrola jest dostępny bloczek sklonuj siebie, który powoduje powstanie kopii duszka.

Dostępny jest też bloczek Kontrola/kiedy zaczynam jako klon. Jest to bloczek startowy dla fragmentu kodu. Pozwala nam przygotować utworzonego klona do działania — np. ustawić jego początkową pozycję.

Ostatnim z bloczków przeznaczonych dla klonów jest Kontrola/ usuń tego klona. Pozwala on na usunięcie klona, który nie jest już potrzebny.

R OZ DZ I A Ł 4 . P R Z YG O DY W KO S M O S I E

39

01

Do czego przydaje się klonowanie? Klony przydają się, kiedy chcesz w swoim programie umieścić dużo takich samych duszków, które mają zachowywać się podobnie (np. w tym rozdziale użyjesz klonowania do tworzenia nadlatujących asteroid oraz pocisków). Wystarczy wtedy, że kod opisujący zachowanie duszka napiszesz jeden raz. Oczywiście może się wydawać, że wystarczy po prostu skopiować duszka wiele razy, ale pomyśl, jak żmudne byłoby wtedy wprowadzanie jakiejkolwiek poprawki we wszystkich kopiach! A przecież programista musi przede wszystkim pracować mądrze.

Lataj Utwórz nowy projekt, usuń domyślnego duszka. Przygotuj obrazek statku kosmicznego. Możesz go sam narysować lub wybrać z biblioteki duszków. Oto jak wygląda nasza rakieta.

Dodaj rakietę jako nowego duszka. Dodaj pętlę Kontrola/jeżeli… to. W puste miejsce jako warunek wstaw z działu Czujniki/ klawisz… naciśnięty i zamień spację na strzałkę w górę. Wewnątrz bloku jeżeli wstaw zmień y o 10.

40

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01 Kod dla ruchu statku w górę jest już napisany. Spróbuj samodzielnie stworzyć podobny dla: • ruchu w dół, • ruchu w prawo, • ruchu w lewo. Złącz powstałe skrypty i zamknij je w pętli zawsze. Dodaj u góry skryptu bloczek kiedy kliknięto

.

Sklonuj pociski Z biblioteki dodaj tło. Wybierz motyw Kosmos/stars. Dodaj nowego duszka — pocisk. Podobnie jak statek kosmiczny, możesz go narysować lub wybrać z pliku. Dla przykładu tak wygląda nasz pocisk.

Tylko klony pocisku będą widoczne po uruchomieniu gry. Dodaj kod, który po naciśnięciu

ukryje pocisk.

Aby statek strzelał po naciśnięciu klawisza spacji, stwórz nowy skrypt (dalej w kodzie dla pocisku). Rozpocznij od bloczka Zdarzenia/kiedy klawisz spacja naciśnięty. Dodaj z działu Kontrola bloczek sklonuj siebie. Na dole przypnij bloczek Kontrola/czekaj 1 s.

R OZ DZ I A Ł 4 . P R Z YG O DY W KO S M O S I E

41

Stwórz trzeci skrypt dla pocisku. Z działu Kontrola wybierz kiedy zaczynam jako klon. Dodaj bloczek Wygląd/pokaż. Zbuduj bloczek odpowiedzialny za to, by każdy dodany klon pocisku pojawiał się dokładnie w tym miejscu, w którym jest rakieta. Z działu Ruch dodaj idź do x: 0 y: 0. Z działu Czujniki dodaj współrzędna x z rakieta i wstaw przy w pierwszym wolnym polu. W drugim ma znajdować się bloczek współrzędna y z rakieta.

Stwórz nowy skrypt, nie łącząc go z wcześniej napisanym. Dodaj bloczek zmień y o 10. Dołącz poniżej pętlę jeżeli… to. Jako warunek w poleceniu jeżeli dodaj bloczek Czujniki/ dotyka krawędź. Jeżeli pocisk dotknie krawędzi, powinno zostać wykonane polecenie Kontrola/usuń tego klona. Zamknij cały skrypt w pętli zawsze.

Połącz utworzony skrypt z tym zaczynającym się od kiedy zaczynam jako klon. Uruchom i przetestuj program.

42

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Nadlatują asteroidy Pora na dodanie utrudnienia — spadających asteroid, które gracz będzie mógł zestrzelić. Asteroidy będą pojawiały się na górze ekranu i leciały w dół, a następnie znikały, kiedy dotkną krawędzi ekranu. Narysuj nowego duszka — asteroidę. Może on wyglądać jak ten na rysunku poniżej.

Z poniższej rozsypanki ułóż skrypt, który po kliknięciu ukryje asteroidę, a następnie co jedną sekundę będzie tworzyć jej klona.

W tym momencie nie ma znaczenia, gdzie umieścisz asteroidę, ponieważ widoczne będą tylko stworzone przez Ciebie klony. Utwórz nowy skrypt dla asteroidy. Z działu Kontrola dodaj kiedy zaczynam jako klon. Poniżej przypnij bloczek pokaż z działu Wygląd. Dodaj bloczek idź do x: 0 y: 0. Ustaw pozycję, tak aby współrzędna y wynosiła 150, a współrzędna x była losowana z zakresu od

210

do

210.

Nowa pozycja asteroidy

powinna być tak wybrana, by asteroida nie dotykała krawędzi — inaczej zaraz po pojawieniu się zostanie usunięta.

R OZ DZ I A Ł 4 . P R Z YG O DY W KO S M O S I E

43

Do utworzonego skryptu dodaj polecenia, które w pętli zawsze będą przesuwały asteroidę w dół. W przypadku zetknięcia z pociskiem lub krawędzią asteroida powinna zostać usunięta. Ułóż odpowiedni skrypt z poniższych bloczków.

Uruchom i przetestuj swoją grę.

Licznik punktów Stwórz zmienną o nazwie

punktacja.

Dodaj pokaż zmienną punktacja do już istniejącego kodu rozpoczynającego się od bloczka kiedy kliknięto

.

W skrypcie dla asteroidy dodaj jeszcze jeden, nowy warunek sprawdzający kolizję z pociskiem. Wewnątrz tego warunku dodaj bloczek zmień punktacja o 1. Stwórz kolejną zmienną o nazwie prędkość. Zmodyfikuj kod dla statku kosmicznego w taki sposób, aby można było ustawiać jego prędkość w trakcie gry. Zastanów się, co zrobić, aby zastąpić wartości ujemne w bloczkach. Przypnij u góry bloczek określający, że prędkość początkowa ma wynosić 10.

44

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

W następnym rozdziale będziesz kontynuować pisanie tej gry!

Z

ad

anie: Licznik życia Dodaj do swojego programu licznik życia. Statek początkowo powinien mieć 5 punktów życia, każde zderzenie z asteroidą powinno odbierać jeden punkt. • • •



Stwórz zmienną życie. Ustaw jej początkową wartość na 5. Przejdź do kodu dla asteroidy i dodaj tam instrukcję Kontrola/jeżeli. W warunku sprawdzaj, czy nastąpiło dotknięcie statku kosmicznego przez asteroidę. Za każdą taką sytuację powinien zostać odjęty jeden punkt życia. Zastanów się, co zrobić, aby zetknięcie z asteroidą odbierało tylko jedno życie. Z podobnym problemem spotkałeś się w poprzednim rozdziale.

Ten rozdział nauczył Cię: ✔ Czym są klony i do czego mogą się przydać. ✔ Tworzyć klony duszków i pisać skrypty dla klonów. ✔ Odczytywać pozycję innych duszków.

R OZ DZ I A Ł 4 . P R Z YG O DY W KO S M O S I E

45

Kosmiczna bitwa

IAŁ

DZ Z O R

5

W trakcie podróży kosmicznej gracz zaczyna napotykać wrogie statki kosmitów. Czas podjąć z nimi walkę. Tymczasem w Twoim programie pojawią się komunikaty oraz animacje.

Komunikaty

Komunikat jest to informacja, która może rozchodzić się po całym programie, uruchamiając odpowiednie skrypty. Aby nadać komunikat, należy użyć bloczka Zdarzenia/nadaj. Komunikat może mieć dowolną nazwę.

Z kolei bloczek Zdarzenia/kiedy otrzymam… jest bloczkiem startowym. Uruchamia zawarty w nim kod zawsze wtedy, kiedy zostanie nadany komunikat, na który oczekuje.

Do zarządzania komunikatami służy jeszcze jeden bloczek: Zdarzenia/nadaj i czekaj. Działa on podobnie jak bloczek nadaj — wysyła komunikat, ale dodatkowo zatrzymuje dalsze wykonanie swojego kodu do momentu, aż wszystkie skrypty, które ten komunikat aktywował, zakończą działanie.

46

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Potężny wróg Ten rozdział jest kontynuacją rozdziału 4. Dlatego nie twórz nowego projektu, ale dodaj kolejne elementy do ostatnio zbudowanej gry. Dodaj nowego duszka — nazwij go wróg. Duszka możesz dodać z biblioteki, samodzielnie narysować lub wczytać z pliku.

Ponieważ wróg nie będzie widoczny od początku gry, należy napisać skrypt, który początkowo ukryje statek wroga po jej włączeniu. Dodaj bloczek Zdarzenia/kiedy kliknięto

.

Pod spodem przypnij Wygląd/ukryj.

Amunicja wroga Dodaj nowego duszka — pocisk, którym będzie strzelał wrogi statek. Wykorzystaj do tego pocisk wystrzeliwany przez gracza. Zduplikuj go. Przejdź do sekcji Kostiumy i powiększ pocisk lupką (na dole po prawej stronie). Pokoloruj pocisk na inny kolor, np. niebieski. Obróć pocisk do góry nogami. Aby to zrobić, naciśnij przycisk z dłonią (w menu po lewej stronie pola do rysowania) i zaznacz swój pocisk.

R OZ DZ I A Ł 5 . KO S M I C Z N A B I T WA

47

Złap myszą za uchwyt zaznaczony na obrazku i obróć pocisk do góry nogami.

Wysłanie komunikatu pojaw się W skryptach dla tła utwórz polecenie wysyłające komunikat do wrogiej rakiety, który spowoduje jej pojawienie się. Przejdź do skryptów dla tła (naciśnij obrazek tła po lewej stronie ekranu i przejdź do zakładki Skrypty). Utwórz polecenie oczekiwania 5 –

20

sekund. Użyj blocz-

ków Kontrola/czekaj oraz Wyrażenia/losuj. Z działu Zdarzenia dodaj bloczek nadaj. Rozwiń go i wybierz nowy komunikat. W pustym polu wpisz pojaw

się.

Zamknij całość w pętli zawsze. U góry dodaj bloczek Zdarzenia/kiedy kliknięto

48

.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Odbiór komunikatu pojaw się Oczywiście odbiór wysłanego przed chwilą komunikatu nastąpi w skryptach dla wrogiego statku kosmicznego. Trzeba zaprogramować jego zachowanie oraz pojawienie się w losowym miejscu po odebraniu komunikatu pojaw się. Ten skrypt będzie zaczynał się od bloczka Zdarzenia/ kiedy otrzymam oczekującego na komunikat pojaw się.

Zaraz po nim dodaj polecenie Wygląd/pokaż. Zaprogramuj zachowanie statku — ma on lecieć przez 2 sekundy do wylosowanego punktu na górze ekranu, a następnie oddać strzał. Skorzystaj z poniższego kodu. Komunikat strzał posłuży Ci później jako informacja, która poskutkuje pojawieniem się pocisku wystrzelonego przez wrogi statek.

Zamknij bloczki odpowiedzialne za zachowanie przeciwnika w pętli zawsze. Przed pętlą dodaj bloczek Ruch/idź do x, y. Wpisz wartości takie jak w bloczku definiującym zachowanie.

Zestrzelenie przeciwnika W tym podrozdziale dodasz możliwość zestrzelenia statku wroga. Również ten skrypt będzie znajdował się w kodzie dla wrogiego statku. R OZ DZ I A Ł 5 . KO S M I C Z N A B I T WA

49

Podobnie jak poprzedni skrypt, i ten musi zaczynać się od odebrania komunikatu pojaw się. Zacznij od bloku Zdarzenia/kiedy otrzymam, ustaw oczekiwany komunikat na pojaw się. Dalsza część skryptu będzie znajdować się w pętli zawsze. Poniżej dodaj warunek jeżeli… to. Wejdź w dział Czujniki i użyj bloczku dotyka. Wstaw go wewnątrz bloczka jeżeli. Sprawdzana ma być kolizja z pociskiem wystrzelonym przez gracza. Sprawdź, jaka jest nazwa tego duszka.

Wewnątrz instrukcji jeżeli dodaj trzy polecenia, które mają zostać wykonane w przypadku kolizji: Dodanie 5 punktów dla gracza. Ukrycie statku wroga (Wygląd/ukryj). Zatrzymanie innych skryptów duszka. Przejdź do działu Kontrola i w bloczku zatrzymaj ustaw inne skrypty duszka.

Być może zastanawia Cię, czemu dwa ostatnie skrypty nie są połączone w jeden. Jest tak, ponieważ instrukcja Ruch/leć przez 2 s do x, y trwa dokładnie 2 sekundy i w tym czasie blokuje wykonanie innych instrukcji. W tym wypadku blokowane byłoby sprawdzenie kolizji z pociskiem. Wróg, poruszając się, byłby odporny na strzały.

50

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

01

Salwa przeciwnika W tym podrozdziale dodasz skrypt odpowiedzialny za wystrzał przeciwnika. Przejdź do skryptów dla pocisku przeciwnika. Pierwszy skrypt: Stwórz krótki kod pozwalający na ukrycie się pocisku, gdy zostanie naciśnięta

.

Drugi skrypt: Dodaj kod taki jak na rysunku poniżej. Pozwala on na stworzenie klonów pocisku przeciwnika po otrzymaniu komendy strzał.

Trzeci skrypt pozwoli na dodanie reakcji na trafienie gracza (np. odjęcie życia). Dodaj pętlę jeżeli… to. Wstaw za słowem jeżeli bloczek dotyka. Wybierz, aby sprawdzana była kolizja ze statkiem gracza. Wewnątrz instrukcji jeżeli dodaj bloczek Dane/zmień oraz Kontrola/usuń tego klona.

Napisz podobną do poprzedniej instrukcję, która usunie klon pocisku wtedy, gdy dotknie on krawędzi ekranu. Złącz obie instrukcje jeżeli w jeden skrypt, jedna pod drugą. Na górze dodaj bloczek Ruch/zmień y o –5.

R OZ DZ I A Ł 5 . KO S M I C Z N A B I T WA

51

Zamknij całość w pętli zawsze. Stwórz taki fragment kodu jak na rysunku poniżej i przypnij go u góry, do wcześniej napisanego skryptu. Odpowiada on za pojawienie się pocisku i ustawienie go w początkowej pozycji zgodnej z pozycją wrogiego statku.

Eksplozje i wybuchy — czyli tworzymy animację Dodaj nowego duszka o nazwie eksplozja. Będzie on zawierał kolejne etapy (klatki animacji) wybuchu. Przykładowa animacja wybuchu znajduje się na rysunku poniżej.

Przejdź do sekcji Kostiumy i narysuj kilka kostiumów przedstawiających kolejne etapy wybuchu. Każdy kolejny etap eksplozji powinien znajdować się w osobnym kostiumie. Wróć do działu Skrypty. Pierwszy skrypt: Napisz kod, który pozwoli na ukrycie eksplozji po naciśnięciu

. Możesz wzorować się na

analogicznym skrypcie dla pocisku przeciwnika. Drugi skrypt: Dodaj nowy kod, taki jak na obrazku poniżej. Tworzy on klony eksplozji po otrzymaniu odpowiedniego komunikatu (wybuch).

52

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

Trzeci skrypt: Ten kod będzie odpowiedzialny za samą animację. Ustawi odpowiednią pozycję i będzie nadzorował zmianę kostiumów. Dodaj pętlę, która powtórzy 7 razy zawarty w niej kod — czyli o 1 mniej, niż jest obrazków w animacji. W środku umieść dwa bloczki: Wygląd/następny kostium oraz Kontrola/czekaj 0.1 s. Poniżej pętli dodaj bloczek Kontrola/usuń tego klona. Na samej górze skryptu dodaj kod z poniższego rysunku. Dla każdego klona ustawia on odpowiedni kostium początkowy i przesuwa go na aktualną pozycję statku przeciwnika — czyli tam, gdzie doszło do kolizji.

Przetestuj swoją grę!

Z

ad

anie: Ostatnie szlify Nadszedł czas na Twoje pomysły. Zmień grę, tak aby była jak najciekawsza. Oto kilka propozycji: •



W momencie kiedy zmienna życie osiągnie wartość 0, zakończ wszystkie skrypty w programie i zmień tło na takie, na którym pojawi się odpowiednia informacja o przegranej. Po przekroczeniu odpowiedniej liczby punktów zakończ grę i ustaw tło na informację o zwycięstwie.

R OZ DZ I A Ł 5 . KO S M I C Z N A B I T WA

53

01

Z

ad

anie: Ostatnie szlify •



ciąg dalszy

Dodaj animację eksplozji po trafieniu statku bohatera przez pocisk przeciwnika lub asteroidę. Pamiętaj, że musi to być inny duszek niż eksplozja dla statku wroga. Inny duszek, ale rysunki mogą być te same. Możesz dodać innego rodzaju wrogów, którzy będą zachowywali się w inny sposób.

Dodaj własne, ciekawe modyfikacje.

Ten rozdział nauczył Cię: ✔ Czym są komunikaty. ✔ Wykorzystywać komunikaty do przekazywania informacji w programie. ✔ Tworzyć własne animacje. ✔ Tworzyć klony w odpowiedzi na pojawiający się komunikat.

54

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

ŚĆ

CZĘ

02

ie Jak dzieln o ać m a w s y ąz i w roz lemy b pro

S C R AT C H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

55

Żuczek na autostradzie

IAŁ

DZ Z O R

6

W tym rozdziale stworzysz grę, w której zadaniem gracza będzie przeprowadzenie małego żuczka przez ruchliwą autostradę. Podczas pisania gry dowiesz się, jak obsługiwać stoper, poćwiczysz tworzenie klonów oraz użycie liczb losowych.

Ruch żuczka Utwórz nowy projekt. Usuń domyślnego duszka, zamiast niego dodaj żuczka.

Dodaj kod, który po rozpoczęciu gry ustawi żuczka w kierunku

56

0

stopni.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02 Napisz skrypty, które pozwolą na poruszanie żuczkiem przy użyciu klawiszy strzałek. Jeżeli nie wiesz, jak to zrobić, poszukaj podobnego rozwiązania w poprzednich rozdziałach.

Uruchom i przetestuj swój program.

Pierwszy pas ruchu Dodaj nowego duszka — samochód. Wybierz jednego z duszków o nazwie convertible.

Ustaw samochód blisko lewej krawędzi ekranu. Możesz go ustawić tak, aby tylko częściowo wystawał zza krawędzi. Dodaj kod, który po rozpoczęciu gry ukryje samochód. Pod spodem, w pętli zawsze, będą tworzone klony samochodu. Po utworzeniu klona pętla będzie wstrzymywana na losowy czas.

R OZ DZ I A Ł 6 . Ż U C Z E K N A A U TO S T R A DZ I E

57

Należy jeszcze dodać skrypt, który będzie odpowiadał za zachowanie klonów. Klon po utworzeniu ma się pojawić. Następnie będzie poruszał się w prawo (dzięki bloczkowi zmień x o 2), dopóki nie dojdzie do prawej krawędzi. Po dotarciu do krawędzi zostanie usunięty.

Uruchom program i przetestuj jego działanie.

Kolejne pasy ruchu Dodaj kolejne pasy ruchu. Dla różnych pasów ustaw różne kierunki ruchu, prędkość samochodów i odstępy czasu, w jakich pojawiają się samochody. Jeżeli obrazek auta jest ustawiony w niewłaściwą stronę, wystarczy, że po rozpoczęciu gry ustawisz mu odpowiedni kierunek, tak jak żuczkowi. Może się też przydać bloczek Ruch/ustaw styl obrotu.

Twoja gra powinna w tym momencie wyglądać podobnie do przedstawionej na rysunku poniżej.

58

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Warunki zwycięstwa i przegranej Czas dodać skrypty, które będą sprawdzały, czy gracz przegrał lub wygrał grę, i odpowiednio reagowały. • •

W przypadku zwycięstwa zostanie wyświetlona odpowiednia informacja oraz zatrzymane zostaną wszystkie skrypty. W przypadku porażki gracz zostanie przeniesiony na dół planszy (na miejsce startowe).

Wszystkie polecenia w tym podrozdziale wstaw w kodzie dla żuczka, po ustawieniu mu kierunku i początkowej pozycji. Dodaj pętlę Kontrola/zawsze. Wewnątrz pętli dodaj poniższe polecenia obsługujące zwycięstwo gracza. Zastanów się, jak działają.

Stwórz kod odpowiadający za kolizję żuczka z samochodem. Zastanów się, jak działa.

W powyższym kodzie zmodyfikuj warunek, który jest sprawdzany w poleceniu jeżeli. Zamiast kolizji z jednym rodzajem samochodów, sprawdzaj kolizję z samochodami każdego rodzaju. Poniżej przykład dla trzech typów samochodów.

Uruchom program i przetestuj jego działanie.

R OZ DZ I A Ł 6 . Ż U C Z E K N A A U TO S T R A DZ I E

59

Dostosuj parametry każdego z pasów ruchu: prędkość, częstość pojawiania się, kierunek, pozycję w pionie, tak aby gra była jak najciekawsza. Uwaga! Jeżeli chcesz, by granie w Twoją grę było przyjemne, to jest najważniejszy punkt, na który warto poświęcić trochę czasu.

Czas się kończy Aby nieco utrudnić rozgrywkę, można dodać limit czasu na przeprowadzenie żuczka na drugi koniec planszy. W tym celu dodaj do gry stoper. W Scratchu stoper uruchamia się automatycznie wraz ze startem programu. Aby go pokazać na ekranie, należy zaznaczyć odpowiednie pole wyboru w dziale Czujniki.

Można również wyzerować wartość czasomierza/stopera, używając bloczka Czujniki/zeruj stoper.

Zaznacz pole wyboru stoper w dziale Czujniki. Dodaj kolejny warunek porażki gracza. Powinien zadziałać, kiedy stoper przekroczy założony czas. Oczywiście należy go umieścić w tej samej pętli co wcześniejsze warunki zwycięstwa i przegranej.

Nie zapomnij dodać polecenia, które w przypadku porażki gracza z powodu kolizji z samochodem zeruje stoper.

60

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02 Z

ad

anie: Gra skończona? W tym momencie prawdopodobnie masz już przed sobą działającą grę. Jednak nic nie stoi na przeszkodzie, aby była jeszcze bardziej atrakcyjna. Dodaj do niej nowe elementy według swojego pomysłu. Poniżej kilka propozycji, co można zrobić, by uatrakcyjnić tę grę: • • •





Wstawić ładne tło. Wstrzymać ruch żuczka na początku gry na kilka sekund, aby zdążyły uformować się linie samochodów. Dodać rzekę, którą można przejść, tylko przeskakując po poruszających się kłodach. Kłody działają tak samo jak samochody, ale kolizja z nimi nie powoduje porażki — wręcz przeciwnie, tylko na ich grzbiecie można przejść przez rzekę. Zastanów się, jak to zrobić. Zmienić grę, tak aby żuczek przed dotarciem na górę planszy musiał zebrać kilka pojawiających się na planszy bonusów (np. jabłuszek). Kolejny bonus może pojawić się dopiero wtedy, gdy poprzedni zostanie zebrany. …i wiele, wiele innych rzeczy. Wszystko zależy od Twojej wyobraźni.

Ten rozdział nauczył Cię: ✔ Ustawiać stopień trudności swoich gier. ✔ Obsługiwać stoper. ✔ Sprawdzać wiele warunków w jednej instrukcji jeżeli.

R OZ DZ I A Ł 6 . Ż U C Z E K N A A U TO S T R A DZ I E

61

IAŁ

Arkanoid

DZ Z O R

7

To rozdział inny niż dotychczasowe, w którym przećwiczysz samodzielne budowanie programu. Ponadto zmierzysz się z kilkoma bardziej skomplikowanymi problemami programistycznymi. A wszystko to przy tworzeniu Twojej własnej wersji sławnej gry Arkanoid.

Arkanoid — czyli co? Twoim zadaniem w tym rozdziale będzie stworzenie gry o nazwie Arkanoid. Gra polega na odbijaniu paletką piłeczki, tak aby rozbić wszystkie bloki. Podstawowa wersja tej gry jest przedstawiona na rysunku poniżej.

Oczywiście swoją wersję możesz uzupełnić o różne elementy, jak na przykład liczniki życia, punktów, spadające bonusy, przyspieszanie piłeczki, różne poziomy… 62

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Belka Korzystając z przycisku malowania nowego duszka, przejdź do rysowania własnego duszka.

Narysuj paletkę (belkę), którą będzie poruszał gracz. Zwróć uwagę, aby środek duszka pokrywał się ze środkiem tworzonego obrazka.

Stwórz skrypt odpowiadający za sterowanie paletką. Skrypt powinien startować po naciśnięciu

, gracz

ma mieć możliwość poruszania paletką w prawo i lewo. Wykorzystaj w swoim kodzie bloczki Kontrola/zawsze oraz Kontrola/jeżeli. Dodaj do kodu polecenie, które zagwarantuje, że paletka nie przesunie się poza ekran. Można to zrobić przy użyciu jednego bloczka.

Piłka Namaluj kolejnego duszka — piłkę. Pamiętaj, aby środek duszka pokrywał się ze środkiem tworzonego obrazka. Dodaj kod dla piłki, który po naciśnięciu

(po starcie

programu) ustawi ją w pozycji x = 0 oraz y = 0. Dodatkowo ustaw jej początkowy kierunek ruchu na

180

stopni.

Dodaj pod spodem pętlę Kontrola/zawsze. W pętli umieść bloczek przesuwający piłkę o

10

kroków oraz

bloczek, który zagwarantuje odbicie się piłki, jeżeli dotknie ona brzegu.

R OZ DZ I A Ł 7. A R K A N O I D

63

Natrafiłeś w tym momencie na trudny problem programistyczny: Jak zaprogramować odbicie piłki od paletki? W najprostszej wersji odbicie może wyglądać następująco:

Po kolizji z belką kierunek ruchu piłki jest zmieniany na przeciwny. kierunek nowy = 180° − kierunek stary Dodaj do swojego programu taki kod, oczywiście wewnątrz wcześniej stworzonej pętli. Uruchom i przetestuj utworzony program. Zastanów się, czemu takie rozwiązanie nie będzie dobre dla gracza?

Odbicie piłki od paletki — wersja zaawansowana W poprzednim rozwiązaniu piłka cały czas odbijała się tylko w górę i w dół. Zmień to tak, aby kąt odbicia piłki od paletki zależał od miejsca, w którym piłka uderzy paletkę. Jeżeli piłka uderzy prawą stronę paletki, odbije się bardziej w prawą stronę, podobnie ze stroną lewą, im dalej od środka paletki, tym bardziej w bok odbije się piłka1. Można to osiągnąć, zmieniając nieco wzór na nowy kierunek ruchu.

Zmień kod opisujący zachowanie piłki po kolizji z paletką na ten przedstawiony poniżej. Zastanów się, co dokładnie dzieje się w tych bloczkach.

1

64

Nie jest to rozwiązanie zgodne z rzeczywistym zachowaniem piłki, ale powoduje, że gra jest ciekawsza, a przecież właśnie o to nam chodzi.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Zauważ, że po ustawieniu kierunku jest dodany bloczek, który przesuwa piłkę o 10 kroków – zapobiega to błędowi polegającemu na tym, że zaraz po pierwszej kolizji piłki z belką jest wykrywana następna, a piłka jakby przykleja się do belki. Przetestuj działanie gry z tym bloczkiem i bez niego.

Bloki W tym podrozdziale stworzysz bloki, które gracz będzie mógł zbijać. Wykorzystaj znany Ci już mechanizm klonowania, aby skrócić sobie pracę. Namaluj kolejnego duszka — prostokątny blok. Pamiętaj, aby środek duszka pokrywał się ze środkiem tworzonego obrazka. Stwórz dwie nowe zmienne pozX oraz

pozY.

Będą one

opisywały pozycję — miejsce pojawienia się kolejnych klonów bloku. Dodaj kod, który po kliknięciu wi zmienną

pozX

na

200

ukryje bloczek, usta-

oraz zmienną

pozY

na

150.

Wstaw nowy skrypt podobny do tego poniżej, który stworzy 10 – 30 klonów Twojego bloku. Jak w poniższym skrypcie można ustawić, ile klonów się pojawi?

R OZ DZ I A Ł 7. A R K A N O I D

65

Dodaj kod, który dla każdego nowo utworzonego klona wyda polecenie pokaż oraz ustawi go w pozycji opisanej przez zmienne

pozX

i

pozY.

Ponadto skrypt powinien ustawiać pozX i nego klona. Zwiększ zmienną

pozX

pozY

następ-

o nieco więcej niż

szerokość Twojego bloku. Zmienną pozY będziesz zwiększać tylko wtedy, gdy zmienna pozX będzie miała za dużą wartość (kiedy kolejny klon będzie wystawał poza ekran). Przeanalizuj kod na rysunku poniżej.

Ustaw liczbę klonów i pozycje, tak aby powstały trzy rzędy.

Kolizja piłki i bloku W skryptach dla bloczka dodaj pętlę zawsze poniżej kodu ustawiającego pozycję klona. W pętli sprawdzaj kolizję klona z piłką. Odegraj wybrany dźwięk oraz usuń tego klona, jeśli kolizja zostanie wykryta. W skryptach dla piłki dodaj sprawdzanie kolizji piłki z blokiem. Zmień kierunek lotu piłki na przeciwny, jeśli kolizja zostanie wykryta.

66

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Zwycięstwo i przegrana Pora udoskonalić Twoją grę. Dodaj do swojego programu liczniki punktów i życia. Zwiększaj liczbę punktów po zbiciu każdego bloczka. Zmniejszaj liczbę żyć za każdym razem, kiedy piłka spadnie poniżej wysokości, na której porusza się paletka. Pamiętaj, aby po odjęciu życia przenieść piłkę na początkową pozycję (x = 0, y = 0) i poczekać chwilę przed wznowieniem gry. Wykorzystaj możliwość zmiany tła, by wyświetlić plansze informujące o zwycięstwie lub przegranej.

Zadanie 1.: Nowe poziomy Możesz dodać różne poziomy, w których zmieni się np. prędkość lotu piłki. Zadanie 2.: Nowe bonusy Po zbiciu części bloków mogą pojawiać się spadające bonusy, które np. zwalniają ruch piłki. Po zbiciu bloku losuj liczbę z określonego zakresu. Jeżeli będzie większa od wybranego progu, w miejscu zderzenia może pojawić się bonus. Zadanie 3.: Nowe przeszkody Spróbuj dodać na planszy przeszkody, które utrudnią trafienie bloczka.

Ten rozdział nauczył Cię: ✔ Ustawiać klony duszka w zadanej pozycji na początku gry. ✔ Wykorzystywać zmienne do sterowania pozycją duszków. ✔ Programować odbicie piłki. R OZ DZ I A Ł 7. A R K A N O I D

67

IAŁ

Twoje własne bloczki

DZ Z O R

8

To specjalny rozdział, w którym zdobędziesz nową umiejętność. Pozwoli ona na wzniesienie Twoich gier na nowy, wyższy poziom. Nadszedł czas, aby nauczyć się tworzenia własnych bloczków!

Po co Ci definiowanie bloczków? Czasami w programach pewne kombinacje bloczków powtarzają się dość często. Są gry, w których gracz może przegrać przez wpadnięcie na przeszkodę, kolizję z jednym z kilku rodzajów przeciwników lub koniec czasu gry. W każdym z takich przypadków należy za pomocą kilku bloczków obsłużyć koniec gry, tzn.: • • • •

Zmienić tło na takie, które wyświetla informację o porażce. Ukryć wszystkie duszki. Wyświetlić wynik. Dodać przycisk Zagraj jeszcze raz.

Wszystkie te elementy musiałyby zostać dodane w kilku miejscach. W efekcie kod gry byłby bardzo długi i trudny w zrozumieniu. Ponadto aby zmienić coś w zakończeniu gry, należałoby to zmienić w kilku miejscach. Czy nie prościej byłoby po prostu dodać jeden specjalny bloczek, np. koniec gry, a to, co dokładnie ma się wtedy zdarzyć, zaprogramować tylko raz w innym miejscu?

To właśnie jest możliwe dzięki definiowaniu bloczków!

68

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Tworzenie własnych bloczków

Aby utworzyć nowy bloczek, należy kliknąć Więcej bloków/ Stwórz blok, tak jak pokazano na rysunku poniżej.

Po kliknięciu Stwórz blok pojawi się specjalne okienko. Aby utworzyć bloczek, należy nadać mu nazwę i kliknąć OK.

Właśnie powstał Twój pierwszy bloczek! Teraz musisz zdefiniować, co będzie robił. W Twoim kodzie pojawi się specjalny bloczek do definiowania innych bloczków. Pod spodem należy dodać skrypt opisujący działanie Twojego bloczka.

Potem można właśnie utworzonego bloczka używać tak samo jak każdego innego.

R OZ DZ I A Ł 8 . T W O J E W Ł A S N E B LO C Z K I

69

Bloczki z parametrami

Nowy bloczek może również przyjmować parametry (wartości przekazywane do bloczka). Aby dodać parametry, w oknie tworzenia bloczka rozwiń sekcję Opcje.

Bloczki mogą przyjmować trzy rodzaje parametrów: • • •

parametr liczbowy — dowolną liczbę, parametr tekstowy — dowolny napis, parametr logiczny — w tym wypadku możesz jako parametr podawać różne warunki, np. naciśnięcie klawisza, dotykanie wybranego koloru czy porównanie liczby i wartości zmiennej. Dobrze, jeśli projektując bloczek, wstawiasz dodatkowe napisy (etykiety tekstowe) pomiędzy parametry, aby lepiej opisać jego działanie.

W dalszej części rozdziału na kilku prostych przykładach możesz poćwiczyć tworzenie bloczków.

70

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Tworzenie bloczków, ćwiczenie 1. — baletnica Utwórz nowy projekt, usuń kotka i dodaj nowego duszka o nazwie Ballerina. Dla tego duszka utwórz nowy bloczek o nazwie tańcz. Zdefiniuj go tak jak na rysunku poniżej:

Dodaj kod, który użyje bloczka tańcz zaraz po tym, jak zostanie naciśnięta

.

Tworzenie bloczków, ćwiczenie 2. — inwazja baletnic Rozszerz swój program, tak aby łatwo było dodawać nowe baletnice tańczące w różnych miejscach. Stwórz nowy bloczek o nazwie zrób kopię, który przyjmuje dwa parametry liczbowe. W definicji tego bloczka przenieś duszka na pozycję wskazaną przez parametry i nakaż mu sklonować samego siebie.

R OZ DZ I A Ł 8 . T W O J E W Ł A S N E B LO C Z K I

71

Utwórz nowy skrypt, który każdemu nowemu klonowi nakaże: pokazać się, wykonać taniec. Następnie usuń tego klona.

Na koniec zmień główny skrypt programu tak, aby 10 razy wywoływał bloczek zrób kopię z losowymi parametrami. Pomiędzy stworzeniem kolejnych kopii powinien poczekać 1 sekundę.

Przetestuj stworzony program.

Z

ad

anie: Znikające duszki Spróbuj, korzystając z umiejętności nabytych przy tworzeniu tańczących baletnic, napisać grę, która będzie podobna do Znikającego duszka z rozdziału 2., ale pozwoli na pojawianie się wielu duszków jednocześnie. •

• •

72

Rozpocznij nowy projekt, dodaj do niego wybranego duszka. Wybierz takiego, który ma już przygotowaną animację ruchu. Stwórz bloczek podobny do bloczka tańcz, który będzie odpowiedzialny za ruch duszka. Korzystając z bloczka zrób kopię, przygotuj bloczek, który będzie klonował Twojego duszka i umieszczał go w losowym miejscu.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02 Z

ad

anie: Znikające duszki •





ciąg dalszy

Stwórz grę, w której zadaniem gracza jest trafienie w jak najwięcej pojawiających się klonów duszka. Klony mają pojawiać się, wykonywać swój zaprogramowany ruch i znikać. Aby utrudnić grę, możesz zrobić dwa typy duszków, które różnią się wyłącznie wykonywanym ruchem. I tylko w duszki jednego typu należy trafić! Zmodyfikuj grę, tak aby była jak najciekawsza.

Ten rozdział nauczył Cię: ✔ Czemu warto definiować własne bloczki. ✔ Tworzyć bloczki. ✔ Czym są parametry przekazywane do bloczków i jak ich używać. ✔ Używać własnych bloczków w programach. ✔ Upraszczać swoje programy, korzystając z własnych bloczków.

R OZ DZ I A Ł 8 . T W O J E W Ł A S N E B LO C Z K I

73

IAŁ

Inwazja bakterii

DZ Z O R

9

Czas na grę nieco innego typu niż te, które pojawiały się w ostatnich rozdziałach. Tym razem rozprawisz się z setkami nacierających ze wszystkich stron bakterii. Cel — przetrwać jak najdłużej!

Inwazja bakterii — pomysł na grę Gra będzie rozgrywała się w przyszłości, w której miniaturowe roboty są wysyłane, aby wewnątrz organizmu zwalczać bakterie powodujące choroby. Gracz będzie sterować statkiem i starać się przetrwać jak najdłużej podczas inwazji mikrobów. Statek będzie cały czas podążał za kursorem myszy, a po kliknięciu przycisku myszy wystrzeli pocisk w kierunku zgodnym z tym, w którym się porusza.

Podążanie za kursorem Utwórz nowy projekt, usuń kotka, dodaj duszka przedstawiającego rakietę, takiego jak na rysunku poniżej.

74

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02 Spójrz na kod odpowiedzialny za podążanie za kursorem. Jak widzisz, jest on bardzo prosty. Dodaj go do swojego programu i przetestuj jego działanie.

Podążanie za kursorem działa dobrze, ale statek zaczyna się trząść w momencie, kiedy dotrze do kursora. Jest to spowodowane tym, że jeżeli statek jest już w tej samej pozycji co kursor, nie może ustawić się w jego stronę. Aby poradzić sobie z tym problemem, dodaj warunek, by statek podążał za kursorem tylko wtedy, kiedy go nie dotyka.

Przetestuj działanie programu.

Strzelanie Dodaj nowego duszka — pocisk. Możesz wykorzystać ten sam obrazek, który pojawił się w rozdziale 5., „Kosmiczna bitwa”. Dla tego duszka dodaj kod, który po naciśnięciu ukryje pocisk.

R OZ DZ I A Ł 9 . I N WA Z J A B A K T E R I I

75

Poniżej w pętli zawsze stwórz klon pocisku. Klonowanie powinno nastąpić zawsze po naciśnięciu klawisza myszy.

Każdy nowy klon pocisku początkowo ustaw na takiej samej pozycji jak statek i nadaj mu taki sam kierunek. Poniżej dodaj polecenie wykonania ruchu.

Pojawiają się bakterie Dodaj duszka reprezentującego bakterię — może to być koło w dowolnym kolorze. Dla bakterii utwórz kod odpowiedzialny za tworzenie jej klonów w losowych odstępach czasu.

76

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

Nowo pojawiającej się bakterii trzeba przypisać początkową pozycję. Bakteria ma pojawiać się gdziekolwiek na brzegu planszy. Ale jak to zaprogramować? Aby bakteria pojawiła się z prawej strony ekranu, jej pozycję x trzeba ustawić na 235 (prawy brzeg) i wylosować jej pozycję y z zakresu od 165 (dolny brzeg) do 165 (górny brzeg). Podobnie dla wszystkich innych krawędzi, oczywiście zmieniając wartości ustawiane i losowane. Dodaj w kodzie dla bakterii poniższy skrypt. Zastanów się, jak on działa.

Uruchom program i przetestuj jego działanie.

Bakterie nacierają Nadszedł czas, by pozwolić bakteriom na ruch. Poniżej kodu, który ustawia pozycję bakterii, dodaj prosty skrypt nakazujący ruch z prędkością 2 kroków.

R OZ DZ I A Ł 9 . I N WA Z J A B A K T E R I I

77

02

Bakterie już się poruszają, ale wszystkie przesuwają się w prawo — w domyślnym kierunku. Aby to poprawić, przetestuj dwie inne wersje skryptu określającego ich ruch. • Wersja pierwsza:

• Wersja druga:

Zastanów się, czym różni się zachowanie bakterii. Z czego ono wynika? Wybierz kod ruchu, który według Ciebie sprawi, że gra będzie ciekawsza.

Bakterie znikają Dodaj kod, który zapewni, że trafione pociskiem bakterie znikną. Zastanów się, w którym miejscu należy wstawić poniższy skrypt.

Zadbaj również o to, aby bakterie, które wyjdą poza planszę, były usuwane. Do tego celu zdefiniuj bloczek:

Następnie dodaj poniższą definicję. Stworzony przez Ciebie bloczek będzie usuwał klona w sytuacji, kiedy jego pozycja x jest oddalona od środka o więcej niż 235 lub pozycja y jest oddalona od środka o więcej niż 165. Zauważ, że bez użycia wartości bezwzględnej należałoby zastosować cztery warunki 1.

1

Wartość bezwzględna liczby to odległość tej liczby od zera na osi liczbowej. Na przykład wartość bezwzględna z 5 wynosi 5, wartość bezwzględna z 7 wynosi 7.

78

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Użyj właśnie stworzonego bloczka w pętli, w której definiujesz zachowanie bakterii. Skopiuj bloczek do kodu dla pocisku i zmień jego zachowanie, tak aby pocisk również znikał po dotarciu do krawędzi.

Z

ad

anie: Nowe elementy w grze Twoja gra już działa, ale warto ją rozbudować, aby stała się jeszcze ciekawsza. Poniżej kilka zadań do wykonania, dzięki którym Twoja gra stanie się bardziej grywalna. • • •

Dodaj dwa nowe typy bakterii. Mogą się one różnić np. szybkością ruchu, ilością życia, zasadami ruchu itd. Dodaj licznik punktów i żyć. Dodatkowo: Spróbuj wymyślić inne rodzaje broni, jakie mogłyby być dostępne dla rakiety. Postaraj się je dodać do gry.

Ten rozdział nauczył Cię: ✔ Wykorzystywać mysz do sterowania w grze. ✔ Używać instrukcji Kontrola/jeżeli oraz Wyrażenia/losuj do losowego wybrania jednej z opcji w programie. ✔ Lepiej rozumieć, jak działa pętla zawsze. ✔ Pobierać pozycję i kierunek wybranego duszka.

R OZ DZ I A Ł 9 . I N WA Z J A B A K T E R I I

79

Rysowanie jest proste

IAŁ

DZ Z O R

10 W tym rozdziale dowiesz się, jak w prosty sposób można nauczyć komputer rysować różne, nawet bardzo skomplikowane figury.

Kwadrat Aby rozpocząć rysowanie, należy użyć narzędzia pisak. Pozwala ono na rysowanie śladu pozostawionego przez duszka. Wypróbuj jego działanie i narysuj kwadrat. Z działu Pisak wybierz bloczek przyłóż pisak. Następnie użyj bloczka Ruch/obróć o... stopni, ustaw obrót na

90

stopni. Dodaj też polecenie przesunięcia

o 100 kroków. Zamknij napisany skrypt w pętli powtórz, tak aby został wykonany cztery razy. U góry doczep bloczek Zdarzenia/kiedy kliknięto

.

Spróbuj zmienić swój program, tak aby rysował prostokąt (taki o różnej długości boków). Jakie bloczki trzeba dodać? Co należy zmienić?

80

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Jak porusza się duszek?

Zauważ, że duszek zaczyna rysować z miejsca, w którym znajduje się na ekranie. Scratch nie pozwala duszkowi wyjść poza ekran. Jeżeli Twój skrypt będzie kierował duszka poza ekran, Scratch spowoduje, że duszek będzie nadal widoczny, co w rezultacie zniekształci rysowaną figurę. Aby figury powstawały bez zniekształceń, zawsze ustawiaj duszka tak, by podczas rysowania nie wyszedł poza krawędź ekranu.

Wykorzystaj napisany w poprzednim rozdziale skrypt i przetestuj opisane zachowanie. Sprawdź, czy narysowana figura będzie taka sama, jeżeli umieścisz duszka w różnych miejscach.

Jak narysować kwiatek? Poniżej znajdziesz przepis (algorytm) umożliwiający narysowanie figury przypominającej kwiatek. Utwórz nowy projekt. Dodaj do swojego projektu poniższy skrypt.

Co zrobić, żeby dorysować pozostałe płatki? Spróbuj poprawić swój kod tak, aby rysował cały kwiatek. Zastanów się, co trzeba zrobić, by dorysować środek kwiatka. Co zmienić, aby narysować taki sam kwiatek, jednak o wiele mniejszy?

R OZ DZ I A Ł 1 0 . R Y S O WA N I E J E S T P R O S T E

81

Wiele kwadratów Korzystając z programu rysującego kwadrat, spróbuj narysować taką figurę:

Podpowiedzi: Ta figura to tak naprawdę wiele kwadratów, narysowanych jeden na drugim, przy czym każdy kwadrat jest nieznacznie obrócony. Wstaw cały skrypt rysujący kwadrat wewnątrz pętli Kontrola/powtórz. Po skrypcie dodaj bloczek obracający duszka o zadany kąt. Kąt, o jaki duszek zmienia pozycję, powinien wynosić 4

stopnie.

Aby utworzyć całą figurę, duszek musi wykonać pełny obrót o

360

stopni. Oblicz, ile razy musi się obrócić, sko-

ro jednorazowo obraca się o 4 stopnie.

82

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02

Kolorowe kółko Zanim zaczniesz rysować, zwiększ grubość pisaka, używając bloczka Pisak/zmień rozmiar pisaka o.

Z działu Ruch wybierz przesuń o… kroków, wpisz 2, oraz obróć o…. stopni i wpisz 1. Z działu Pisak wybierz bloczek zmień kolor pisaka o 1. Zamknij cały stworzony kod w pętli powtórz… razy. Ustaw liczbę powtórzeń na 360. Na górze dołącz bloczek przyłóż pisak. Jeszcze wyżej dołącz bloczek Zdarzenia/kiedy kliknięto .

Zastanów się, jak narysować półkole.

Zabawa półkolami Korzystając z tego, czego nauczyłeś się w poprzednim rozdziale, spróbuj samodzielnie narysować taką figurę jak na poniższym rysunku.

R OZ DZ I A Ł 1 0 . R Y S O WA N I E J E S T P R O S T E

83

Podpowiedzi: Zanim rozpoczniesz, ustaw duszka w pozycji x:

150,

y: 0.

Najpierw napisz skrypt rysujący duże półkole, następnie dopisz skrypt rysujący małe półkole. Nie zapomnij o ustawieniu kierunku, w jakim ma poruszać się duszek. Udało się? Teraz spróbuj narysować drugą część figury.

W labiryncie W tej sekcji spróbujesz samodzielnie narysować labirynt. Stwórz nowy projekt. Z biblioteki wybierz duszka, który najbardziej Ci się podoba, usuń kotka. Stwórz zmienną o nazwie n. Dodaj bloczek Ruch/przesuń o… kroków. Duszek powinien przesuwać się o

n

kroków — o tyle, ile wynosi

aktualna liczba zapisana w zmiennej n. Poniżej dodaj bloczek Ruch/obróć o… stopni. Ustaw obrót o

90

stopni.

Po każdym obrocie zmienna n powinna zostać zwiększona o 5. Zamknij kod w pętli powtarzaj aż. Pętla powinna działać do momentu, aż duszek dotknie krawędzi. Przed pętlą dodaj bloczek Pisak/przyłóż pisak oraz wybierz kolor pisaka.

84

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

02 U samej góry dołącz bloczek Zdarzenia/kiedy kliknięto .

N-kąt foremny Ostatnia figura, którą stworzysz, to n-kąt foremny. Liczba jej boków nie będzie podana na stałe w programie — będzie można ją modyfikować za pomocą odpowiedniej zmiennej. Utwórz nowy projekt. Usuń kotka i wybierz z biblioteki dowolnego duszka. Dodaj nową zmienną o nazwie bok. W polu gry pojawiło się małe okienko z nazwą zmiennej i jej wartością. Jego wygląd możesz zmieniać poprzez dwukrotne kliknięcie. Spraw, aby pojawił się suwak, który pozwoli na zmianę wartości zmiennej, taki jak na rysunku poniżej.

Kliknij suwak PPM. Wybierz opcję ustaw min i max suwaka. Pojawi się okienko, w którym możesz ustawić minimalną i maksymalną wartość zmiennej. Ustaw min = 3,

max =

20.

R OZ DZ I A Ł 1 0 . R Y S O WA N I E J E S T P R O S T E

85

Korzystając z bloczków umieszczonych w poniższej rozsypance, stwórz skrypt, który będzie rysował wielokąt o liczbie boków określonej przez zmienną bok.

Uruchom swój program i przetestuj jego działanie dla różnej liczby boków. Do jakiej figury stają się podobne wielokąty, jeżeli liczba ich boków rośnie?

Zadanie 1.: Zabawa Zmodyfikuj programy, które napisałeś w tym rozdziale, i przetestuj działanie wszystkich bloczków, jakie znajdziesz w dziale Pisak. W szczególności skup się na poleceniach zmieniających kolor, odcień i rozmiar pisaka. Zadanie 2.: Wyzwanie Postaraj się, używając co najwyżej dziesięciu bloczków, narysować jak najbardziej skomplikowaną figurę.

Ten rozdział nauczył Cię: ✔ ✔ ✔ ✔

86

Rysować przy użyciu bloczków z działu Pisak. Tworzyć programy, które potrafią narysować proste rysunki. Używać nowych możliwości operowania zmiennymi. Własności wybranych figur geometrycznych.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

ŚĆ

CZĘ

03

ć y z r wo rę t g s ą k n Ja o z r a m y w

S C R AT C H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

87

IAŁ

Platformówka

DZ Z O R

11

W tym rozdziale poznasz jeden ze sposobów rozwiązywania problemów programistycznych. Zaczniesz od stworzenia prostego działającego rozwiązania, które będzie w kolejnych krokach ulepszane. Dowiesz się też, jak zaprogramować skok oraz jak zbudować planszę składającą się z kilku ekranów.

Metoda działania

W tym rozdziale przećwiczysz metodę rozwiązywania problemów programistycznych polegającą na rozpoczęciu od prostego rozwiązania i wprowadzaniu kolejnych poprawek, dopóki nie uzyskasz satysfakcjonującego rezultatu. Poniżej możesz zobaczyć prosty schemat rozwiązywania problemów pojawiających się podczas tworzenia programów komputerowych.

88

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Skok — wersja najprostsza Podstawą działania instrukcji skoku będzie zmienna prędkość Y, określająca, z jaką prędkością duszek będzie wznosił się lub spadał w każdym kolejnym momencie skoku. Prędkość ta będzie się zmieniała w trakcie skoku. Początkowo prędkość Y będzie ustawiona na 15 i o tyle kroków w górę przesunie się duszek. Co jeden obieg pętli zmienna prędkość Y będzie zmniejszana o 1 — duszek będzie wznosił się coraz wolniej, aż wreszcie zmienna prędkość Y zacznie mieć wartości ujemne — duszek zacznie spadać. Spadanie zakończy się, jeżeli duszek dotknie krawędzi. Wtedy zmienna prędkość Y zostanie ustawiona na 0. Utwórz nowy projekt. Wybierz dowolnego duszka jako bohatera, usuń kotka. Stwórz zmienną

prędkość Y.

Dodaj poniższy kod. Zastanów się, jak działa.

Zaobserwuj, co się dzieje po uruchomieniu. Jakie są najważniejsze problemy?

Skok — poprawiony warunek wykonania skoku W poprzedniej wersji skoku największym problemem wydaje się to, że duszek może wykonać skok nawet wtedy, kiedy nie dotyka podłoża.

R OZ DZ I A Ł 1 1 . P L AT F O R M Ó W K A

89

Czym jest spowodowany błąd? Jak go naprawić? Zmień warunek, pod jakim zwiększasz zmienną prędkość Y. Oprócz tego, że musi zostać wciśnięty klawisz strzałka w górę, aby wyskoczyć, nasz duszek będzie musiał dotykać krawędzi. Przy okazji możesz dodać warunek, który zeruje zmienną prędkość Y tylko wtedy, kiedy duszek dotyka krawędzi i nie jest wciśnięty klawisz strzałka w górę. Zmień swój kod, tak aby wyglądał następująco:

W tym momencie wydaje się, że nasz kod odpowiedzialny za skok działa już poprawnie. Musisz jednak pamiętać, że w trakcie dalszego rozwijania programu może się okazać, że kod, który wydawał się działać dobrze, w pewnych sytuacjach nie działa tak, jak powinien.

Ruch w bok Dodaj do swojego programu możliwość przesuwania się w prawo i w lewo.

Sprawdź poprawność działania programu. Jakie widzisz błędy? Jak je naprawić? 90

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Ruch w bok — poprawki Podstawowym problemem jest to, że gracz może po prostu wyjść poza ekran. Spróbuj to naprawić najprostszym sposobem, jaki dotychczas stosowałeś — bloczkiem Ruch/jeżeli na brzegu, odbij się. Wewnątrz pętli zawsze dodaj bloczek Ruch/jeżeli na brzegu, odbij się.

Przetestuj działanie programu.

Jakie widzisz błędy? Jak je naprawić? Katastrofa! Zależnie od tego, w którym miejscu w pętli umieścisz bloczek Ruch/jeżeli na brzegu, odbij się, duszek zachowuje się inaczej, ale zawsze zachowuje się dziwnie. Zastanów się, skąd wziął się taki efekt?

Ruch w bok — inne podejście Wycofaj poprzednią zmianę w programie. Zmodyfikuj polecenia ruchu w prawo i w lewo: • ruch w lewo może nastąpić tylko wtedy, gdy spełnione są jednocześnie dwa warunki: jest wciśnięta strzałka w lewo i pozycja x duszka jest większa niż

230,

• ruch w prawo może nastąpić tylko wtedy, gdy spełnione są jednocześnie dwa warunki: jest wciśnięta strzałka w prawo i pozycja x duszka jest mniejsza niż 230.

Przetestuj działanie programu.

Jakie widzisz błędy? Jak je naprawić?

R OZ DZ I A Ł 1 1 . P L AT F O R M Ó W K A

91

Skok — odbicia od platform Obecnie gracz może wykonać skok, kiedy znajduje się przy krawędzi. Oznacza to, że można podskakiwać, nie dotykając podłoża, tylko ścian. Aby wyeliminować ten problem, należy zmienić warunek skoku — skok będzie możliwy tylko wtedy, gdy duszek dotyka wybranego koloru (np. koloru podłoża). W dolnej części tła dorysuj pasek wybranego koloru (najlepiej użyć narzędzia do rysowania prostokątów). Zmień kod odpowiedzialny za skok, tak aby jednym z warunków skoku było dotknięcie wybranego koloru, a nie dotknięcie krawędzi.

Przetestuj działanie programu.

Platformy Pomniejsz swojego duszka. Narysuj na tle platformy, na które gracz będzie mógł wskakiwać.

Przetestuj działanie programu.

Jakie widzisz błędy? Jak je naprawić? 92

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Kolizja ze spodem platformy Obecnie nasz duszek, kiedy podskoczy pod platformą, zamiast uderzyć w nią głową i spaść — może wyskoczyć jeszcze wyżej.

Aby rozwiązać ten problem, dodaj na spodzie platformy pasek trochę innego koloru niż ona sama, wtedy łatwo będziesz mógł stwierdzić, czy duszek dotyka górnej części platformy i może podskoczyć, czy dolnej i powinien zacząć spadać. Dodaj do platform pasek innego koloru — wystarczy, że będzie się nieznacznie różnił odcieniem.

Dodaj do pętli zawsze warunek, który w wypadku kolizji z kolorem dołu platformy ustawi zmienną prędkość jej odwrotność

Z

ad

Y

na

prędkość Y · ( 1)

anie: Twoja gra Masz już gotowy szkielet gry — Twoim zadaniem jest ją dokończyć i uczynić jak najciekawszą. Celem gry może być dotarcie przez bohatera do wyjścia. Wyjście możesz zaznaczyć na tle zupełnie innym kolorem. Stwórz różne poziomy w swojej grze jako różne kostiumy tła. Po tym, jak gracz ukończy jeden poziom, po prostu zmienisz kostium tła na następny.

R OZ DZ I A Ł 1 1 . P L AT F O R M Ó W K A

93

Z

ad

anie: Twoja gra

ciąg dalszy

Oczywiście możesz dodać wiele innych typów podłoża, np.: • • • • •

trampolinę, od której można się odbić wyżej, błoto, od którego nie można się odbić, pułapkę, która zmniejsza liczbę żyć bohatera, pionowe ściany — blokują przejście, i co tylko jeszcze przyjdzie Ci do głowy.

Warto też dodać licznik żyć i poziomów. Postaraj się stworzyć przynajmniej pięć różnych poziomów.

Ten rozdział nauczył Cię: ✔ Rozwiązywać problemy programistyczne poprzez stworzenie prostego rozwiązania i usuwanie pojawiających się problemów. ✔ Za pomocą jednej zmiennej programować realistyczny skok duszka. ✔ Używać zmiennych kostiumów tła do tworzenia różnych poziomów. ✔ Za pomocą łączenia warunków w instrukcji jeżeli eliminować niektóre z pojawiających się błędów. ✔ Przydatnej sztuczki ze sprawdzaniem kolizji z nieznacznie różniącymi się kolorami.

94

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

IAŁ

DZ Z O R

12

03

Zupełnie inna platformówka W poprzednim rozdziale napisałeś prostą platformówkę, która w całości rozgrywała się na jednym ekranie. Poruszał się w niej bohater, a tło pozostawało niezmienne. W tym rozdziale pojawi się inne rozwiązanie: stworzysz platformówkę z przesuwającym się tłem i bohaterem, który cały czas znajduje się na środku ekranu.

Dwa rodzaje zmiennych

Podczas tworzenia zmiennej możesz wybrać, czy będzie ona: • •

dla wszystkich duszków, tylko dla wybranego duszka.

Zmienna dla wszystkich duszków: • •

Może być użyta w każdym miejscu w programie. Ma tylko jedną, taką samą wartość w całym programie.

Zmienna tylko dla jednego duszka: • •

Może być użyta tylko w kodzie duszka, dla którego została utworzona. Dla każdego klona danego duszka może mieć inną wartość.

W tym rozdziale wykorzystasz fakt, że zmienne tylko dla danego duszka mogą mieć różne wartości dla jego poszczególnych klonów.

R OZ DZ I A Ł 1 2 . Z U P E Ł N I E I N N A P L AT F O R M Ó W K A

95

Przesuwające się tło — zasada działania

W grze z tego rozdziału główny bohater cały czas będzie znajdował się na środku ekranu. Będzie mógł się przesuwać tylko w górę i w dół, a jego pozycja X będzie cały czas ustawiona na 0. Takie rozwiązanie było stosowane np. w grze Super Mario Bros. Wrażenie, że bohater się porusza, pojawi się dzięki przesuwaniu wszystkich innych obiektów, jakie znajdują się na planszy.

W programie pojawi się zmienna scroll X zapisująca, jak daleko od początku mapy znajduje się bohater. Ponadto każdy wyświetlany element otoczenia będzie miał swoją zmienną o nazwie poz X opisującą jego odległość od początku mapy. O tym, czy i w jakim miejscu wyświetlać poszczególne elementy gry, będą decydowały proste zasady. Sprawdzanie, czy w ogóle wyświetlać dany obiekt Środek obiektu (poz X) musi być oddalony od środka ekranu (scroll X) o mniej, niż wynosi połowa szerokości ekranu1:

Obliczenie, gdzie wyświetlić obiekt Pozycję x obiektu ustaw tym bardziej w lewo, im bardziej jego poz X jest mniejsza niż scroll X:

1

96

Dwie pionowe kreski || oznaczają wartość bezwzględną, czyli odległość danej liczby od zera na osi liczbowej. |15| = 15, |–15| = 15.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03 Sprawdź, czy powyższe reguły dobrze określą położenie platform na rysunku powyżej. Zmienna scroll X ma wartość 700 kroków. •







Platforma A. Jej pozycja X na całej planszy to 180. |180–700| = |–620| = 620 > 300, czyli platforma nie będzie w ogóle wyświetlana. Platforma B. Jej pozycja X na całej planszy to 675. |675–700| = |–25| = 25 < 300, czyli platforma będzie wyświetlana. Trzeba obliczyć jej pozycję X na ekranie. 675–700 = –25. Na ekranie środek platformy B będzie znajdował się lekko na lewo od środka ekranu. Platforma C. Jej pozycja X na całej planszy to 830. |830–700| = |130| = 130 < 300, czyli platforma będzie wyświetlana. Trzeba obliczyć jej pozycję X na ekranie. 830–700 = 130. Na ekranie środek platformy C będzie znajdował się dość blisko prawej krawędzi ekranu. Platforma D. Jej pozycja X na całej planszy to 1230. |1230–700| = |530| = 530 > 300, czyli platforma nie będzie w ogóle wyświetlana.

Przesuwające się tło Utwórz nowy projekt, usuń kotka, a w jego miejsce dodaj dowolnego duszka, który będzie głównym bohaterem gry. Korzystając z możliwości rysowania duszków, narysuj dwukolorową platformę.

Stwórz zmienną

scroll X

— ma to być zmienna Dla

wszystkich duszków. Dla platformy stwórz zmienną poz

X

— ma to być zmien-

na Tylko dla tego duszka. Dodaj kod dla bohatera, który po kliknięciu

:

• zeruje wartość zmiennej scroll X, • w pętli zawsze sprawdza, czy jest naciśnięta strzałka w prawo lub w lewo, jeżeli tak, to zmienia scroll X

odpowiednio o

5

lub

5,

• możesz również dodać zmianę kostiumu bohatera na następny, aby animować ruch.

R OZ DZ I A Ł 1 2 . Z U P E Ł N I E I N N A P L AT F O R M Ó W K A

97

Dla platformy zdefiniuj nowy bloczek o nazwie zrób kopię, który przyjmuje dwa parametry liczbowe. Parametry te będą oznaczały odpowiednio pozycję x i y danego obiektu.

W bloku kodu dla każdego klona dodaj pętlę zawsze, w której umieścisz warunek wyświetlania klona i sposób obliczania jego pozycji na ekranie. Należy pamiętać też, aby odpowiednio pokazywać i ukrywać te elementy.

Teraz możesz w bardzo prosty sposób rozmieścić platformy na planszy, wystarczy po naciśnięciu

wy-

wołać kilkakrotnie bloczek zrób kopię z odpowiednimi parametrami.

• Uruchom grę i przetestuj, czy belki pojawiają się w odpowiednich miejscach.

98

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Skok Wykorzystaj wiedzę z poprzedniego rozdziału, aby stworzyć instrukcję skoku. Dodaj zmienną prędkość

X

oraz zasady zmiany jej wartości w zależności od kolizji z wybranymi kolorami. Pamiętaj, że w tej wersji gry duszek może tylko podskakiwać (poruszać się w górę i w dół), jego ruch w prawo i w lewo jest realizowany poprzez przesuwanie tła.

Z

ad

anie: Zbuduj grę Na podstawie przygotowanego szkieletu gry stwórz swoją niesamowitą grę platformową. Dodaj: • • • • •

nowe rodzaje platform (trampoliny, pułapki, …), licznik życia i punktów, różne rodzaje bonusów do zbierania, życia, monety, przeciwników, daleko na końcu planszy dodaj metę — miejsce ukończenia etapu.

Ten rozdział nauczył Cię: ✔ Czym różnią się zmienne Dla wszystkich duszków oraz Tylko dla tego duszka. ✔ Tworzyć przesuwające się tło. ✔ Za pomocą bloczka zrób kopię w łatwy sposób ustawiać dowolną liczbę przeszkód na przesuwającym się tle.

R OZ DZ I A Ł 1 2 . Z U P E Ł N I E I N N A P L AT F O R M Ó W K A

99

IAŁ

Wąż

DZ Z O R

13

Stare gry mają swój urok i sprawdzoną przez lata grywalność. Czas zmierzyć się z jednym z największych przebojów wszech czasów — grą Snake. Ale zanim to zrobimy, musisz poznać jeszcze jedną możliwość, jaką daje Scratch — tworzenie list.

Listy — sposób na wiele danych

Lista to obiekt, który może w środku przechowywać wiele wartości. W przeciwieństwie do zmiennej, która może przechowywać tylko jedną wartość. Po co jednak tworzyć listy przechowujące wiele wartości, skoro można po prostu utworzyć wiele zmiennych? Listy przydają się, kiedy w programie pojawia się wiele zmiennych o podobnym znaczeniu. Przykładowo, aby przechowywać dziesięć najlepszych wyników gracza przy użyciu zmiennych, trzeba by było stworzyć dziesięć zmiennych: wynik najlepszy, wynik drugi, …, wynik dziesiąty. Gdy korzysta się z list, wystarczy stworzyć jedną listę najlepsze wyniki, która będzie przechowywała wszystkie dziesięć wartości. Co więcej, aby operować na tych dziesięciu zmiennych, dla każdej z nich trzeba by było stworzyć osobny skrypt. Ponieważ dane w liście znajdują się pod tą samą nazwą i różnią się tylko numerem, wystarczy napisać jeden skrypt dla wszystkich wartości. Kolejną zaletą list jest to, że mogą przechowywać dowolną liczbę wartości, nie trzeba podczas pisania programu wiedzieć, ile dokładnie wartości będzie przechowywanych. Wadą list jest to, że są nieco trudniejsze w obsłudze niż zmienne.

100

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Tworzenie list

Aby utworzyć listę, należy przejść do zakładki Dane i kliknąć przycisk Stwórz listę.

Pojawi się okienko podobne do tego, które wyświetlało się w przypadku tworzenia zmiennej. Możesz w nim wybrać nazwę listy oraz ustalić, czy będzie to lista dla wszystkich duszków, czy tylko dla danego duszka.

Po stworzeniu listy można dodać do niej różne wartości.

R OZ DZ I A Ł 1 3 . WĄ Ż

1 01

Listy — nowe bloczki

Po utworzeniu listy pojawia się wiele nowych bloczków. Pozwalają one na: •

dodawanie wartości do listy,



usuwanie jednego lub wszystkich elementów z listy,



wstawianie elementu na wybranym miejscu,



zmianę wybranego elementu na inny,



pobranie elementu,



pobranie długości listy,



sprawdzenie, czy lista zawiera wybrany element,



pokazanie listy,



oraz ukrycie listy.

Przykłady użycia tych bloczków oraz zastosowanie list poznasz w tym rozdziale i w następnych.

1 02

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Stemplowanie

Przed rozpoczęciem pisania gry warto również poznać bloczek Pisak/stempluj.

Stemplowanie pozwala odbić rysunek duszka w miejscu, w którym on się aktualnie znajduje. Przypomina to trochę przybijanie pieczątki, stąd nazwa: stemplowanie.

Ruch węża W tej grze nasz główny bohater będzie poruszał się trochę inaczej niż w poprzednich grach. Główna postać będzie się zmieniać w trakcie rozgrywki. W grze Snake sterujesz wężem, który wydłuża się za każdym razem, kiedy uda mu się trafić na jedzenie. Wąż jest długi, wszystkie jego segmenty poruszają się za głową, po tej samej trasie co ona. Zauważ, że zaprogramowanie węża składającego się z wielu segmentów, które w odpowiedniej kolejności przechodzą przez kolejne pozycje, może być trudne. Aby sobie ułatwić zadanie, skorzystaj z pewnej sztuczki: Gracz będzie sterował tylko głową węża i tylko nią będziesz operować w programie. Pozostałe segmenty to będą wyłącznie odbicia (stemple głowy). Będziesz wyświetlać tyle ostatnich stempli, ile wynosi długość węża. Do usuwania stempli posłuży ogon — duszek w kolorze tła, który porusza się za głową z opóźnieniem odpowiadającym długości węża.

R OZ DZ I A Ł 1 3 . WĄ Ż

1 03

Zostaw ślad Stwórz nowy projekt, przygotuj go do tworzenia gry. Narysuj nowego duszka — segment węża. Może to być po prostu kwadrat. Dopasuj jego wielkość na ekranie — sprawdź, jaki ma rozmiar, i zapamiętaj tę informację.

Dla utworzonego duszka napisz skrypt, który po kliknięciu flagi wyczyści ekran i ustawi duszka w pozycji x = 0, y = 0.

Poniżej dodaj pętlę zawsze, w której wykonasz stemplowanie, zaczekasz 0.1

s oraz przesuniesz swojego duszka

o nieco więcej, niż wynosi jego szerokość (w pokazanym przypadku wielkość kwadratu to 18 na 18 pikseli, więc przesunięcie ma wynosić 20 kroków).

Dodaj do swojego programu cztery krótkie skrypty, które w odpowiedzi na naciśnięcie klawiszy strzałek ustawią odpowiedni kierunek ruchu.

Przetestuj działanie programu.

104

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Popraw ruch Zauważ, że w programie jest możliwa natychmiastowa zmiana kierunku ruchu o 180 stopni. Przykładowo, jeżeli wąż porusza się w prawo, a gracz wciśnie strzałkę w lewo, to wąż zacznie przemieszczać się w lewo, po swoich śladach. Zmień wszystkie cztery skrypty odpowiadające za ruch węża tak, aby zmiana kierunku nie była możliwa, jeżeli wąż porusza się w kierunku przeciwnym.

Przetestuj działanie programu.

Skracanie węża Aby wąż nie mógł się rozwijać w nieskończoność, potrzebny jest ogon, który przechodzi po trasie, po jakiej poruszała się głowa, i zamalowuje niepotrzebne już, narysowane wcześniej segmenty. Do zapisywania poprzednich pozycji głowy, po których teraz będzie poruszał się ogon, idealnie nadają się listy. Stwórz dwie nowe listy o nazwie lista x oraz lista y. Będą one zapisywały współrzędne kolejnych kroków głowy. Na początku gry (po kliknięciu

) usuń wszystkie

elementy z obydwu list.

Przed stemplowaniem do listy x dodaj pozycję x głowy, a do listy y pozycję y.

R OZ DZ I A Ł 1 3 . WĄ Ż

105

Po przesunięciu głowy nadaj komunikat wymaż.

Stwórz nowego duszka — ogon węża. Powinien być tych samych rozmiarów co segment węża, ale w kolorze tła (np. białym). Aby ułatwić sobie zadanie, zduplikuj duszka głowa i zmień jego kolor na biały. Dla ogona przygotuj skrypt, który po otrzymaniu komunikatu wymaż przeniesie go na miejsce wskazywane przez pierwsze elementy obu list, wykona stempel oraz usunie pierwszą pozycję z obu list.

Uruchom program i zaobserwuj, co się zmieniło. Teraz poruszasz się tylko głową węża, wszystkie inne segmenty są od razu wymazywane przez ogon. Możesz w prosty sposób sprawić, aby pojawiły się kolejne segmenty węża. Wystarczy dodać warunek, który uruchamia wymazywanie tylko wtedy, gdy długość węża (liczba elementów w dowolnej z tablic) jest większa od jakiejś wartości.

Uruchom i przetestuj program.

106

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Karmienie węża Ostatnim kluczowym elementem będzie dodanie możliwości zjadania jedzenia przez węża. Po zjedzeniu każdego kawałka wąż będzie się wydłużał. Utwórz nowego duszka — wybierz dowolny owoc z biblioteki duszków. Samodzielnie utwórz skrypt, który po rozpoczęciu gry ustawi owoc w dowolnym miejscu na planszy. Dodaj zmienną długość węża, ustaw jej początkową wartość i wstaw ją do kodu wymazującego zamiast wartości liczbowej. W kodzie dla głowy w pętli zawsze dodaj warunek, który sprawdzi, czy głowa wchodzi w kolizję z owocem. Jeśli tak, to zwiększ zmienną długość węża o

1

oraz

nadaj komunikat zjadłem.

Napisz skrypt, który po otrzymaniu komunikatu zjadłem, ustawi owoc w nowym, losowym miejscu.

Z

ad

anie: Dalszy rozwój •

• • •

Dodaj warunek, który sprawi, że gra się skończy, jeżeli głowa dotknie innego fragmentu węża lub krawędzi ekranu. Zadbaj o to, aby owoce nie mogły pojawić się na wężu. Stwórz drugiego węża, poruszanego klawiszami WSAD. Spróbuj zrobić grę dwuosobową. Uzupełnij grę o inne typy jedzenia, które na przykład przyspieszają ruch węża lub bardziej go wydłużają.

R OZ DZ I A Ł 1 3 . WĄ Ż

1 07

Ten rozdział nauczył Cię: ✔ ✔ ✔ ✔ ✔

108

Czym są listy. Kiedy warto wstawić do programu listę. Tworzyć listę i korzystać z niej w programie. Czym jest stemplowanie. Przydatnej sztuczki podczas pisania gier typu wąż, polegającej na wymazywaniu wybranych elementów z ekranu.

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

IAŁ

03

Turniej łuczniczy

DZ Z O R

14

Czy strzelanie z łuku jest proste? A napisanie o tym gry? W tym rozdziale przyjdzie Ci zmierzyć się ze skomplikowanymi wzorami matematycznymi, obsługiwaniem kilku list oraz tworzeniem własnych bloczków. Ale nie martw się! Wszystko się dobrze skończy.

Założenia gry Twoim zadaniem będzie stworzenie gry, która pozwoli graczowi wcielić się w łucznika biorącego udział w turnieju. Gracz będzie mógł wykonać kilka strzałów, za każdy z nich dostanie odpowiednią liczbę punktów w zależności od tego, jak daleko od środka tarczy trafi. Aby gra nie była zbyt prosta, wprowadzisz pewne utrudnienia w poruszaniu łukiem (celownikiem).

Obliczanie odległości pomiędzy punktami

W łucznictwie aby obliczyć liczbę punktów zdobytych przez zawodnika, trzeba wiedzieć, jak daleko od środka tarczy trafił. Zastanów się, jakie są dostępne informacje, na podstawie których możesz wyliczyć odległość od celu: • •

współrzędne środka tarczy, współrzędne miejsca trafienia.

R OZ DZ I A Ł 1 4 . T U R N I E J Ł U C Z N I C Z Y

109

Zauważ, że można na tarczy narysować trójkąt prostokątny, tak jak na rysunku poniżej. Jego najdłuższy bok to szukana odległość, a dwie przyprostokątne to różnice pomiędzy wartością współrzędnej x oraz y miejsca trafienia i środka tarczy.

Teraz wystarczy skorzystać z twierdzenia Pitagorasa. Spójrz na rysunek poniżej. Twierdzenie Pitagorasa mówi, że jeżeli narysujesz kwadraty o bokach takiej samej długości jak boki trójkąta prostokątnego, to pole największego kwadratu (czerwonego) będzie takie samo jak suma pól pozostałych dwóch (zielonego i niebieskiego).

Ostatecznie otrzymujemy:

Przedstawiony wzór nie służy tylko do wyznaczenia odległości od celu. Można go użyć do obliczenia odległości pomiędzy dwoma dowolnymi punktami1.

1

110

Ten wzór działa dla punktów na płaszczyźnie. Jeżeli chcesz obliczyć odległość pomiędzy punktami w trzech wymiarach, należy uwzględnić jeszcze współrzędną głębokości (z). Otrzymujemy wzór:

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Przygotowania Utwórz nowy projekt, usuń domyślnego duszka. Dodaj trzy nowe duszki: • tarczę łuczniczą, • celownik, • trafienie (małe jednokolorowe kółko).

Wybierz obrazek tła. Ustaw odpowiedni rozmiar tarczy. Dodaj skrypt, który po rozpoczęciu programu ustawi tarczę w pozycji x = 0, y = 0. Stwórz skrypt, który po rozpoczęciu programu ukryje duszka trafienie.

Proste sterowanie celownikiem W pierwszej wersji gry gracz będzie miał możliwość sterowania celownikiem, wykonania strzału, a program obliczy liczbę punktów. Celownik będzie się poruszał za ruchem myszy. Napisz skrypt dla celownika, tak aby poruszał się w kierunku wskaźnika myszy z wybraną przez Ciebie prędkością — możesz wzorować się na ruchu rakiety z rozdziału 9., „Inwazja bakterii”.

R OZ DZ I A Ł 1 4 . T U R N I E J Ł U C Z N I C Z Y

111

Zmień warunek ruchu przy podążaniu za wskaźnikiem myszy na taki jak na rysunku poniżej. Zastanów się, jaka jest różnica w zachowaniu celownika i z czego ona wynika.

Niestety obecnie celownik obraca się w trakcie ruchu, a ponadto może chować się za tarczą. Aby temu zapobiec, dodaj pod koniec każdej pętli dwa polecenia ustawienia kierunku na 0 stopni oraz przesunięcia na wierzch.

Strzał W kodzie dla tarczy dodaj pętlę, w której po naciśnięciu klawisza myszy zostanie nadany komunikat strzał.

W kodzie dla trafienia utwórz kod, który po otrzymaniu komunikatu strzał ustawi trafienie w takiej samej pozycji, jaką aktualnie ma celownik, przesunie go na wierzch oraz pokaże.

112

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Liczenie punktów Aby policzyć, ile punktów zdobył gracz za dany strzał, trzeba wykonać dwie czynności: • •

policzyć odległość miejsca trafienia od środka tarczy, przeliczyć odległość na punkty.

Odległość można obliczyć, wykorzystując wzór, który pojawił się na początku rozdziału. W Scratchu obliczenia będą wyglądały następująco (zakładając, że piszesz skrypt dla tarczy):

Stwórz zmienną

odległość,

ma to być zmienna tylko dla

duszka reprezentującego tarczę. Dodaj do skryptu działającego po naciśnięciu klawisza linijkę, która obliczy nową wartość zmiennej odległość, używając wcześniej przedstawionego wzoru.

Czas obliczyć liczbę punktów. Zazwyczaj w łucznictwie przyznaje się od dziesięciu punktów za strzał w środek tarczy do jednego punktu za strzał na jej brzegu. Oczywiście za strzał poza tarczę nie ma żadnych punktów. Jak wyznaczyć liczbę punktów zdobytą w danym strzale? Przyjmij, że za każdy strzał gracz dostaje dziesięć punktów minus pewną karę za to, jak daleko od środka tarczy trafił. Kara jest tym większa, im trafienie jest dalej od celu.

Pozostaje problem, jak obliczyć tę karę? Załóżmy, że Twoja tarcza ma promień 70 pikseli. Wtedy każde 7 pikseli to szerokość jednego poziomu punktowania. Trafienie 5 pikseli od środka tarczy dalej jest trafieniem w dziesiątkę, więc kara powinna wynosić 0. Można obliczyć karę jako odległość od środka podzieloną przez szerokość poziomu punktowania. Należy też pamiętać, że kara za

R OZ DZ I A Ł 1 4 . T U R N I E J Ł U C Z N I C Z Y

1 13

odległość to liczba naturalna i dlatego wynik trzeba zaokrąglić w dół, używając bloczka Wyrażenia/podłoga z. Przykład: • • •

tarcza ma promień 70, gracz trafił 53 piksele od środka, szerokość poziomu punktowania = 7.

Ostateczny wzór na punkty to:

Utwórz zmienną

punkty

(dla wszystkich duszków).

Po obliczeniu odległości oblicz wartość zmiennej punkty zgodnie z powyższym wzorem. Cyfra

7

w tym wzorze

to szerokość poziomu punktowania, u Ciebie ta wartość może być inna.

Dodaj warunek, który ustawi punkty na 0, jeżeli odległość od środka tarczy jest większa od promienia tarczy.

Utrudnij sobie strzelanie W dotychczasowej wersji programu oddanie strzału jest bardzo proste, wystarczy najechać kursorem na wybrany punkt, poczekać, aż celownik „dogoni” kursor myszy, i wystrzelić. Aby utrudnić i jednocześnie uatrakcyjnić grę, dodaj dwie komplikacje: • 114

celownik będzie delikatnie drgał,

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ



ruch celownika będzie zależał nie tylko od aktualnej pozycji wskaźnika myszy, ale także od tego, jak gwałtownie ruszałeś nim wcześniej.

Drgania celownika Dodanie drgania celownika jest proste, wystarczy po wykonaniu ruchu zmienić jego pozycję x oraz y o małą, losową wartość. Do skryptu odpowiedzialnego za przesuwanie celownika dodaj poniższe linijki.

Pozostało Ci dodanie kodu, który sprawi, że kursor nie będzie przemieszczał się ze stałą prędkością. Zamiast tego jego prędkość będzie zależała od średniej odległości kursora od celownika w pięciu ostatnich krokach.

Obliczanie różnicy pozycji i zapisywanie jej w liście Utwórz zmienną o nazwie

różnica pozycji.

Dodaj do skryptu dla celownika kod, który w każdym obiegu pętli obliczy odległość pomiędzy pozycją celownika a pozycją myszy. Ustaw wartość zmiennej różnica pozycji

na obliczoną wartość. Użyj poznanego w tym

rozdziale wzoru. Utwórz listę o dowolnej nazwie. Dodaj do programu poniższy kod. Zapisze on zmienną różnica pozycji

na utworzonej liście oraz zapewni, że

w tablicy zawsze będzie znajdowało się pięć ostatnio dodanych wyników.

R OZ DZ I A Ł 1 4 . T U R N I E J Ł U C Z N I C Z Y

115

03

Obliczanie średniej Aby wyliczyć, o ile przesunie się celownik, trzeba obliczyć średnią ze wszystkich wartości w liście. Całość kodu z tego podrozdziału zacznij tworzyć w osobnym miejscu, oczywiście w skryptach dla celownika. Utwórz zmienną

suma

i ustaw jej wartość na 0.

Utwórz zmienną

numer elementu

Utwórz zmienną

ruch.

i ustaw jej wartość na 1.

Dodaj poniższą pętlę. Zastanów się, jak ona działa i co jest jej wynikiem.

Podziel wartość otrzymaną w zmiennej suma przez liczbę elementów listy. Zapisz wynik do zmiennej ruch.

Przesuń celownik o wyznaczoną wartość.

Przetestuj działanie programu.

116

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03 Z

ad

anie: Rozbudowa Udało Ci się skończyć podstawową wersję gry, ale wciąż pozostaje wiele do zrobienia. Rozbuduj grę tak, aby była jak najciekawsza. Poniżej kilka propozycji: • • • •

Ogranicz liczbę strzałów oddanych przez gracza do 3. Po oddaniu strzału przenieś celownik w losowe miejsce na planszy i zablokuj możliwość ruchu na kilka sekund. Dodaj licznik czasu, który ustawi limit 40 sekund na każdy strzał. Dodaj licznik punktów, który zsumuje zdobyte punkty.

Ten rozdział nauczył Cię: ✔ ✔ ✔ ✔ ✔

Twierdzenia Pitagorasa. Obliczać odległość pomiędzy dwoma punktami. Działania bloczka podłoga, który zaokrągla liczby w dół. Obliczać średnią wartości na liście. Przesuwać duszki na wierzch, aby nie kryły się za innymi.

R OZ DZ I A Ł 1 4 . T U R N I E J Ł U C Z N I C Z Y

1 17

IAŁ

Niech zabrzmią działa

DZ Z O R

15 Nadszedł czas, aby poznać tajniki artylerii. Dowiesz się, jak wycelować działa, aby trafić w cel. Uzbrojony w tę wiedzę stworzysz kolejną grę, która zadziwi wszystkich Twoich znajomych.

Jak leci kula armatnia?

W tym rozdziale stworzysz grę, w której zadaniem gracza jest odpowiednie ustawienie armaty, tak aby trafić w wyznaczony cel. Jednak zanim to zrobisz, musisz zrozumieć, na czym polega ruch kuli armatniej. Zastanów się najpierw, jak opisać ruch obiektów. Bloczek

oznacza, że pozycja duszka będzie się co jedno wykonanie pętli zwiększała o 10 pikseli. Czyli jego prędkość będzie wynosiła 10 pikseli na jedno wykonanie pętli. Przyjrzyj się poniższemu rysunkowi. Pozycja x kuli zmienia się tak samo jak pozycja x pocisku. Pozycja y kuli zmienia się tak samo jak pozycja y podrzuconej w górę piłki.

118

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03 Okazuje się, że ruch kuli armatniej jest złożeniem dwóch ruchów, które już znasz. •



W poziomie (współrzędna x) kula armatnia przemieszcza się tak samo jak pocisk. Jej prędkość x jest stała — nie zmienia się w trakcie ruchu. Jej pozycja x zwiększa się (lub zmniejsza) o stałą wartość (np. 10 kroków) w każdej kolejnej chwili. W pionie (współrzędna y) kula armatnia przemieszcza się tak samo jak podskakujący człowiek lub podrzucona piłeczka. Jej prędkość y maleje w trakcie ruchu. Początkowo prędkość jest duża, ale w każdej kolejnej chwili zmniejsza się, aż w pewnym momencie jest mniejsza niż 0, wtedy zaczyna się ruch w dół. Pozycja y zwiększa się (lub zmniejsza) o tyle, ile wynosi prędkość y w każdej kolejnej chwili.

Przygotowania Stwórz nowy projekt. Z projektu usuń kotka, zamiast niego narysuj nowego duszka — małe koło, czyli kulę armatnią. Utwórz cztery zmienne: •

pozycja x,



pozycja y,



prędkość x,



prędkość y.

Za pomocą tych zmiennych będziesz obliczał kolejne pozycje lecącej kuli. Pamiętaj, aby były to zmienne tylko dla tego duszka — później w programie będziesz używał klonów kuli, a każdy z klonów musi mieć własną pozycję i prędkość. Napisz skrypt, który zaraz po uruchomieniu gry ustawi zmiennym wartości: •

pozycja x

=

150,



pozycja y

=

120,



prędkość x

= 4,



prędkość y

=

20.

R OZ DZ I A Ł 1 5 . N I E C H Z A B R Z M I Ą DZ I A Ł A

119

Do skryptu dodaj polecenie, które ustawi kulę armatnią w miejscu wskazanym przez zmienne

pozycja x

oraz

pozycja y.

Ruch kuli Jak wiesz ze wcześniejszego podrozdziału, ruch kuli armatniej jest złożeniem dwóch ruchów. Oczywiście będzie to miało również odzwierciedlenie w naszym programie. Zarówno ruch w poziomie, jak i ruch w pionie będziesz obliczać poprzez dodanie aktualnej prędkości do pozycji1. ŶŽǁĂ ƉŽnjLJĐũĂ с ƐƚĂƌĂ ƉŽnjLJĐũĂ н ƉƌħĚŬŽƑđ Ruch w poziomie (współrzędne x) Dodaj do skryptu dla kuli poniższy kod. Uruchom program i zaobserwuj zachowanie kuli.

1

Dodawanie do siebie prędkości i pozycji nie jest poprawne z punktu widzenia fizyki. Nową pozycję, po upływie danego czasu, powinno się obliczać jako sumę starej pozycji oraz wynik mnożenia czasu i średniej prędkości ruchu w tym czasie. W grze przyjmujemy, że czas pomiędzy wyświetleniem kolejnych klatek jest stały i wynosi 1, więc można sobie uprościć obliczenia.

120

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03

Ruch w pionie (współrzędne y) Zmień poprzedni kod, tak aby wyglądał jak ten poniżej. Czym różnią się te dwa skrypty? Uruchom program i zaobserwuj zachowanie kuli.

Ruch kuli Połącz poprzednie fragmenty w jeden kod, tak jak na rysunku poniżej. Uruchom program i zaobserwuj zachowanie kuli.

Sterowanie armatą Skoro wiesz już, w jaki sposób zaprogramować lot kuli, możesz zacząć tworzenie skryptu, który pozwoli graczowi sterować armatą. Utwórz nowego duszka — armatę. Na razie może to być po prostu narysowany przez Ciebie prostokąt (o szerokości trochę większej niż średnica kuli). Dodaj zmienną o nazwie

prędkość początkowa

dla wszyst-

kich duszków.

R OZ DZ I A Ł 1 5 . N I E C H Z A B R Z M I Ą DZ I A Ł A

121

Napisz skrypt, który po rozpoczęciu gry ustawi armatę w takiej samej pozycji jak pozycja kuli (x =

180,

y=

150).

Dodaj do powyższego skryptu polecenie, które po rozpoczęciu gry ustawi zmienną

prędkość początkowa

na 0.

Dodaj możliwość sterowania nachyleniem armaty oraz prędkością początkową kuli, tak jak na rysunku poniżej.

Wstaw kod, który pozwoli na oddanie wystrzału. Ponieważ nie da się strzelać z armaty „seriami”, dodaj opóźnienie (komenda czekaj 1 s).

Niech zabrzmią działa W tej sekcji dodaj obsługę wystrzału z działa. Po odebraniu komunikatu strzał utwórz klon kuli. Dodaj do kodu dla kuli kod tworzący jej klony po otrzymaniu komunikatu strzał.

122

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

03 Kod odpowiedzialny za ruch kuli przenieś, tak aby był wywoływany nie od razu po uruchomieniu gry, ale po utworzeniu klona. Przed ruchem ustaw pozycję klona kuli na identyczną z pozycją armaty.

Wewnątrz pętli odpowiedzialnej za ruch dodaj instrukcję, która usunie klon kuli, jeżeli dotknie on krawędzi.

Dodaj do skryptu, który ustawia wartości zmiennych na początku programu, polecenie ukryj. W ten sposób oryginalna kula będzie niewidoczna, a po wystrzale będą pojawiały się tylko jej kopie. Uruchom program i przetestuj go.

Jak pewnie zauważyłeś, udało się już wystrzelić kulę, ale jej zachowanie nadal nie ma nic wspólnego z pozycją armaty i prędkością wystrzału. W następnym podrozdziale spróbujemy to zmienić.

Parametry wystrzału Zauważ, że w początkowej fazie ruchu kula powinna się poruszać dokładnie w tym samym kierunku, w którym jest ustawiona lufa armaty. Prędkość początkowa kuli składa się z prędkości w osi x oraz prędkości w osi y.

R OZ DZ I A Ł 1 5 . N I E C H Z A B R Z M I Ą DZ I A Ł A

123

Zauważ, że gracz ustawia kąt nachylenia armaty i początkową prędkość. Od kąta nachylenia armaty zależy, jaka część początkowej prędkości będzie przeznaczona na ruch w poziomie (oś x), a jaka na ruch w pionie (oś y). Twoim zadaniem jest przeliczyć kąt nachylenia armaty i początkową prędkość na prędkości w pionie i poziomie. Aby to zrobić, będziesz musiał raz jeszcze sięgnąć do matematyki. Figury podobne to takie figury, które różnią się tylko rozmiarem. Popatrz na rysunek poniżej. Długość boków trójkąta niebieskiego to a = 6, b = 8, c = 10, a dla trójkąta czerwonego to a = 3, b = 4, c = 5. 1

1

1

2

2

2

Policz, który z ułamków będzie większy:

oraz

1 24

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

CZĘŚĆ

Zatem dla danego kąta nachylenia armaty ułamki będą zawsze takie same i będą zależeć tylko od kąta nachylenia armaty. W matematyce te wartości są znane jako sinus oraz cosinus. W przypadku armaty można zapisać:

oraz

Po pomnożeniu obu stron przez prędkość

początkową

otrzymujemy:

Powyższe równania są rozwiązaniem naszego problemu (poszukiwanym wzorem). Wystarczy je teraz zapisać w programie. Aby obliczyć prędkość

x

i

prędkość y

każdej wystrzelonej

kuli, w kodzie dla każdego klona dodaj dwie poniższe linijki:

Uruchom program i przetestuj jego działanie.

Z

ad

anie: Uruchom wyobraźnię Udało Ci się stworzyć najtrudniejszą część gry. Teraz możesz na tej bazie zbudować taką grę, jaką tylko podpowiada Ci wyobraźnia. Wymyśl zasady, warunki zwycięstwa i przegranej. Utwórz przeciwników. Postaraj się dopasować poziom trudności, tak aby gra była jak najciekawsza.

R OZ DZ I A Ł 1 5 . N I E C H Z A B R Z M I Ą DZ I A Ł A

125

03

Ten rozdział nauczył Cię: ✔ Że ruch kuli armatniej (a tak naprawdę każdego rzuconego obiektu) jest złożeniem ruchu w poziomie i pionie. ✔ Programować lot kuli armatniej. ✔ Wykorzystywać zmienne Tylko dla tego duszka, aby sterować wieloma klonami jednocześnie. ✔ Czym są figury podobne i jakie są zależności pomiędzy długościami ich boków. ✔ Czym jest sinus i cosinus oraz jak można je wykorzystać w praktyce.

Do zobaczenia Niestety, to już koniec tej książki! Umiesz już stworzyć wszystkie gry, które opisaliśmy w tej książce. Jednak to nie koniec przygody z programowaniem! Teraz wiesz już, jak działa Scratch i jakie ma możliwości. Jesteś bogaty w wiedzę z dziedziny fizyki, poznałeś teorię matematyczną i zagadnienia arytmetyczne. Scratch nie ma przed Tobą tajemnic. Nadeszła pora na samodzielne działanie. Zaprojektuj całkiem nową grę od początku do końca. Podczas tworzenia staraj się wyeliminować większość błędów, tak by gra stawała się przyjemniejsza. Kto wie, może w przyszłości zostaniesz profesjonalnym programistą, opanujesz inne języki programowania lub nawet stworzysz własny. Wszystko przed Tobą. Powodzenia!

126

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW

Skorowidz A animacja, 52 Arkanoid, 62

B bloczek, 8, 13 Czujniki, 31 dotyka, 35 klawisz… naciśnięty, 40, 41 odpowiedź, 23 stoper, 60 współrzędna, 42 zapytaj i czekaj, 23 zeruj stoper, 60 Dane długość, 102 dodaj, 102 ustaw, 23 ustaw punkty, 29 ustaw życie, 34 usuń, 102, 105 wstaw, 102 zamień element, 102 zmień punkty, 28 zmień życie o, 35 Dźwięk, 13, 35 Kontrola jeżeli… to, 30, 33, 35 kiedy zaczynam jako klon, 39, 42 powtarzaj aż…, 32 powtórz, 14, 31 powtórz… razy, 32 sklonuj, 39, 41 usuń tego klona, 39, 42 zawsze, 17, 26, 31 Pisak przyłóż pisak, 80 stempluj, 103 zmień rozmiar pisaka, 83 Ruch idź do x, y, 26, 29

S KO R O W I DZ

jeżeli na brzegu, odbij się, 18, 91 leć przez, 37 obróć, 19 przesuń, 14 ustaw kierunek, 15, 64 ustaw styl obrotu lewo-prawo, 17 ustaw w stronę, 75 tworzenie, 68, 69 Wygląd następny kostium, 53 pokaż, 27 powiedz, 28 ukryj, 27 Wyrażenia, 31 losuj, 27, 36, 48 z parametrami, 70 Zdarzenia kiedy duszek kliknięty, 28 kiedy klawisz, 19, 33, 57 kiedy kliknięto, 17 kiedy otrzymam…, 46, 48, 50 nadaj, 46 nadaj i czekaj, 46 bonus, 37

D duszek, 13 biblioteka, 13, 32 domyślny, 13 klon, Patrz: klon kostium, 18 tworzenie, 52 obracanie, 47, 48 rysowanie, 62 skrypt, 33 sterowany strzałkami, 19, 32 wielkość, 34

E edytor, 12

1 27

I

R

instrukcja, 28 blokowanie, 50 warunkowa, 30, 31

rysowanie, 80

J język programowania, 7

K klon, 39, 40 zmienna, 95, 96 komunikat, 46, 48, 122 nadawanie, 48 odbieranie, 49 kula armatnia, 118

L licznik punktów, 28, 44, 67 życia, 45, 67 lista, 100 długość, 101, 102 tworzenie, 101

S Scratch, 8 edytor, Patrz: edytor skok, 89, 98 skrypt, 8, 13 dla duszka, 33 dla tła, 48 Snake, 100, 103 stoper, 60 suwak, 85

T tło dodawanie, 14 przesuwające się, 95, 97 twierdzenie Pitagorasa, 110

U układ współrzędnych, 24, 26

W M

wartość bezwzględna, 78, 96

myszy przycisk prawy, Patrz: PPM

Z N narzędzie rysowania, 14

O oś liczbowa, 23

P parametr, 70 pętla, 31, 32 pisak, 80 polecenie, 14 duplikuj, 16 PPM, 13 programu uruchamianie, 14

128

zakładka Stwórz listę, 22, 101 Kostiumy, 18 Skrypty, 14, 18 zmienna, 22, 84, 85 dla wszystkich duszków, 95 dla wybranego duszka, 95 nazwa, 22 tworzenie, 22 wartość, 22 życie, 45

S C R ATC H B E Z TA J E M N I C . P R O G R A M O WA N I E G I E R O D P O D S TAW