Dane oryginału

Copyright © 2018 by Sean McManus. Title of English-language original: Mission Python. Code a Space Adventure Game!, ISBN 978-1-59327-857-1, published by No Starch Press. Polish-language edition copyright © 2019 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład Natalia Chounlamany-Turalska na zlecenie WITKOM Witold Sikorski

Projekt okładki polskiego wydania Hubert Zacharski na podstawie oryginału

Wydawca Edyta Kawala

Redaktor prowadzący Jolanta Kowalczuk

Redaktor Małgorzata Dąbkowska-Kowalik

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN Marcin Kapusta / konwersja.virtualo.pl

Rysunki: 1.1 opublikowano za zgodą Johnson Space Center, NASA; 1.6 – za zgodą NASA/JPL-Caltech/UCLA; 1.7 – za zgodą NASA

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

Copyright © for the Polish edition by Wydawnictwo Naukowe PWN SA

Warszawa 2019

eBook został przygotowany na podstawie wydania papierowego z 2019 r., (wyd. I)

Warszawa 2019

ISBN 978-83-01-20532-4

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, www.pwn.pl

Patroni medialni:

Mojej żonie, Karen, z podziękowaniem
za wsparcie w realizacji tej misji,
oraz Leo, naszemu cudownemu synowi,
który zabiera nas w najwspanialszą podróż.

O AUTORZE

Sean McManus jest autorem specjalizującym się w dziedzinie technologii i biznesu. Inne jego książki to między innymi Cool Scratch Projects in Easy Steps, Scratch Programming in Easy Steps, Coder Academy oraz Raspberry Pi For Dummies (której współautorem jest Mike Cook). Pracował jako niezależny copywriter dla największych firm technologicznych na świecie. W powieści Earworm opisuje tajniki przemysłu muzycznego, ujawniając zmowę zmierzającą do zastąpienia prawdziwych zespołów muzyką generowaną przez komputery. Sean był wolontariuszem Code Club, pomagając uczniom lokalnej szkoły w nauce programowania. Na jego stronie internetowej www.sean.co.uk znaleźć można przykładowe rozdziały książek i dodatkowe materiały.

O AUTORZE TECHNICZNYM

Daniel Aldred jest doświadczonym i pełnym pasji nauczycielem informatyki. Kieruje działem informatycznym w centrum edukacyjnym CAS, wspierającym i szkolącym inne szkoły oraz organizacje w regionie. Pisze dla magazynu Linux User & Developer i tworzy zasoby oraz projekty dla Raspberry Pi, Pimoroni, micro:bit oraz Cambridge International Assessment. W wolnym czasie pełni rolę kuratora dwóch witryn internetowych: www.canyoucompute.co.uk z materiałami przygotowującymi do brytyjskiego egzaminu z informatyki oraz www.tecoed.co.uk, na której publikuje własne programy. Daniel prowadził i zarządzał zespołem ośmiu uczniów, którzy wygrali pierwszy konkurs Astro Pi. W nagrodę astronauta major Tim Peake uruchomił ich program na pokładzie ISS.

Spis treści

Podziękowania

Wprowadzenie

Jak korzystać z tej książki

Co można znaleźć w tej książce?

Instalowanie oprogramowania

Instalowanie oprogramowania na Raspberry Pi

Instalowanie programu Python w systemie Windows

Instalowanie oprogramowania Pygame Zero w systemie Windows

Instalowanie oprogramowania na innych maszynach

Pobieranie plików gry

Pobieranie i rozpakowywanie plików na komputerze Raspberry Pi

Rozpakowywanie pliku na komputerze Windows

Co zawiera plik ZIP

Uruchamianie gry

Uruchamianie programów Pygame Zero na komputerze Raspberry Pi

Uruchamianie programów Pygame Zero w systemie Windows

Jak grać

1. Pierwszy spacer kosmiczny

Uruchamianie edytora języka Python

Uruchamianie edytora IDLE w systemie Windows 10

Uruchamianie edytora IDLE w systemie Windows 8

Uruchamianie edytora IDLE na komputerze Raspberry Pi

Wprowadzenie do powłoki Pythona

Wyświetlanie tekstu

Misja szkoleniowa nr 1

Wyświetlanie i używanie liczb

Wprowadzenie do trybu skryptu

Tworzenie obrazu nieba

Wyjaśnienie dotychczasowego kodu programu

Zatrzymywanie programu Pygame Zero

Dodawanie planety i statku kosmicznego

Zmiana perspektywy: lot za planetę

Misja szkoleniowa nr 2

Spacer kosmiczny!

Misja szkoleniowa nr 3

Wyjaśnienie listingu programu spacer kosmiczny

Misja szkoleniowa nr 4

Gotowi do lotu?

Podsumowanie misji

2. Listy mogą ocalić życie

Tworzenie pierwszej listy: lista kontrolna startu

Wyświetlanie listy

Dodawanie i usuwanie elementów

Stosowanie numerów indeksu

Wstawianie elementu

Uzyskiwanie dostępu do wybranego elementu

Zastępowanie elementu

Usuwanie elementu

Misja szkoleniowa nr 1

Tworzenie listy kontrolnej spaceru kosmicznego

