Pochwały książki

„Robiący wrażenie podręcznik, pozwalający osiągnąć mistrzostwo w programowaniu w Scratchu i tworzeniu prawdziwie zajmujących gier”.

– Kirkus Reviews

„Mój syn był w stanie ukończyć każdą grę. Przy okazji zdobył wyśmienite umiejętności programistyczne. Ja również doceniłem lekcje charakteru (cierpliwości i wytrwałości, nie mówiąc o wyznaczaniu celów). To wspaniałe efekty uboczne programowania w Scratchu”.

– The Old Schoolhouse Magazine

„To dobrze napisana książka, pełna humoru i żartów, i dobrze wyjaśniająca działanie”.

– I Programmer

„Jestem pod wrażeniem tego, jak wiele narzędzi programowania Scratcha będzie znał czytelnik po przeczytaniu tej książki. Myślę, że nauczyciele i rodzice przyznają jej pięć gwiazdek”.

– Jim Kelly, komputerowy ojciec

„Jeśli szukacie czegoś dla swoich dzieci kochających Minecrafta, które nie próbowały używać Scratcha, to ta książka stanowi dla nich doskonały przewodnik nauki programowania poprzez tworzenie świetnych gier”.

– Mama znająca się na technice

Dla Seymoura Paperta

Żegnaj i dziękuję za wszystkie żółwie.

(29 lutego 1928 – 31 lipca 2016)

Copyright © 2021 by Al Sweigart. Title of English-language original: Scratch 3 Programming Playground. Learn to Program by Making Cool Games, ISBN 978-1-7185-0021-1, published by No Starch Press. Polish-language edition copyright © 2021 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład: Małgorzata Dąbkowska-Kowalik i Witold Sikorski na zlecenie WITKOM Witold Sikorski

Projekt okładki polskiego wydania: INT-MEDIA Dawid Mazur

Wydawca: Wioleta Szczygielska-Dybciak

Redaktor prowadzący: Monika Zabrocka-Kutera

Redaktor: Bożena Hałuszczyńska

Koordynator produkcji: Anna Bączkowska

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN

Monika Lipiec /Woblink

Książka, którą nabyłeś, jest dziełem twórcy i wydawcy. Prosimy, abyś przestrzegał praw, jakie im przysługują. Jej zawartość możesz udostępnić nieodpłatnie osobom bliskim lub osobiście znanym. Ale nie publikuj jej w internecie. Jeśli cytujesz jej fragmenty, nie zmieniaj ich treści i koniecznie zaznacz, czyje to dzieło. A kopiując jej część, rób to jedynie na użytek osobisty.

Szanujmy cudzą własność i prawo.

Więcej na www.legalnakultura.pl

Polska Izba Książki

Copyright © by Wydawnictwo Naukowe PWN SA

Warszawa 2021

ISBN 978-83-01-21988-8

eBook został przygotowany na podstawie wydania papierowego z 2021 r., (wyd. II)

Warszawa 2021

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl; reklama@pwn.pl

www.pwn.pl

O autorze

Al Sweigart jest twórcą oprogramowania, autorem fachowych publikacji i radosnym facetem, który zna właściwe miejsce przedmiotów. Napisał kilka książek dotyczących programowania dla początkujących, w tym Automate the Boring Stuff with Python[1], wydanej przez wydawnictwo No Starch Press. Jego książki są dostępne bezpłatnie na licencji Creative Commons na jego witrynie http://www.inventwithpython.com/.

O recenzencie technicznym

Olivia Rodrigues jest nauczycielką matematyki, informatyki i nauk ścisłych oraz szefową informatyki w prywatnej szkole podstawowej w Anglii. Poza posiadaniem certyfikatu British Computer Society w zakresie nauczania informatyki ma tytuły Google Certified Educator, Microsoft Innovative Educator Expert oraz IDEA Award Teacher Ambassador. Jej pasją jest zachęcanie dzieci do nauki programowania. Jest matką rocznej córeczki Geneviève i żoną Gary’ego.

Spis treści

Podziękowania

Wprowadzenie

Dla kogo przeznaczona jest ta książka

Treść książki

Jak korzystać z tej książki

Zasoby internetowe

Errata i aktualizacje

1. Pierwsze kroki w Scratchu

