Tytuł Twórz własne gry komputerowe w Pythonie Autor Al Sweigart Język polski Wydawnictwo Wydawnictwo Naukowe PWN ISBN 978-83-01-19400-0 Rok wydania 2017 Warszawa Wydanie 1 liczba stron 416 Format mobi, epub Spis treści Wstęp do wydania polskiego XVII WPROWADZENIE XIX Dla kogo dedykowana jest ta książka? XX Zawartość książki XXI Jak korzystać z tej książki XXII Numery wierszy i wcięcia XXIII Długie wiersze kodu XXIII Pobieranie i instalowanie Pythona XXIV Uruchamianie IDLE XXV Pomoc online XXVI 1 warstwa INTERAKTYWNA 1 Kilka prostych działań matematycznych 2 Liczby całkowite i rzeczywiste 2 Wyrażenia 3 Wyznaczanie wartości wyrażeń 3 Błędy składniowe 5 Zapisywanie wartości w zmiennych 5 Podsumowanie 9 2 PISANIE PROGRAMÓW 11 Wartości łańcuchowe 12 Konkatenacja łańcuchów 13 Pisanie programów w edytorze plików IDLE 13 Tworzenie programu „Hello World" 14 Zapisywanie programu 15 wykonywanie programu 16 Jak działa program „Hello World" 17 Komentarze dla programistów 17 Funkcje: miniprogramy w programach 17 Koniec programu 19 Nadawanie nazw zmiennym 19 Podsumowanie 20 3 „ZGADNIJ, JAKA TO liczba" 21 Przykładowy przebieg gry „Zgadnij, jaka to ilość" 22 Kod źródłowy gry „Zgadnij, jaka to ilość" 22 Importowanie modułu random 24 Generowanie liczb losowych przy pomocy funkcji random.randint() 25 Powitanie gracza 26 Instrukcje związane z przepływem sterowania 27 stosowanie pętli do powtarzania kodu 27 Grupowanie w bloki 27 Pętle z instrukcjami for 28 Wczytywanie próby gracza 30 Konwersja wartości przy pomocy funkcji int(), float() i str() 30 Logiczny typ danych 32 Operatory porównania 33 Sprawdzanie warunku przy pomocy instrukcji warunkowych 33 Eksperymentowanie z wartościami logicznymi, operatorami porównania i warunkami 34 Różnica pomiędzy = i == 35 Instrukcje if 36 Wcześniejsze wychodzenie z pętli za pomocą instrukcji break 36 Sprawdzanie, czy gracz wygrał 36 Sprawdzanie, czy gracz przegrał 37 Podsumowanie 38 4 PROGRAM OPOWIADAJĄCY DOWCIPY 41 Kilka przykładowych dowcipów 42 Kod źródłowy programu „Dowcipy" 42 Jak działa ten kod 43 Znaki ucieczki 43 Apostrofy i cudzysłowy 44 Parametr end funkcji print() 45 Podsumowanie 46 5 „SMOCZA KRAINA" 47 Zasady gry w „Smoczą krainę" 47 Przykładowy przebieg gry „Smocza kraina" 48 Schemat blokowy „Smoczej krainy" 48 Kod źródłowy „Smoczej krainy" 49 Importowanie modułów random i time 51 Funkcje w grze „Smocza kraina" 51 Instrukcje def 51 powodowanie funkcji 52 Gdzie umieszczać definicje funkcji 52 Łańcuchy wielowierszowe 53 Jak wykonywać pętle przy pomocy instrukcji while 54 Operatory logiczne 54 Operator and 55 Operator or 56 Operator not 56 Wyznaczanie wartości wyrażeń z operatorami logicznymi 57 Zwracane wartości 58 Zasięg globalny i zasięg lokalny 58 atrybuty funkcji 60 Wyświetlanie wyników gry 61 Decydowanie, w której jaskini mieszka przychylny smok 62 Główna pętla gry 63 powodowanie funkcji w programie 63 Pytanie gracza, czy chce zagrać po raz kolejny 64 Podsumowanie 65 6 KORZYSTANIE Z DEBUGERA 67 warianty błędów 68 Debuger 69 Uruchamianie debugera 69 Krok po kroku w trybie debugera 71 Znajdowanie błędów 74 Ustawianie pułapek 77 Korzystanie z pułapek 78 Podsumowanie 80 7 PROJEKTOWANIE GRY „SZUBIENICA" Z użycieM SCHEMATÓW BLOKOWYCH 81 Zasady gry w „Szubienicę" 82 Przykładowy przebieg gry „Szubienica" 82 Grafika ASCII 83 Projektowanie programu z użyciem schematu blokowego 84 Tworzenie schematu blokowego 85 Rozgałęzienia w schemacie blokowym 86 Kończenie albo restartowanie gry 87 Powtórne zgadywanie 88 Informacja zwrotna dla gracza 90 Podsumowanie 91 8 PISANIE KODU GRY „SZUBIENICA" 93 Kod źródłowy gry „Szubienica" 94 Importowanie modułu random 97 Stałe 98 Listy jako wariant informacji 98 Dostęp do elementów poprzez indeksy 99 Konkatenacja list 100 Operator in 101 powodowanie metod 101 Metody listowe reverse() i append() 102 Metoda łańcuchowa split() 102 Wczytywanie tajnego słowa z listy 103 Wyświetlanie planszy 104 Funkcje list() i range() 105 Przycinanie list i łańcuchów 106 Wyświetlanie tajnego słowa z podkreśleniami 107 Wczytywanie strzału gracza 109 Metody łańcuchowe lower() i upper() 109 Opuszczanie pętli while 111 Instrukcje elif 111 Sprawdzanie, czy gracz podał dobrą literę 112 Pytanie gracza, czy chce zagrać ponownie 113 Przegląd funkcji w grze „Szubienica" 114 Główna pętla gry 114 wywoływanie funkcji wyświetlPlanszę() 115 Umożliwienie graczowi podania litery 115 Sprawdzanie, czy litera znajduje się w tajnym słowie 115 Sprawdzanie, czy gracz wygrał 115 Obsługa nieudanej próby odgadnięcia 116 Sprawdzanie, czy gracz przegrał 117 Kończenie albo resetowanie gry 118 Podsumowanie 118 9 ROZBUDOWA GRY „SZUBIENICA" 119 zwiększanie liczby dozwolonych prób 120 Słowniki jako typ danych 120 Poznawanie rozmiarów słowników przy pomocy funkcji len() 121 Różnica pomiędzy słownikami i listami 122 Metody słownikowe keys() i values() 123 Korzystanie ze słowników w grze „Szubienica" 123 Losowe wybieranie z listy 124 eliminowanie elementów z listy 125 Przypisanie wielokrotne 127 Wyświetlanie informacji o kategorii słowa 128 Podsumowanie 129 10 „KÓŁKO I KRZYŻYK" 131 Przykładowy przebieg gry w „Kółko i krzyżyk" 132 Kod źródłowy gry w „Kółko i krzyżyk" 133 Projektowanie programu 138 Przedstawienie planszy w postaci danych 138 Tworzenie strategii dla sztucznej inteligencji 139 Importowanie modułu random 140 Wyświetlanie planszy na ekranie 140 Umożliwienie graczowi wyboru znaku X lub O 141 Ustalanie, kto wykonuje pierwszy ruch 142 Umieszczanie znaku na planszy 143 Odwołania do list 143 Odwołania do list w funkcji wykonajRuch() 146 Sprawdzanie, czy gracz wygrał 147 Duplikacja informacji planszy 149 Sprawdzanie, czy pole na planszy jest wolne 150 Umożliwianie graczowi wykonania ruchu 150 Wyznaczanie wartości „na skróty" 151 Wybieranie ruchu z listy 153 Wartość None 154 Tworzenie sztucznej inteligencji (SI) 155 Sprawdzanie, czy komputer może wygrać w jednym ruchu 156 Sprawdzanie, czy gracz może wygrać w jednym ruchu 156 Sprawdzanie pól narożnych, środkowego i bocznych (w tej właśnie kolejności) 157 Sprawdzanie, czy na planszy są jeszcze wolne pola 158 Główna pętla gry 158 dobór znaku gracza i ustalenie rozpoczynającego 159 Ruch gracza 159 Ruch komputera 160 Pytanie gracza, czy chce zagrać ponownie 161 Podsumowanie 161 11 DEDUKCYJNA GRA „BAGELS" 163 Przykładowy przebieg gry „Bagels" 164 Kod źródłowy gry „Bagels" 165 Schemat blokowy gry „Bagels" 167 Importowanie modułu random i definiowanie funkcji uzyskajTajnąLiczbę() 168 Przestawianie kolejności cyfr 168 Zmiana kolejności części na liście za pomocą funkcji random.shuffle() 168 Uzyskiwanie tajnej liczby z przestawionych cyfr 169 Skrótowe operatory przypisania 170 Ustalanie, jaką podpowiedź wyświetlić 171 Metoda listowa sort() 172 Metoda łańcuchowa join() 173 Sprawdzanie, czy łańcuch zawiera jedynie cyfry 173 Rozpoczynanie gry 174 Interpolacja łańcuchów 175 Główna pętla gry 176 Wczytywanie próby odgadnięcia 177 Ustalanie podpowiedzi do strzału gracza 177 Sprawdzanie, czy gracz wygrał albo przegrał 177 Pytanie gracza, czy chce zagrać ponownie 178 Podsumowanie 178 12 UKŁAD WSPÓŁRZĘDNYCH KARTEZJAŃSKICH 181 Siatki i współrzędne kartezjańskie 182 Liczby ujemne 184 Układ współrzędnych na ekranie komputera 185 Sztuczki matematyczne 186 Sztuczka 1: Minus pożera znak plusa znajdujący się po jego lewe j stronie 186 Sztuczka 2: Dwa minusy łączą się w plus 187 Sztuczka 3: Dwie dodawane liczby mogą zamienić się miejscami 187 Wartości bezwzględne i funkcja abs() 188 Podsumowanie 188 13 GRA „POSZUKIWANIE SKARBU SONAREM" 191 Przykładowy przebieg gry „Poszukiwanie skarbu sonarem" 193 Kod źródłowy gry „Poszukiwanie skarbu sonarem" 195 Projektowanie programu 201 Importowanie modułów random, sys i math 201 Tworzenie nowej planszy do gry 202 Rysowanie planszy do gry 203 Rysowanie współrzędnych x wzdłuż górnej krawędzi planszy 204 Rysowanie oceanu 205 Wyświetlanie rzędu oceanu 205 Rysowanie współrzędnych x na dole planszy 206 Tworzenie losowych skrzyń ze skarbami 206 Ustalanie, czy ruch jest korzystny 207 wykonywanie ruchu na planszy 208 Znajdowanie najbliższej skrzyni ze skarbami 208 likwidowanie wartości za pomocą listowej metody remove() 211 Wczytywanie ruchu gracza 212 Wyświetlanie instrukcji gry dla gracza 214 Główna pętla gry 214 Wyświetlanie danych o stanie gry 216 Obsługa ruchu gracza 216 Znajdowanie zatopionej skrzyni ze skarbami 217 Sprawdzanie, czy gracz wygrał 217 Sprawdzanie, czy gracz przegrał 218 Kończenie programu przy pomocy funkcji sys.exit() 218 Podsumowanie 219 14 „SZYFR CEZARA" 221 Kryptografia i szyfrowanie 222 Jak działa szyfr Cezara 223 Przykładowe działanie programu „Szyfr Cezara" 224 Kod źródłowy programu „Szyfr Cezara" 225 Ustawianie maksymalnej długości klucza 226 Podejmowanie decyzji o zaszyfrowaniu albo odszyfrowaniu wiadomości 227 Wczytywanie tekstu przekazanego poprzez gracza 227 Wczytywanie klucza przekazanego poprzez gracza 228 Szyfrowanie lub odszyfrowywanie komunikatu 228 Znajdowanie przekazanych łańcuchów za pomocą metody find() 229 Szyfrowanie lub odszyfrowywanie każdej litery 230 Uruchamianie programu 231 technologia siłowa 232 Dodawanie trybu siłowego łamania kodu 232 Podsumowanie 234 15 GRA „REVERSEGAM" 235 Jak grać w „Reversegam" 236 Przykładowy przebieg gry „Reversegam" 239 Kod źródłowy gry „Reversegam" 241 Importowanie modułów i konfiguracja stałych 248 Struktura danych z planszą gry 248 Rysowanie struktury danych z planszą na ekranie 249 Tworzenie nowej struktury danych z planszą 250 Sprawdzanie, czy ruch jest korzystny 250 Sprawdzanie każdego z ośmiu kierunków 251 Sprawdzanie, czy są jakieś pionki do odwrócenia 253 Sprawdzanie poprawności przekazanych współrzędnych 254 Uzyskiwanie listy wszystkich możliwych ruchów 255 wywoływanie funkcji bool() 256 Uzyskiwanie wyniku z planszy 257 Wczytywanie wyboru pionka przez gracza 257 Ustalanie, kto ma wykonać pierwszy ruch 258 Umieszczanie pionka na planszy 258 Kopiowanie struktury danych z planszą 259 Ustalanie, czy pole narożne jest wolne 259 Wczytywanie ruchu gracza 260 Ustalanie ruchu komputera 262 Strategiczne znaczenie pól narożnych 262 Uzyskiwanie listy najlepszych ruchów 263 Wyświetlanie wyników na ekranie 264 Rozpoczynanie gry 264 Sprawdzanie możliwości wykonania ruchu 265 Tura gracza 265 Tura komputera 267 Główna pętla gry 268 Pytanie gracza, czy chce zagrać ponownie 269 Podsumowanie 270 16 SYMULACJA SI W GRZE „REVERSEGAM" 271 Komputer ma grać sam ze sobą 272 Przykładowy przebieg symulacji 1 273 Kod źródłowy symulacji 1 273 usuwanie tekstów wyświetlanych graczowi i dodawanie komputerowego gracza 275 Komputer ma zagrać sam ze sobą mnóstwo razy 276 Przykładowy przebieg symulacji 2 276 Kod źródłowy symulacji 2 277 Śledzenie wielu gier 278 Zasłanianie wywołań funkcji print() komentarzem 279 Procentowa ocena wyników SI 279 Porównywanie najróżniejszych algorytmów SI 281 Kod źródłowy symulacji 3 282 Jak działa SI w symulacji 3 283 Porównanie SI 287 Podsumowanie 289 17 TWORZENIE GRAFIKI 291 Instalowanie modułu pygame 292 „Hello World" w module pygame 292 Przykładowy przebieg programu „Hello World" napisanego z użyciem pygame 293 Kod źródłowy programu „Hello World" w wersji pygame 294 Importowanie modułu pygame 295 Inicjalizacja pygame 296 Konfiguracja okna pygame 296 Krotki 297 Obiekty Surface 297 Konfiguracja zmiennych z kolorami 298 Wypisywanie tekstu w oknie pygame 299 użytkowanie czcionek do stylizacji tekstu 299 Renderowanie obiektu Font 300 Ustawianie położenia tekstu przy pomocy atrybutów Rect 301 Wypełnianie obiektu Surface kolorem 303 Funkcje związane z rysowaniem w module pygame 303 Rysowanie wielokąta 303 Rysowanie linii 304 Rysowanie okręgu 305 Rysowanie elipsy 305 Rysowanie prostokąta 306 Kolorowanie pikseli 307 Metoda blit() dla obiektów Surface 307 Rysowanie obiektu Surface na ekranie 308 Zdarzenia i główna pętla gry 308 Uzyskiwanie obiektów Event 309 Opuszczanie programu 309 Podsumowanie 310 18 GRAFIKA ANIMOWANA 311 Przykładowy przebieg programu „Animacja" 312 Kod źródłowy programu „Animacja" 312 Przemieszczanie i odbijanie się ramek od krawędzi okna 314 Konfiguracja stałych 315 Stałe reprezentujące kierunki 316 Stałe oznaczające barwy 317 Konfiguracja struktur informacji z ramkami 317 Główna pętla gry 318 Kod pozwalający wyjść z gry 318 Przemieszczanie każdej ramki 319 Odbijanie się ramek od krawędzi okna 320 Rysowanie ramek w oknie w nowym położeniu 321 Rysowanie okna na ekranie 322 Podsumowanie 322 19 WYKRYWANIE KOLIZJI 323 Przykładowy przebieg programu „Wykrywania kolizji" 324 Kod źródłowy programu „Wykrywanie kolizji" 325 Importowanie modułów 327 Sterowanie prędkością programu za pomocą obiektu Clock 328 Konfiguracja okna i struktur informacji 328 Konfiguracja zmiennych do śledzenia ruchu 330 Obsługa zdarzeń 330 Obsługa zdarzenia KEYDOWN 331 Obsługa zdarzenia KEYUP 334 Teleportowanie gracza 334 Dodawanie nowych kwadracików z pożywieniem 335 Poruszanie postacią gracza w obrębie okna 336 Rysowanie postaci gracza w oknie 336 Sprawdzanie, czy wystąpiła kolizja 337 Rysowanie w oknie kwadracików pożywienia 338 Podsumowanie 338 20 używanIE DŹWIĘKÓW I OBRAZKÓW 339 Dodawanie obrazów przy pomocy duszków 340 Pliki dźwiękowe i obrazkowe 340 Przykładowy przebieg programu „Duszki i dźwięki" 341 Kod źródłowy programu „Duszki i dźwięki" 342 Konfiguracja okna i struktury informacji 345 Dodawanie duszka 345 Zmiana wymiaru duszka 346 Konfigurowanie muzyki i dźwięków 346 Dodawanie plików dźwiękowych 346 Włączanie i wyłączanie dźwięku 347 Rysowanie w oknie postaci gracza 347 Sprawdzanie kolizji 348 Rysowanie czereśni w oknie 349 Podsumowanie 349 21 „DODGER" – GRA Z OBRAZEM I DŹWIĘKIEM 351 Powtórka z podstawowych typów danych pygame 352 Przykładowy przebieg gry „Dodger" 353 Kod źródłowy gry „Dodger" 353 Importowanie modułów 358 Konfiguracja stałych 359 Definiowanie funkcji 360 Zatrzymywanie i pauzowanie gry 360 Sprawdzanie kolizji z paskudami 361 Rysowanie tekstu w oknie 362 Inicjalizacja pygame i konfiguracja okna 362 Konfiguracja obiektów Font, Sound i Image 363 Wyświetlanie ekranu startowego 364 Rozpoczynanie gry 365 Główna pętla gry 367 Obsługa zdarzeń klawiatury 367 Obsługa ruchów myszy 369 Dodawanie nowych paskud 369 Poruszanie postacią gracza i paskudami 371 Implementacja kodów oszukiwania 372 eliminowanie paskud 373 Rysowanie okna 373 Wyświetlanie wyniku gracza 374 Rysowanie postaci gracza i paskud 374 Sprawdzanie kolizji 375 wyświetlacz z napisem Game Over 375 Modyfikowanie gry „Dodger" 376 Podsumowanie 377 SKOROWIDZ 379