Misja szkoleniowa nr 2

Lista list: instrukcja latania

Tworzenie listy list

Misja szkoleniowa nr 3

Odnajdowanie elementu w podręczniku latania

Łączenie list

Sporządzanie map na podstawie list: Pomieszczenie awaryjne

Sporządzanie map

Odnajdowanie wyposażenia awaryjnego

Misja szkoleniowa nr 4

Zamienianie obiektów w pomieszczeniu

Misja szkoleniowa nr 5

Gotowi do lotu?

Podsumowanie misji

3. Powtarzaj za mną

Wyświetlanie map przy użyciu pętli

Tworzenie mapy pokoju

Wyświetlanie mapy w pętli

Misja szkoleniowa nr 1

Zapętlanie pętli

Zagnieżdżanie pętli w celu otrzymania współrzędnych pokoju

Porządkowanie widoku mapy

Misja szkoleniowa nr 2

Wyświetlanie trójwymiarowego obrazu pokoju

Zrozumienie sposobu rysowania pokoju

Wyznaczanie miejsca rysowania elementu

Misja szkoleniowa nr 3

Gotowi do lotu?

Podsumowanie misji

4. Budowanie stacji kosmicznej

Automatyzacja procesu tworzenia mapy

W jaki sposób działa automatyczny generator map

Tworzenie danych mapy

Pisanie kodu MAPA_GRY

Testowanie i debugowanie kodu

Generowanie pokoi na podstawie danych

W jaki sposób działa kod generujący pokój

Tworzenie podstawowego kształtu pokoju

Dodawanie wyjść

Testowanie programu

Misja szkoleniowa nr 1

Badanie stacji kosmicznej w 3D

Misja szkoleniowa nr 2

Tworzenie własnych map

Gotowi do lotu?

Podsumowanie misji

5. Przygotowanie wyposażenia stacji kosmicznej

Tworzenie prostego słownika planet

Zrozumienie różnicy między listą a słownikiem

Tworzenie ściągi z astronomii

Wykrywanie błędów

Misja szkoleniowa nr 1

Umieszczanie list w słownikach

Wyciąganie informacji z listy w słowniku

Misja szkoleniowa nr 2

Tworzenie słownika obiektów na stacji kosmicznej

Dodawanie pierwszych obiektów w grze Escape

Wyświetlanie obiektów przy użyciu eksploratora stacji

Projektowanie pokoju

Misja szkoleniowa nr 3

Dodawanie pozostałych obiektów

Misja szkoleniowa nr 4

Gotowi do lotu?

Podsumowanie misji

6. Instalowanie wyposażenia stacji kosmicznej

Objaśnienie słownika danych scenografii

Dodawanie danych scenografii

Dodawanie ogrodzenia na powierzchni planety

Dodawanie scenografii do mapy pokoju

Dopracowywanie funkcji Explorer do zwiedzania stacji kosmicznej

Misja szkoleniowa nr 1

Gotowi do lotu?

Podsumowanie misji

7. Przeprowadzka na stację kosmiczną

Pojawienie się na stacji kosmicznej

Wyłączenie funkcji nawigowania po pokojach w sekcji EXPLORER

Dodawanie nowych zmiennych

Teleportowanie na stację kosmiczną

Dodawanie kodu do poruszania się

Wyjaśnienie kodu do animacji ruchu

Misja szkoleniowa nr 1

Przechodzenie między pokojami

Gotowi do lotu?

Podsumowanie misji

8. Naprawianie stacji kosmicznej

Przesyłanie informacji do funkcji

Tworzenie funkcji, która odbiera informacje

Jak to działa

Misja szkoleniowa nr 1

Dodawanie zmiennych dla cieni, przezroczystości ścian i kolorów

Usuwanie sekcji EXPLORER

Dodawanie sekcji WYŚWIETLANIE

Dodawanie funkcji do rysowania obiektów

Rysowanie pokoju

Zrozumienie nowej funkcji draw()

Pozycjonowanie pokoju na ekranie

Tworzenie efektu znikania i pojawiania się przedniej ściany

Wyświetlanie podpowiedzi, wskazówek i ostrzeżeń

Wyświetlanie nazwy pokoju po wejściu do pokoju

Gotowi do lotu?

Podsumowanie misji

9. Rozpakowywanie rzeczy osobistych

Dodawanie informacji o rekwizytach

Dodawanie rekwizytów do mapy pokoju

Odnajdowanie numeru obiektu na mapie pokoju

Podnoszenie obiektów

Podnoszenie rekwizytów

Dodawanie sterowania za pomocą klawiatury

Dodawanie funkcji wyświetlania ekwipunku

Wyświetlanie ekwipunku

Dodawanie obsługi klawisza Tab

Testowanie ekwipunku

Upuszczanie obiektów

Misja szkoleniowa nr 1

Badanie obiektów

Misja szkoleniowa nr 2

Gotowi do lotu?

Podsumowanie misji

10. Zrób coś pożytecznego

Dodawanie funkcji sterowania klawiaturą do używania obiektów

Dodawanie standardowych komunikatów do używania obiektów

Dodawanie zmiennych postępu w grze