Uruchamianie Scratcha

Pulpit Scratcha: edytor w trybie offline

Edytor Scratcha i duszki

Edytor rysunków

Działanie z blokami kodu

Dodawanie bloków

Usuwanie bloków

Uruchamianie programów

Pokazywanie innym swoich programów

Uzyskiwanie pomocy

Okno Samouczki

Przycisk Zajrzyj do środka

Podsumowanie

2. Linie tęczy w… przestrzeni

Szkic projektu

A. Utwórz tło z przestrzenią

1. Wyczyść i przygotuj scenę

B. Utwórz trzy odbijające się kropki

2. Namaluj kropkę

3. Dodaj kod do duszka Kropka 1

4. Zduplikuj duszka Kropka 1

C. Narysuj linie tęczy

5. Dodaj kod dla duszka rysującego

Gotowy program

Tryb Turbo

Podsumowanie

Pytania kontrolne

3. W labiryncie

Szkic projektu

A. Spraw, by kot chodził dookoła

1. Dodaj kod ruchu do duszka gracza

2. Zduplikuj kod ruchu dla duszka Kot

B. Utwórz poziomy labiryntu

3. Pobierz rysunki labiryntu

4. Zmień tło

5. Zacznij od pierwszego labiryntu

C. Nie pozwól kotu przechodzić przez ściany

6. Sprawdź, czy kot dotyka ścian

D. Utwórz cel na końcu labiryntu

7. Utwórz duszka Jabłko

8. Wykryj, kiedy gracz dotrze do jabłka

9. Dodaj kod obsługi wysyłania komunikatu do duszka Labirynt

Gotowy program

Wersja 2.0: tryb dla dwóch graczy

Duplikuj duszka Jabłko

Zmodyfikuj kod duszka Jabłko2

Zduplikuj duszka Pomarańczowy kot

Zmodyfikuj kod dla duszka Niebieski kot

Powrót do położenia początkowego

Tryb oszukiwania: przechodzenie przez ściany

Dodaj kod przechodzenia przez ściany do duszka Pomarańczowy kot

Dodaj kod przechodzenia przez ściany do duszka Niebieski kot

Podsumowanie

Pytania kontrolne

4. Trafianie do kosza i grawitacja

Szkic projektu

A. Spraw, by kot skakał i spadał

1. Dodaj kod grawitacji do duszka Kot

2. Dodaj kod poziomu ziemi

3. Dodaj kod skaczącego kota do duszka Kot

B. Spraw, aby kot poruszał się w lewo i w prawo

4. Dodaj kod chodzenia do duszka Kot

C. Utwórz unoszący się w powietrzu kosz

5. Utwórz duszka Kosz

6. Utwórz duszka Hitbox

D. Spraw, by kot strzelał do kosza

7. Utwórz duszka Piłka

8. Dodaj kod do duszka Piłka

9. Wykryj trafienie do kosza

10. Napraw błąd punktacji

Gotowy program

Tryb oszukiwania: zatrzymaj Kosz

Podsumowanie

Pytania kontrolne

5. Ulepszona graBrick Breaker

Szkic projektu

A. Utwórz rakietkę, która porusza się w lewo i w prawo

1. Utwórz duszka Rakietka

B. Utwórz piłkę, która odbija się od ścian

2. Utwórz duszka Piłka tenisowa

C. Spraw, aby piłka odbiła się od rakietki

3. Dodaj kod odbicia do duszka Piłka tenisowa

D. Utwórz klony klocków

4. Dodaj duszka Klocek

5. Klonuj duszka Klocek

E. Spraw, aby piłka odbijała się od klocków

6. Dodaj kod odbicia do duszka Klocek

F. Utwórz komunikaty „Wygrywasz” oraz „Koniec gry”

7. Zmodyfikuj kod duszka Piłka tenisowa

8. Utwórz duszka Koniec gry

9. Utwórz duszka Wygrywasz

Gotowy program

Wersja 2.0: czas na dopracowanie

Narysuj fajne tło

Dodaj muzykę

Spraw, aby rakieta rozbłysła po uderzeniu

Dodaj do klocków animowane pojawienie się i zniknięcie

Dodaj efekt dźwiękowy do znikania klocka

