INNE EBOOKI AUTORA
Autor:
Wydawca:
Format:
epub, mobi, ibuk
Z książki Twórz własne gry komputerowe w Pythonie dowiesz się, jak tworzyć gry komputerowe w tym popularnym języku programowania. Nawet jeżeli jest to twoje pierwsze spotkanie z programowaniem.
Zaczniesz od klasycznych gier, takich jak Szubienica, Zgadywanka Liczbowa oraz Kółko i Krzyżyk, aby następnie zająć się pisaniem bardziej zaawansowanych programów: poszukiwania skarbów w trybie tekstowym i animowanej gry zręcznościowej z efektami dźwiękowymi. Jednocześnie poznasz najważniejsze pojęcia programistyczne i matematyczne, które pomogą ci wykonać kolejny krok w karierze programisty.
Analizując wnikliwie kod wszystkich prezentowanych gier zdobędziesz solidne podstawy nie tylko w Pythonie, ale również w dziedzinie informatyki.
A może, wykorzystując ogromne możliwości Pythona, napiszesz swoją własną, oryginalną grę?
Rok wydania | 2017 |
---|---|
Liczba stron | 416 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-19400-0 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
INNE EBOOKI AUTORA
POLECAMY
Ciekawe propozycje
Spis treści
Wstęp do wydania polskiego XVII | |
WPROWADZENIE XIX | |
Dla kogo przeznaczona 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 POWŁOKA 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 liczba” 22 | |
Kod źródłowy gry „Zgadnij, jaka to liczba” 22 | |
Importowanie modułu random 24 | |
Generowanie liczb losowych za pomocą funkcji random.randint() 25 | |
Powitanie gracza 26 | |
Instrukcje związane z przepływem sterowania 27 | |
Używanie pętli do powtarzania kodu 27 | |
Grupowanie w bloki 27 | |
Pętle z instrukcjami for 28 | |
Wczytywanie próby gracza 30 | |
Konwersja wartości za pomocą funkcji int(), float() i str() 30 | |
Logiczny typ danych 32 | |
Operatory porównania 33 | |
Sprawdzanie warunku za pomocą instrukcji warunkowych 33 | |
Eksperymentowanie z wartościami logicznymi, operatorami porównania i warunkami 34 | |
Różnica mię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 | |
Wywoływanie funkcji 52 | |
Gdzie umieszczać definicje funkcji 52 | |
Łańcuchy wielowierszowe 53 | |
Jak wykonywać pętle za pomocą 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 | |
Parametry funkcji 60 | |
Wyświetlanie wyników gry 61 | |
Decydowanie, w której jaskini mieszka przyjazny smok 62 | |
Główna pętla gry 63 | |
Wywoływanie funkcji w programie 63 | |
Pytanie gracza, czy chce zagrać po raz kolejny 64 | |
Podsumowanie 65 | |
6 KORZYSTANIE Z DEBUGERA 67 | |
Rodzaje 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 lub 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 typ danych 98 | |
Dostęp do elementów przez indeksy 99 | |
Konkatenacja list 100 | |
Operator in 101 | |
Wywoływanie 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ł prawidłową 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 lub 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 za pomocą funkcji len() 121 | |
Różnica mię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 | |
Usuwanie 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 danych 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 | |
Wybó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 elementów 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 prawidłowy 207 | |
Wykonywanie ruchu na planszy 208 | |
Znajdowanie najbliższej skrzyni ze skarbami 208 | |
Usuwanie 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 informacji 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 za pomocą 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 lub odszyfrowaniu wiadomości 227 | |
Wczytywanie tekstu podanego przez gracza 227 | |
Wczytywanie klucza podanego przez 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 | |
Technika 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 prawidłowy 250 | |
Sprawdzanie każdego z ośmiu kierunków 251 | |
Sprawdzanie, czy są jakieś pionki do odwrócenia 253 | |
Sprawdzanie poprawności podanych 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ą wiele 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 różnych 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żywanie czcionek do stylizacji tekstu 299 | |
Renderowanie obiektu Font 300 | |
Ustawianie położenia tekstu za pomocą 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 kolory 317 | |
Konfiguracja struktur danych 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 szybkością programu za pomocą obiektu Clock 328 | |
Konfiguracja okna i struktur danych 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 WYKORZYSTYWANIE DŹWIĘKÓW I OBRAZKÓW 339 | |
Dodawanie obrazów za pomocą 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 danych 345 | |
Dodawanie duszka 345 | |
Zmiana rozmiaru 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 | |
Usuwanie paskud 373 | |
Rysowanie okna 373 | |
Wyświetlanie wyniku gracza 374 | |
Rysowanie postaci gracza oraz paskud 374 | |
Sprawdzanie kolizji 375 | |
Ekran z napisem Game Over 375 | |
Modyfikowanie gry „Dodger” 376 | |
Podsumowanie 377 | |
SKOROWIDZ 379 | |