Dodawanie działań do określonych obiektów

Łączenie obiektów

Misja szkoleniowa nr 1

Dodawanie sekwencji ukończenia gry

Badanie obiektów

Gotowi do lotu?

11. Uruchamianie drzwi bezpieczeństwa

Planowanie pozycji drzwi bezpieczeństwa

Rozmieszczanie drzwi

Dodawanie funkcji dostępu

Otwieranie i zamykanie drzwi

Dodawanie animacji drzwi

Misja szkoleniowa nr 1

Zamykanie automatycznych drzwi

Dodawanie teleportu

Misja szkoleniowa nr 2

Uruchamianie drzwi zabezpieczających dostęp do śluzy powietrznej

Usuwanie wyjść z własnego projektu gry

Misja ukończona?

Gotowi do lotu?

12. Uwaga! Niebezpieczeństwo! Dodawanie zagrożeń

Dodawanie paska stanu powietrza

Wyświetlanie pasków powietrza i energii

Dodawanie funkcji do odliczania ilości powietrza

Rozpoczęcie odliczania i włączenie alarmu

Misja szkoleniowa nr 1

Dodawanie ruchomych zagrożeń

Dodawanie danych zagrożenia

Obniżanie poziomu energii gracza

Uruchamianie i zatrzymywanie zagrożeń

Budowanie mapy zagrożeń

Inicjowanie ruchu niebezpiecznych  obiektów

Wyświetlanie zagrożeń w pokoju

Misja szkoleniowa nr 2

Powstrzymywanie gracza przed przechodzeniem przez zagrożenia

Dodawanie toksycznych kałuż

Ostatnie poprawki

Wyłączanie teleportacji

Oczyszczanie danych

Czas rozpocząć przygodę

Twoja kolejna misja: dostosowanie gry

Gotowi do lotu?

Podsumowanie misji

A. Escape: pełny listing gry

B. Tabela zmiennych, list i słowników

C. Debugowanie kodu

Wcięcia

Wielkość liter

Nawiasy okrągłe, kwadratowe i klamrowe

Dwukropki

Przecinki

Pliki obrazów i dźwięków

Literówki

Przypisy

PODZIĘKOWANIA

Ogromne podziękowania dla wszystkich osób w wydawnictwie No Starch Press, których ciężka praca przyczyniła się do powstania tej książki, m.in. dla redaktorki ds. rozwoju Lizy Chadwick, redaktorki ds. produkcji Riley Hoffman, redaktorki Anne Marie Walker, korektorek Emelie Burnette i Meg Sneeringer oraz kierowniczki produkcji Sereny Yang. Podziękowania dla Tylera Ortmana za zamówienie książki oraz Billa Pollocka za wsparcie w realizacji projektu. Josh Ellingson stworzył wspaniałą okładkę. Dziękuję Amandzie Hariri, Annie Morrow oraz Rachel Barry za pomoc w marketingu.

Rafael Pimenta zaprojektowała świetne grafiki użyte w grze. Daniel Aldred pełnił funkcję redaktora technicznego, testując kod i komentując treść. Dziękuję im obojgu.

Książka nie mogłaby powstać bez pracy oddanej społeczności open source. Daniel Pope napisał Pygame Zero i pomógł w znajdowaniu odpowiedzi na pytania badawcze. Warto zajrzeć na stronę http://pygame-zero.readthedocs.io/en/latest/, aby poznać inne rewelacyjne funkcje oprogramowania Pygame Zero, które nie zostały wykorzystane w naszej misji. Pygame Zero stanowi rozszerzenie Pygame, dlatego kierujemy podziękowania także do zespołu ds. rozwoju Pygame oraz szerszej społeczności Python, która przyczyniła się do sukcesu tej technologii.

Jesteśmy wdzięczni organizacji NASA, która użyczyła nam wielu ilustracji do opowiedzenia tej historii. Ich praca stanowi ogromną inspirację.

Podziękowania dla Russella Barnesa, Sama Aldera, Ebena Uptona oraz Carrie Anne Philbin z fundacji Raspberry Pi, dzięki którym udało się zrealizować ten projekt.

Na zakończenie dziękujemy czytelnikom tej książki! Jeśli jej lektura sprawi Wam przyjemność, proszę podzielcie się tą informacją za pośrednictwem recenzji, tweeta lub wpisu na blogu, aby pomóc innym w odkryciu tej książki. Tak czy owak, mamy nadzieję, że książka spodoba się czytelnikom.

WPROWADZENIE

Kończy się nam powietrze. Na stacji kosmicznej nastąpił przeciek, zatem musimy działać szybko. Czy zdołamy na czas ewakuować się do bezpiecznego miejsca? Będziemy musieli wybrać odpowiednią drogę przez stację kosmiczną, znaleźć karty dostępu do odblokowania drzwi i naprawić uszkodzony skafander. To początek naszej misji!

Naszą przygodę zaczynamy tutaj – na Ziemi, w centrum sterowania, zwanym również komputerem. Ta książka pokazuje, jak użyć języka Python do budowania stacji kosmicznej na Marsie, poruszania się po niej i unikania zagrożeń w graficznej grze przygodowej. Aby dotrzeć do bezpiecznego miejsca, będziemy musieli wcielić się w rolę astronautów.