Dodaj efekt dźwiękowy do duszka Piłka tenisowa

Dodaj ślad za piłką tenisową

Dodaj animowane pojawienie się duszka Koniec gry

Dodaj animowane pojawienie się duszka Wygrywasz

Podsumowanie

Pytania kontrolne

6. Łowca asteroid... w kosmosie

Szkic projektu

A. Utwórz statek kosmiczny „na pych”

1. Utwórz duszka Statek kosmiczny

B. Spraw, aby statek kosmiczny zawracał przy krawędzi

2. Dodaj kod zawracania do duszka Statek kosmiczny

3. Dodaj kod losowego popchnięcia do duszka Statek kosmiczny

C. Celuj za pomocą myszy i strzelaj za pomocą spacji

4. Utwórz duszka Pocisk energetyczny

D. Utwórz asteroidy, które unoszą się dookoła

5. Utwórz duszka Asteroida

E. Spraw, by asteroidy po trafieniu dzieliły się na dwie

6. Dodaj kod podziału asteroidy

7. Dodaj kod komunikatu „asteroida rozbita” do duszka Pocisk energetyczny

F. Zapisz wynik i utwórz zegar

8. Utwórz duszka Koniec czasu

G. Wywołaj eksplozję statku kosmicznego, gdy zostanie on trafiony

9. Załaduj duszka Eksplozja

10. Dodaj kod do duszka Eksplozja

11. Dodaj kod eksplozji do duszka Statek kosmiczny

Wersja 2.0: ograniczona amunicja

Tryb oszukiwania: gwiezdna bomba

Podsumowanie

Pytania kontrolne

7. Tworzenie zaawansowanej gry platformowej

Szkic projektu

A. Utwórz grawitację, spadanie i lądowanie

1. Utwórz duszka Ziemia

2. Dodaj grawitację i kod lądowania

3. Spraw, by kot chodził i powracał na scenę

4. Usuń opóźnienie podnoszenia spod ziemi

B. Obsługa stromych zboczy i ścian

5. Dodaj kod stromego zbocza

C. Spraw, by kot skakał wysoko i nisko

6. Dodaj kod skakania

D. Dodaj wykrywanie sufitu

7. Dodaj niską platformę do duszka Ziemia

8. Dodaj kod wykrywania sufitu

E. Użyj hitboksa dla duszka Kot

9. Dodaj kostium Hitbox do duszka Kot

10. Dodaj kod hitboksa

F. Dodaj lepszą animację chodzenia

11. Dodaj nowe kostiumy do duszka Kot

12. Utwórz blok Ustaw właściwy kostium

G. Utwórz poziom

13. Pobierz i dodaj tło sceny

14. Utwórz kostium Hitbox dla duszka Ziemia

15. Dodaj kod duszka Ziemia

16. Dodaj więcej kodu powracania do duszka Kot

H. Dodaj jabłka i wrogie kraby

17. Dodaj duszka Jabłko i kod

18. Utwórz duszka Krab

19. Utwórz sztuczną inteligencję przeciwnika

20. Dodaj duszka Koniec czasu

Podsumowanie

Pytania kontrolne

Co dalej?

Przypisy

Podziękowania

To, że na okładce znajduje się tylko moje nazwisko, jest mylące. Książka nie powstałaby bez pracy wielu ludzi. Dziękuję mojemu wydawcy Billowi Pollockowi, redaktor prowadzącej Frances Saux, redaktorce Rachel Monaghan, recenzentce technicznej Olivii Rodrigues i adiustatorce Kim Wimpsett, a także osobom, które pracowały nad pierwszym wydaniem. Są to redaktorzy Laurel Chun i Tyler Ortman, recenzent techniczny Martin Tan, adiustatorka Anne Marie Walker i cały zespół No Starch Press.

Dziękuję również grupie Lifelong Kindergarten z MIT Media Lab za to, że wraz z wieloma wpływowymi myślicielami stworzyli Scratcha. Są wśród nich Mitchel Resnick, Seymour Papert, Marvin Minsky oraz Jean Piaget. Gdy wspieramy młodsze pokolenie, nie możemy zapominać o własnych osiągnięciach.