JAK KORZYSTAĆ Z TEJ KSIĄŻKI

Postępując zgodnie z instrukcjami przedstawionymi w tej książce, można zbudować grę o nazwie Escape z mapą do eksplorowania i zagadkami do rozwiązania. Gra jest napisana w języku Python, który jest popularnym i łatwym w czytaniu językiem programowania. Korzystamy również z oprogramowania Pygame Zero, które dodaje m.in. pewne instrukcje do zarządzania obrazami i dźwiękiem. Pokażemy, jak tworzyć grę kawałek po kawałku i wyjaśnimy, jak działają najważniejsze elementy kodu, aby można było go dostosować i na jego podstawie budować własne gry. Można również pobrać cały gotowy do użycia kod gry.

Jeśli napotkasz problemy lub zechcesz zobaczyć grę w działaniu, możesz w dowolnym momencie przystąpić do gry. Całe niezbędne oprogramowanie jest darmowe. W tej książce przedstawiamy instrukcje dla komputerów Windows oraz Raspberry Pi. Zalecamy wykorzystanie Raspberry Pi 3 lub Raspberry Pi 2. Na Pi Zero, oryginalnym Modelu B+ oraz starszych modelach gra może działać zbyt wolno.

Z tej książki i gry można korzystać na kilka sposobów:

• Pobrać kod, pograć w grę, a dopiero później skorzystać z książki, aby zrozumieć jej działanie. To eliminuje ryzyko, że informacje przedstawione w książce zdradzą rozwiązania pewnych zagadek. Chociaż staraliśmy się ograniczyć tego typu informacje do minimum, można w trakcie lektury zauważyć pewne wskazówki. Jeśli podczas gry napotkasz problem nie do pokonania, możesz spróbować przeczytać kod, aby znaleźć rozwiązania. Warto choć raz uruchomić grę, aby zobaczyć, co będziemy budować i w jaki sposób uruchamia się programy.

• Zbudować grę, a następnie w nią pograć. Ta książka prowadzi czytelników przez proces tworzenia gry od początku do końca. Przechodząc przez kolejne rozdziały, będziemy dodawać nowe elementy gry i objaśniać ich działanie. Jeśli w dowolnym momencie napotkasz trudności z uruchomieniem własnego kodu, możesz użyć naszego listingu i na jego bazie kontynuować budowanie gry. Decydując się na zastosowanie tego podejścia, należy wstrzymać się z dodawaniem własnych niestandardowych dostosowań do czasu ukończenia pracy nad grą. W przeciwnym przypadku ukończenie pracy może okazać się niemożliwe. (Można wprowadzać zmiany sugerowane w ćwiczeniach).

• Dostosować grę. Gdy już zrozumiesz działanie programu, możesz dostosowywać go przy użyciu własnych map, grafiki, obiektów i zagadek. Gra Escape jest umiejscowiona na stacji kosmicznej, ale można zmienić jej scenografię w dżunglę, morskie głębiny czy dowolne inne miejsce. Możesz użyć tej książki do zbudowania najpierw własnej wersji gry Escape lub pobrać nasz listing gotowej gry i w nim wprowadzać zmiany. Autor książki chciałby zobaczyć, co jej czytelnicy zbudowali na bazie gry Escape. Możesz skontaktować się z nim za pośrednictwem Twittera @musicandwords lub strony internetowej www.sean.co.uk.

CO MOŻNA ZNALEŹĆ W TEJ KSIĄŻCE?

Oto co Cię czeka podczas realizacji misji:

• Rozdział 1 pokazuje, jak udać się w spacer kosmiczny. Dowiesz się, jak używać oprogramowania Pygame Zero do wyświetlania plików obrazu w programach Python i odkryjesz pewne podstawowe aspekty budowania programów.

• Rozdział 2 wprowadza pojęcie list, na których przechowywana będzie duża część informacji w grze Escape. Zobaczysz, jak można używać list do tworzenia mapy.

• Rozdział 3 pokazuje, w jaki sposób można powtarzać fragmenty programu oraz jak używać tej techniki do wyświetlania mapy. Ponadto zaprojektujesz rozkład pokoju na stacji kosmicznej przy użyciu filarów ściennych i płytek podłogowych.

• W rozdziale 4 rozpoczniesz budowanie gry Escape, tworząc plan stacji. Zobaczysz, w jaki sposób program interpretuje plan stacji i na jego podstawie projektuje rozkład pokoi, rozmieszczając ściany i podłogi.

• W rozdziale 5 dowiesz się, jak w języku Python używać słowników, które stanowią inny istotny sposób przechowywania informacji. Dodasz informacje o wszystkich obiektach wykorzystywanych w grze i zobaczysz, jak tworzyć podgląd własnego projektu pokoju. Rozszerzając program w rozdziale 6, będziesz mógł zobaczyć elementy scenografii rozmieszczone w pokojach.

• Po zbudowaniu stacji kosmicznej można do niej wejść. W rozdziale 7 dodasz postać astronauty i odkryjesz, jak przemieszczać się między pokojami oraz animować ruch.

• Rozdział 8 pokazuje, jak dopracowywać warstwę graficzną gry przy użyciu cieni, znikających ścian i nowej funkcji do rysowania pokoi, która naprawia pozostałe usterki graficzne.

• Skoro stacja kosmiczna już działa, możesz rozpakować manatki. W rozdziale 9 rozmieścisz przedmioty, które gracz może badać, podnosić i upuszczać. W rozdziale 10 dowiesz się, jak używać przedmiotów i łączyć je ze sobą, aby rozwiązywać zagadki w grze.

• Stacja kosmiczna będzie niemal gotowa. W rozdziale 11 dodasz drzwi bezpieczeństwa, które ograniczają dostęp do pewnych stref. A gdy będziesz już niemal gotowy do ogłoszenia sukcesu, za rogiem pojawią się problemy w postaci ruchomych zagrożeń dodawanych w rozdziale 12.

Podczas pracy z książką będziesz realizować misje szkoleniowe, które stanowią okazję do testowania własnego kodu i umiejętności programistycznych. Odpowiedzi, o ile w ogóle będziesz ich potrzebować, znajdują się na końcu każdego rozdziału.

Dodatkową pomoc stanowią umieszczone na końcu książki dodatki. Dodatek A zawiera listing całej gry. Możesz odwołać się do niego, jeśli będziesz mieć wątpliwości, w którym miejscu dodać nowy fragment kodu. Dodatek B zawiera tabelę najważniejszych zmiennych, list oraz słowników, jeśli zapomnisz, co gdzie jest przechowywane. Natomiast Dodatek C przedstawia pewne wskazówki dotyczące debugowania, gdy program nie działa zgodnie z oczekiwaniami.

Dodatkowe informacje oraz materiały pomocnicze znaleźć można na stronie internetowej tej książki: www.sean.co.uk/books/mission-python/. Informacje oraz materiały są dostępne również na stronie: https://smartkids.pwn.pl/ksiazka/misja-python/.

INSTALOWANIE OPROGRAMOWANIA

Gra wykorzystuje język programowania Python, a także Pygame Zero – oprogramowanie ułatwiające obsługę grafiki oraz dźwięku. Przed rozpoczęciem pracy trzeba zainstalować oba programy.

UWAGA
Zaktualizowane instrukcje instalacji znaleźć można na stronie internetowej https://nostarch.com/missionpython/.

INSTALOWANIE OPROGRAMOWANIA NA RASPBERRY PI

Python oraz Pygame Zero są domyślnie zainstalowane na urządzeniach Raspberry Pi. Można zatem przejść od razu do części „Pobieranie plików gry” na stronie 9.

INSTALOWANIE PROGRAMU PYTHON W SYSTEMIE WINDOWS

Aby zainstalować oprogramowanie na komputerze Windows, należy postępować zgodnie z poniższą instrukcją:

1. Otwórz przeglądarkę i wejdź na stronę https://www.python.org/downloads/.

2. W momencie powstawania tej książki najnowsza wersja języka Python 3.7 nie oferowała jeszcze prostej instalacji oprogramowania Pygame. Dlatego zalecamy użycie najnowszej wersji Python 3.6 (w czasie pisania książki 3.6.6). Starsze wersje języka Python znajdują się w dolnej części ekranu na stronie pobierania (patrz rys. 1). Zapisz plik na pulpicie lub w innym łatwo dostępnym miejscu (Pygame Zero działa tylko w wersji Python 3, dlatego użytkownicy wersji Python 2 będą musieli na potrzeby tej książki użyć wersji Python 3).

3. Gdy plik zostanie pobrany, uruchom go, klikając go dwukrotnie.

4. W otworzonym oknie zaznacz pole wyboru Add Python 3.6 to PATH (patrz rys. 2).

5. Kliknij Install Now (Zainstaluj teraz).

Rysunek 1. Strona pobierania programu Python

Rysunek 2. Instalator programu Python

6. Jeśli pojawi się pytanie, czy zezwolić tej aplikacji na dokonywanie zmian na urządzeniu, kliknij Yes (Tak).

7. Instalacja języka Python zajmie kilka minut. Po zakończeniu kliknij przycisk Close (Zamknij), aby zakończyć proces instalacji.

INSTALOWANIE OPROGRAMOWANIA PYGAME ZERO W SYSTEMIE WINDOWS

Po zainstalowaniu języka Python na komputerze, można zainstalować Pygame Zero, postępując zgodnie z poniższą instrukcją:

1. Przytrzymaj klawisz Windows i naciśnij klawisz R. To powinno spowodować otwarcie okna Run (Uruchom), tak jak pokazano na rysunku 3.

2. Wpisz cmd (patrz rys. 3). Naciśnij klawisz ENTER lub kliknij przycisk OK.

Rysunek 3. Okno dialogowe Run systemu Windows

3. Powinno otworzyć się pokazane na rysunku 4 okno wiersza poleceń, w którym można wpisywać instrukcje do zarządzania plikami i uruchamiania programów. Wpisz pip install pgzero i naciśnij klawisz ENTER.

Rysunek 4. Okno wiersza poleceń