Specjalne podziękowania należą się Museum of Art and Digital Entertainment w Oakland w Kalifornii. Muzeum gier wideo jest tak zabawne, jak wskazuje jego nazwa, a wolontariat podczas weekendowych lekcji Scratcha MADE był bardzo owocny. Gdyby Alex Handy, Mike Pavone i William Morgan nie zorganizowali kursów Scratcha, nigdy nie wpadłbym na pomysł napisania tej książki.

Wprowadzenie

ra w gry wideo to przyjemność, ale samodzielne zaprogramowanie gier jest kreatywną, stanowiącą wyzwanie, umiejętnością, która pozwala na tworzenie własnej zabawy. Bezpłatne środowisko programowania Scratcha umożliwia każdemu łatwe nabycie umiejętności w zakresie programowania. Mimo że Scratch jest przeznaczony głównie dla grupy wiekowej od 8 do 16 lat, to korzystają z niego zarówno młodsze dzieci w towarzystwie rodziców, jak i studenci poznający swój pierwszy język programowania.

Jest tyle możliwości działania w Scratchu, że trudno zdecydować, od czego zacząć. Pomocna w tym wyborze jest właśnie ta książka. Prowadzi przez tworzenie w Scratchu kilku gier wideo. Projekty te dają solidne podstawy, na których można się oprzeć przy tworzeniu własnych, oryginalnych programów.

Dla kogo przeznaczona jest ta książka

Do czytania tej książki nie jest potrzebne jakiekolwiek wcześniejsze doświadczenie w programowaniu. Jedyne niezbędne umiejętności matematyczne to podstawowe zasady dodawania, odejmowania, mnożenia i dzielenia. Nie pozwólcie, aby strach przed matematyką powstrzymał was od nauki programowania. I nie zapominajcie, że komputer wykona za was obliczenia!

Każdy program w tej książce jest łatwy do wykonania, gdy działa się zgodnie z podanymi instrukcjami, krok po kroku zapoznając się z blokami kodu i pojęciami z zakresu programowania w miarę tworzenia gier, w których są wykorzystywane. Niezależnie od poziomu umiejętności można od razu zacząć czytać tę książkę.

Dzieci mogą samodzielnie wykonywać zadania, ale wszelkie informacje są przeznaczone także dla rodziców, nauczycieli i ochotników, którzy chcą wprowadzić swoje dzieci lub uczniów do świata programowania. Projekty idealnie nadają się na zajęcia weekendowe lub do wykorzystania w pozalekcyjnych klubach komputerowych. Dorośli nie muszą być specjalistami od programowania, aby wykorzystać tę książkę, pomagając innym w nauce.

Osoby, które chcą zapoznać się z pełnym przewodnikiem po funkcjach Scratcha, mogą sięgnąć po podręczniki online (po angielsku) pod adresami https://scratch.mit.edu/help/videos/ i https://inventwithscratch.com/. Polecam także książkę 25 Scratch 3 Games, którą napisał Max Wainewright (No Starch Press, 2019) dostępną pod adresem https://nostarch.com/25scratchgames/.

Programowanie to jednak umiejętność praktyczna, tak jak karate lub gra na gitarze: nie można się tego nauczyć, ograniczając się do czytania. Musicie tworzyć gry, postępując zgodnie z instrukcjami – w ten sposób dużo więcej się nauczycie.

Treść książki

Każdy rozdział prowadzi was przez programowanie jednej gry, a pojęcia z zakresu programowania są wyjaśniane, w miarę jak się pojawiają. Zaczniecie od naszkicowania końcowego wyglądu gry i zaplanowania głównych części programu. W kolejnych rozdziałach będzie mowa o tym, jak krok po kroku zakodować każdą z tych części, aż do zbudowania całej gry. Następnie będzie można dodawać do niej specjalne funkcje oraz tryby oszukiwania. Na końcu każdego rozdziału znajdują się pytania kontrolne, które pomogą wam sprawdzić, czy zrozumieliście omówione tematy.

Rozdział 1. Zaczynamy działanie w Scratchu pokazuje, jak uzyskać dostęp do witryny Scratcha i różnych części jego edytora.

W rozdziale 2. Linie tęczy w… przestrzeni utworzymy animowany projekt graficzny, wykorzystując podstawowe bloki kodu i kilka współpracujących ze sobą duszków. Omówimy także kierunki i kąty.