4. Powinna rozpocząć się instalacja oprogramowania Pygame Zero. Zajmie ona kilka chwil, a o jej zakończeniu poinformuje ponowne zgłoszenie się systemu >.

5. W przypadku otrzymania informacji, że polecenie pip nie jest rozpoznawane, należy ponownie zainstalować język Python. Można najpierw odinstalować Pythona, ponownie uruchamiając program instalacyjny lub używając panelu sterowania systemu Windows. Instalując język Python, upewnij się, że zaznaczone zostało pole wyboru PATH (patrz rys. 2). Po ponownym zainstalowaniu oprogramowania Python, spróbuj znów zainstalować Pygame Zero.

6. Po zakończeniu procesu pobierania i ponownym zgłoszeniu się systemu, wpisz następujące polecenie:

echo print("Hello!") > test.py

7. Powyższa instrukcja służy do utworzenia nowego pliku o nazwie test.py i umieszczenia w nim instrukcji print("Hello!"). Instrukcję print() omówimy w rozdziale 1, a na razie użyjemy jej jedynie do szybkiego utworzenia pliku testowego. Uważaj przy wpisywaniu nawiasów i znaków cudzysłowu, ponieważ pominięcie któregoś z nich spowoduje, że plik nie będzie działał prawidłowo.

8. Otwórz plik testowy, wpisując następujące polecenie:

pgzrun test.py

9. Po chwili powinno otworzyć się puste okno z tytułem Pygame Zero Game. Ponownie kliknij okno wiersza poleceń, aby pojawiło się ono na pierwszym planie. Okno powinno zawierać tekst Hello! Naciśnij CTRL-C w oknie wiersza poleceń, aby zatrzymać program.

10. Jeśli chcesz usunąć program testowy, wpisz del test.py.

INSTALOWANIE OPROGRAMOWANIA NA INNYCH MASZYNACH

Python oraz Pygame Zero są dostępne również w innych systemach komputerowych. Pygame Zero został zaprojektowany między innymi po to, aby umożliwiać uruchamianie gier na różnych komputerach, a zatem kod gry Escape powinien działać na wszystkich komputerach, na których działa Pygame Zero. Ta książka zawiera jedynie instrukcje dla użytkowników komputerów Windows oraz Raspberry Pi. Czytelnicy korzystający z innych komputerów mogą pobrać oprogramowanie Python ze strony https://www.python.org/downloads/ i znaleźć wskazówki dotyczące instalacji oprogramowania Pygame Zero na stronie http://pygame-zero.readthedocs.io/en/latest/installation.html.

POBIERANIE PLIKÓW GRY

Udostępniliśmy wszystkie pliki programu, dźwięków i obrazów potrzebne w grze Escape. Ponieważ wszystkie omawiane w tej książce listingi są również dostępne do pobrania, możesz skorzystać z nich, jeśli będziesz mieć problemy z uruchomieniem własnego kodu. Wszystkie dostępne materiały zostaną pobrane w postaci jednego pliku ZIP o nazwie escape.zip[1].

POBIERANIE I ROZPAKOWYWANIE PLIKÓW NA KOMPUTERZE RASPBERRY PI

Aby pobrać pliki gry na komputer Raspberry Pi, należy podstępować zgodnie z poniższą instrukcją, korzystając rysunku 5 jako wzoru. Numery na rysunku 5 wskazują, gdzie należy wykonać kolejne akcje.

❶ Otwórz okno przeglądarki i wejdź na stronę https://smartkids.pwn.pl/ksiazka/misja-python/[2]. Kliknij łącze, aby pobrać pliki.

❷ Kliknij ikonę File Manager (Menedżer plików) w pasku narzędzi znajdującym się w górnej części ekranu.

❸ Kliknij dwukrotnie folder Downloads, aby go otworzyć

❹ Kliknij dwukrotnie plik escape.zip.

❺ Kliknij przycisk Extract Files (Wyodrębnij pliki), aby otworzyć okno dialogowe Extract Files.

❻ Zmień folder, do którego wyodrębniasz pliki, na /home/pi/escape.

❼ Upewnij się, że opcja Extract files with full path (Wyodrębnij pliki z pełną ścieżką) jest zaznaczona.

❽ Kliknij przycisk Extract (Wyodrębnij).

Rysunek 5. Akcje procedury rozpakowania pliku

ROZPAKOWYWANIE PLIKU NA KOMPUTERZE WINDOWS

Aby rozpakować plik na komputerze Windows, należy postępować zgodnie z poniższą instrukcją.

1. Otwórz okno przeglądarki i wejdź na stronę https://smartkids.pwn.pl/ksiazka/misja-python/. Kliknij łącze, aby pobrać pliki. Zapisz plik ZIP na pulpicie, w folderze Dokumenty lub innym łatwo dostępnym miejscu.

2. W zależności od zastosowanej przeglądarki, plik ZIP może otworzyć się automatycznie lub w dolnej części ekranu może pojawić się opcja służąca do jego otwarcia. W przeciwnym wypadku przytrzymaj klawisz Windows i naciśnij klawisz E. Powinno otworzyć się okno Eksploratora systemu Windows. Przejdź do folderu, w którym zapisany został plik ZIP. Dwukrotnie kliknij plik ZIP.

3. Kliknij przycisk Extract All (Wyodrębnij wszystkie) znajdujący się w górnej części okna.

4. Zalecamy utworzenie folderu o nazwie escape w folderze dokumentów i wyodrębnienie do niego plików. Nasz folder dokumentów to C:\Users\Sean\Documents, dlatego wpisaliśmy jedynie \escape na końcu nazwy folderu, aby utworzyć nowy folder w tym folderze (patrz rys. 6). Można przy użyciu przycisku Browse (Przeglądaj) przejść najpierw do folderu dokumentów, jeśli to konieczne.

5. Kliknij przycisk Extract.

Rysunek 6. Określanie folderu, do którego mają zostać rozpakowane pliki gry

CO ZAWIERA PLIK ZIP

Pobrany plik ZIP zawiera trzy foldery oraz program w języku Python o nazwie escape.py (patrz rys. 7). Program ten stanowi finalną wersję gry Escape, która pozwala od razu rozpocząć grę. Folder images zawiera wszystkie obrazy zastosowane w grze oraz innych projektach omawianych w tej książce. Folder sounds zawiera efekty dźwiękowe.

W folderze listings znaleźć można wszystkie ponumerowane listingi omawiane w tej książce. W przypadku napotkania problemów z uruchomieniem kodu można wypróbować naszą wersję dostępną w tym folderze. Trzeba najpierw skopiować ją z folderu listings, a następnie wkleić ją do folderu escape, w którym znajduje się obecnie program escape.py. Jest to konieczne, ponieważ plik programu musi znajdować się w tym samym folderze co foldery images oraz sounds.

Rysunek 7. Zawartość pliku ZIP zaprezentowana w systemie Windows

URUCHAMIANIE GRY

Wraz z językiem Python pobrany został program o nazwie IDLE. IDLE to zintegrowane środowisko programistyczne (Integrated Development Environment), czyli oprogramowanie, które można wykorzystać do pisania programów w języku Python. Edytor IDLE może posłużyć do uruchamiania niektórych listingów z tej książki. Jednak w większości omawianych programów wykorzystano oprogramowanie Pygame Zero i do ich uruchomienia należy użyć wiersza poleceń. Aby uruchomić grę Escape lub inny program Pygame Zero, należy postępować zgodnie z poniższą instrukcją.

URUCHAMIANIE PROGRAMÓW PYGAME ZERO NA KOMPUTERZE RASPBERRY PI

Aby uruchomić grę Escape na komputerze Raspberry Pi, należy wykonać następujące kroki:

1. W Menedżerze plików przejdź do folderu escape w folderze pi.

2. Kliknij opcję Tools (Narzędzia) w menu i wybierz opcję Open Current Folder in Terminal (Otwórz bieżący folder w terminalu) lub naciśnij klawisz F4. Powinno otworzyć się okno wiersza poleceń (tzw. powłoka), jak pokazano na rysunku 8. Można wpisywać w nim instrukcje do zarządzania plikami lub uruchamiania programów.

Rysunek 8. Okno wiersza poleceń na komputerze Raspberry Pi

3. Wpisz następujące polecenie i naciśnij klawisz ENTER. I tak gra się rozpoczyna!

pgzrun escape.py

W taki sposób programy Pygame Zero uruchamia się na komputerach Pi. Aby ponownie uruchomić ten sam program, należy powtórzyć ostatni krok. Aby uruchomić inny program zapisany w tym samym folderze, należy powtórzyć ostatni krok, zmieniając nazwę pliku po pgzrun. Aby uruchomić program Pygame Zero znajdujący się w innym folderze, należy rozpocząć wykonywanie instrukcji od kroku 1, ale otworzyć wiersz poleceń z folderu, w którym znajduje się program do uruchomienia.

URUCHAMIANIE PROGRAMÓW PYGAME ZERO W SYSTEMIE WINDOWS

Aby uruchomić program w systemie Windows, należy wykonać następujące kroki:

1. Przejdź do folderu escape (przytrzymaj klawisz Windows i naciśnij klawisz E, aby ponownie otworzyć Eksploratora systemu Windows)

2. Kliknij długi pasek znajdujący się na plikami, jak pokazano na rysunku 9. W tym pasku wpisz cmd i naciśnij klawisz ENTER.

Rysunek 9. Znajdowanie ścieżki do wybranych plików Pygame

3. Otworzy się okno wiersza poleceń. Nazwa odpowiedniego folderu escape pojawi się tuż przed znakiem > w ostatnim wierszu, jak pokazano na rysunku 10.

Rysunek 10. Okno wiersza poleceń w systemie Windows

4. Wpisz pgzrun escape.py w oknie wiersza poleceń. Naciśnij klawisz ENTER, a gra Escape rozpocznie się.

W taki sposób programy Pygame Zero uruchamia się na komputerach Windows. Można ponownie uruchomić program, powtarzając ostatni krok. Aby uruchomić inny program zapisany w tym samym folderze, trzeba powtórzyć ostatni krok, zmieniając nazwę pliku po pgzrun. Aby uruchomić program Pygame Zero znajdujący się w innym folderze, należy rozpocząć wykonywanie instrukcji od kroku 1, ale otworzyć wiersz poleceń z folderu, w którym znajduje się program do uruchomienia.