W rozdziale 3. W labiryncie utworzymy grę w labirynt, w której gracz zmienia przy użyciu klawiatury współrzędne kota i przeprowadza go przez osiem różnych poziomów labiryntu.

Rozdział 4. Jak strzelać do kosza z grawitacją pokazuje, jak zrobić grę w koszykówkę, która implementuje realistyczną grawitację dla skaczących kotów i spadających piłek.

Rozdział 5. Ulepszona gra Brick Breaker obejmuje łatwe techniki przekształcenia prostej gry w zbijanie klocków Brick Breaker w ulepszoną, ekscytującą grę z animacją, efektami dźwiękowymi i innymi modyfikacjami.

Rozdział 6. Łowca asteroid… w kosmosie prezentuje klon klasycznej strzelanki Asteroids. Do statku kosmicznego dodamy sterowanie za pomocą myszy i klawiatury.

Rozdział 7. Tworzenie zaawansowanej platformy łączy ze sobą wiele pojęć wykorzystywanych w poprzednich rozdziałach i wyjaśnia, jak utworzyć grę na platformach z animacją chodzenia i skoków, platformami i wrogami sterowanymi przez sztuczną inteligencję.

Jak korzystać z tej książki

Wszystkie projekty opisane w tej książce zaczynają się od zarysu gry, którą będziemy tworzyć. Etykiety na szkicu wskazują funkcje, które dodamy do gry wraz z kodem.

Aby wszystko było łatwe do opanowania, zajmiemy się każdą częścią gry po kolei. Niebieskie nagłówki ABC odpowiadają w książce funkcjom na szkicu.

Podział dużego zagadnienia na kilka małych może naprawdę pomóc uporządkować tok myślenia i sprawić, że duży problem wyda się możliwy do pokonania. Po uzyskaniu i uruchomieniu prostej wersji gry będziemy dodawać nowe funkcje, kody do oszukiwania i inne elementy. Gdy będziecie gotowi do tworzenia własnych gier, zalecam rozpoczęcie od prostego szkicu.

Zapis programu

W całej książce znajdują się ramki „Zapis programu”. Ponieważ programy tworzone są krok po kroku, warto co jakiś czas zatrzymać się i uruchamiać program nawet wtedy, gdy nie jest jeszcze ukończony. Dzięki temu można zobaczyć, czy do danego miejsca program działa poprawnie, i wcześnie wyłapać wszelkie błędy. Ramki „Zapis programu” przypominają także o konieczności zapisania programu za pomocą opcji z paska menu Plik Zapisz na swoim komputerze.

Zasoby internetowe

Środowisko Scratcha obejmuje wiele obrazów, jednak do wykonania projektów z tej książki będą potrzebne dodatkowe pliki. Znajdują się one w pliku ZIP z zasobami, które można pobrać z witryny https://wydawnictwo.pwn.pl/Do-pobrania/Bawimy-sie-programujac-w-Scratchu-3-materialy-dodatkowe. Aby uzyskać dostęp do tych plików, należy je rozpakować na swoim dysku.

Plik ZIP z zasobami zawiera pliki obrazów projektów używanych w tej książce oraz pliki ze szkieletem projektu dla każdego z programów. Te pliki ze szkieletami projektów zawierają wszystkie kroki instalacji i wymagają jedynie dodania bloków kodu. W przypadku problemów z ukończeniem swojego programu można spróbować zacząć od pliku ze szkieletem projektu, zamiast robić wszystko od początku. Wykorzystanie plików ze szkieletami projektów może być dobrym pomysłem, gdy nauczyciel ma kilku uczniów, a czas jest ograniczony, gdyż będą oni musieli jedynie dodać bloki kodów, aby ukończyć program.

Errata i aktualizacje

Dołożyliśmy wszelkich starań, aby w książce nie było błędów. Wszelkie poprawki i aktualizacje można znaleźć na witrynie
https://wydawnictwo.pwn.pl/Do-pobrania/Bawimy-sie-programujac-w-Scratchu-3-materialy-dodatkowe.

Przypisy

[1] Wydanie polskie: Automatyzacja nudnych zadań z Pythonem, Helion 2017 (przyp. tłum.).