JAK GRAĆ

Pracujesz sam na stacji kosmicznej na Marsie, wiele milionów kilometrów od domu. Reszta załogi wyruszyła w odległą misję w poszukiwaniu śladów życia w kanionie i nie wróci przez kilka dni. Otacza Cię spokojny szum urządzeń podtrzymujących życie.

Nagle ciszę przecina sygnał alarmowy! Nastąpił przeciek w ścianie stacji kosmicznej i powietrze powoli ulatuje do marsjańskiej atmosfery. Szybko, choć ostrożnie, zakładasz skafander, ale komputer informuje, że jest on uszkodzony. Twoje życie jest zagrożone.

Najpilniejszym zadaniem jest naprawienie skafandra i zapewnienie stałego dopływu powietrza. Kolejnym zadaniem jest przesłanie radiowego wezwania o pomoc – niestety systemy stacji kosmicznej nie działają. Przysłany wczorajszej nocy z Ziemi lądownik Poodle wylądował awaryjnie w marsjańskim pyle. Jeśli zdołasz go zlokalizować, to może uda Ci się użyć jego radia do nadania sygnału alarmowego.

Użyj klawiszy strzałek do poruszania się po stacji kosmicznej. Aby zbadać obiekt, stań na nim i naciśnij spację. Jeśli nie można stanąć na tego typu obiekcie, naciśnij spację, wchodząc do niego.

Aby wziąć obiekt, wejdź na niego i naciśnij klawisz W (od Weź).

Aby wybrać obiekt z ekwipunku, pokazanego w górnej części ekranu (patrz rys. 11), naciskaj klawisz TAB w celu przechodzenia do kolejnych przedmiotów. Aby upuścić wybrany obiekt, naciśnij klawisz R (od Rzuć).

Aby użyć obiektu, wybierz go z ekwipunku albo wejdź na niego (lub do niego) i naciśnij klawisz U. Możesz łączyć obiekty lub użyć ich razem, jeśli naciśniesz klawisz U, trzymając jeden obiekt, jednocześnie stając na innym obiekcie lub wchodząc do niego.

Trzeba będzie pokombinować, jak kreatywnie użyć ograniczonych zasobów do pokonania trudności i dotarcia do bezpiecznego miejsca. Powodzenia!

Rysunek 11. Przygoda się zaczyna!

1
PIERWSZY SPACER KOSMICZNY

Witaj w Korpusie Kosmicznym. Twoja misja polega na zbudowaniu pierwszej ludzkiej osady na Marsie. Od lat najlepsi naukowcy na świecie wysyłają roboty w celu przebadania tej planety z bliska. Wkrótce także Ty postawisz stopę na jej zapylonej powierzchni.

Podróż na Marsa zajmuje od sześciu do ośmiu miesięcy, w zależności od ułożenia Ziemi i Marsa. W trakcie tej podróży statek kosmiczny jest narażony na zderzenia z meteoroidami i innymi odpadami kosmicznymi. Jeśli nastąpi uszkodzenie, będziesz musiał włożyć skafander, przejść przez śluzę powietrzną i wkroczyć w kosmiczną pustkę, aby dokonać napraw, podobnie jak astronauta na rysunku 1.1.

W tym rozdziale udasz się na spacer kosmiczny, wykorzystując język Python do przesuwania postaci po ekranie. Uruchomisz pierwszy program w Pythonie i poznasz pewne podstawowe instrukcje Pythona, które będą potrzebne do zbudowania stacji kosmicznej w kolejnych rozdziałach. Ponadto dowiesz się, jak uzyskać iluzję głębi, nakładając obrazki, co będzie niezbędne podczas tworzenia trójwymiarowej wersji gry Escape w dalszej części książki (począwszy od pierwszej makiety pokoju w rozdz. 3).

Rysunek 1.1. Astronauta NASA Rick Mastracchio podczas 26-minutowego spaceru kosmicznego w 2010 roku, sfotografowany przez astronautę Claytona Andersona. Spacer kosmiczny poza Międzynarodową Stację Kosmiczną był jednym z kilku koniecznych do wymiany zbiornika chłodziwa

Jeśli ma masz jeszcze zainstalowanego oprogramowania Python oraz Pygame Zero (dotyczy użytkowników systemu Windows), wróć do części „Instalowanie oprogramowania” na stronie 5. W tym rozdziale będziesz również potrzebować plików gry Escape. Część „Pobieranie plików gry” na stronie 9 informuje, jak pobrać i rozpakować te pliki.

URUCHAMIANIE EDYTORA JĘZYKA PYTHON

Jak wspomnieliśmy we wprowadzeniu, w tej książce będziemy korzystać z języka programowania Python. Język programowania umożliwia pisanie instrukcji dla komputera. Nasze instrukcje będą mówiły komputerowi, jak realizować pewne zadania, np. jak reagować na naciśnięcie klawisza lub jak wyświetlić obrazek. Będziemy również używać oprogramowania Pygame Zero, które wzbogaca język Python o dodatkowe instrukcje służące do przetwarzania dźwięku i obrazu.