Spis treści:
- Instalacja Pygame i jej zrozumienie
- Inicjalizacja i moduły
- Wyświetlacze i powierzchnie: Rysowanie planszy do gry
- Obrazy i prostokąty
- Przemyślenie i opisanie zasad gry
- Tworzenie gry od podstaw
- Uruchamianie Pythona
- Tworzenie planszy do gry
- Tworzenie Wąż
- Opisywanie ruchów węży
- Uwzględnianie przeszkód – granic pola gry
- Dodawanie pożywienia dla węża
- Zwiększanie długości węża
- Dodawanie wyświetlacza wyniku
- Kod końcowy
- Co dalej?

Kurs z zatrudnieniem: „Profession Python Deweloper»
Dowiedz się więcejPygame to powszechnie używana biblioteka do tworzenia gier, kompatybilna z systemami operacyjnymi Windows, macOS, Linux i Android. Zapewnia programistom potężne narzędzia do opisywania rozgrywki i integracji różnych elementów sterujących, takich jak klawiatura, mysz i akcelerometry. Ponadto Pygame obsługuje efekty dźwiękowe i wideo, umożliwiając tworzenie angażujących i interaktywnych wrażeń z gier. Korzystanie z Pygame znacznie upraszcza proces tworzenia gier, czyniąc go dostępnym zarówno dla początkujących, jak i doświadczonych programistów.
Pygame został wydany po raz pierwszy przez Pete'a Shinnersa w październiku 2000 roku. W ciągu 22 lat istnienia biblioteka ta zgromadziła aktywną społeczność programistów, a wiele książek poświęconych pracy z Pygame zostało napisanych. Od lipca 2022 roku najnowsza stabilna wersja biblioteki to 2.1.2. Pygame nadal jest popularnym narzędziem do tworzenia gier w Pythonie, zapewniając programistom wszystkie niezbędne narzędzia. potrzebują tworzyć angażujące projekty gier.
Przyjrzyjmy się strukturze Pygame i stwórzmy naszą pierwszą grę – klasyczną grę Snake – w Pythonie. Ten projekt jest często wybierany przez studentów na kursy programowania, ponieważ pozwala im opanować podstawowe zasady tworzenia gier. Pygame to potężna biblioteka, która upraszcza tworzenie gier i aplikacji multimedialnych. W tym samouczku szczegółowo omówimy kroki wymagane do wdrożenia Snake'a, w tym konfigurację środowiska, opracowanie logiki gry i opracowanie elementów wizualnych.
Instalacja Pygame i rozpoczęcie pracy
Pygame jest wrapperem dla biblioteki SDL (Simple DirectMedia Layer), a nie samodzielną biblioteką. SDL umożliwia interakcję z różnymi urządzeniami zewnętrznymi, takimi jak mysz i klawiatura. Pygame znacznie ułatwia pracę z tymi urządzeniami programistom Pythona. Pygame sprawia, że tworzenie gier i aplikacji multimedialnych jest bardziej przystępne, pozwalając programistom skupić się na logice i projektowaniu, a nie na sprzęcie niskiego poziomu. Aspekty.
Instalacja Pygame to prosty proces. Aby to zrobić, otwórz terminal lub wiersz poleceń i wpisz polecenie pip. To polecenie automatycznie pobierze i zainstaluje Pygame na Twoim komputerze, zapewniając dostęp do wszystkich funkcji i możliwości biblioteki do tworzenia gier. Upewnij się, że masz zainstalowaną najnowszą wersję Pythona, aby uniknąć możliwych błędów instalacji.
W przypadku wystąpienia jakichkolwiek błędów instalacji zalecamy zapoznanie się z oficjalną dokumentacją. Ten zasób zawiera szczegółowe instrukcje instalacji dla różnych systemów operacyjnych i rozwiązania typowych problemów. Korzystanie z oficjalnych materiałów pomoże Ci szybko rozwiązać problemy i pomyślnie zakończyć proces instalacji.
Inicjalizacja i moduły
Biblioteka Pygame to zestaw narzędzi napisanych w Pythonie, zawierający kilka modułów, z których każdy zapewnia dostęp do różnych urządzeń. Moduły te zawierają metody niezbędne do interakcji z urządzeniami. Na przykład moduł wyświetlania odpowiada za pracę z graficznym wyjściem na ekranie, a moduł joysticka umożliwia odczyt danych o ruchach i naciśnięciach. joystick. Pygame to popularne rozwiązanie dla twórców gier, ponieważ upraszcza tworzenie grafiki i zarządzanie danymi wprowadzanymi przez użytkownika. Dzięki swojej strukturze i funkcjonalności Pygame ułatwia tworzenie interaktywnych aplikacji i gier w Pythonie, co czyni go idealnym wyborem zarówno dla początkujących, jak i doświadczonych programistów.
Po zaimportowaniu Pygame należy zainicjować bibliotekę za pomocą polecenia pygame.init(). To działanie pozwoli na wykorzystanie wszystkich metod i funkcji udostępnianych przez Pygame. Bez tej inicjalizacji kod może utracić kompatybilność międzyplatformową i nie działać w innych systemach operacyjnych. Prawidłowa inicjalizacja jest kluczowym krokiem w tworzeniu gier i aplikacji multimedialnych za pomocą Pygame.
Wyświetlacze i powierzchnie: Rysowanie planszy do gry
Oprócz modułów, Pygame oferuje kilka niezależnych od sprzętu klas Pythona. Jedną z kluczowych klas jest Surface, która reprezentuje prostokątny obszar rysowania. W praktyce klasa ta stanowi podstawę dla Tworzenie planszy do gry. Powierzchnia jest szeroko wykorzystywana w Pygame i będziemy ją również szeroko wykorzystywać podczas tworzenia gry Snake.
W Pygame wszystkie informacje są wyświetlane na planszy do gry, reprezentowanej w kodzie przez klasę display. Plansza do gry może zajmować cały ekran lub tylko jego część. Aby utworzyć wyświetlacz, należy użyć funkcji .set_mode(), która zwraca powierzchnię reprezentującą widoczny obszar okna. To właśnie ta powierzchnia jest przekazywana do funkcji rysujących, takich jak pygame.draw.circle(), a jej zawartość jest wyświetlana na ekranie za pomocą pygame.display.flip(). Choć może się to wydawać skomplikowane, w praktyce jest prostsze. Obie klasy zostaną wykorzystane w rozwoju gry Snake.
Obrazy i prostokąty
Istnieją dwa główne sposoby pracy z obrazami w Pygame: można je tworzyć bezpośrednio na ekranie lub ładować z systemu plików. Obie metody umożliwiają nadpisywanie, ładowanie i zapisywanie obrazów w różnych formatach, takich jak PNG i JPG. Korzystanie z obrazów z pliku upraszcza proces dodawania grafiki do projektów, a tworzenie obrazów od podstaw daje większą kontrolę nad ich wyglądem. Pygame obsługuje grafikę, co czyni go doskonałym narzędziem do tworzenia gier i aplikacji multimedialnych. Obrazy nie są samodzielnymi elementami. Są zintegrowane z obiektami Surface, które można modyfikować i wyświetlać na ekranach na wiele sposobów. Obiekty Surface pozwalają kontrolować sposób wyświetlania obrazów, skalowania i inne, co czyni je niezbędnymi do tworzenia atrakcyjnych wizualnie treści. Obiekty Surface w Pygame są reprezentowane jako prostokąty, co jest wspólne dla wielu innych elementów, takich jak obrazy i okna. Prostokąty odgrywają kluczową rolę w tworzeniu gier, dlatego Pygame udostępnia specjalną klasę Rect zaprojektowaną specjalnie do pracy z nimi. Klasa Rect jest używana do różnych zadań, w tym do tworzenia kształtów dla postaci, takich jak gracze i wrogowie, oraz zarządzania interakcjami między nimi. Użycie obiektów Rect upraszcza proces obsługi kolizji i interakcji w rozgrywce.
Projektowanie i opisywanie reguł gry
Przed rozpoczęciem tworzenia kodu ważne jest rozważenie podstawowych zasad rządzących rozgrywką. Przyjrzyjmy się podstawowym zasadom gry „Snake”, które wpływają na rozgrywkę. Zasady te pomogą stworzyć angażujące i zrównoważone doświadczenie, zapewniając graczom zainteresowanie i wyzwanie. Ważne jest, aby wziąć pod uwagę takie aspekty, jak sterowanie wężem, warunki zwycięstwa i porażki oraz zasady interakcji z planszą i obiektami. Te elementy są kluczowe dla stworzenia wysokiej jakości i ekscytującej gry, która przyciągnie uwagę użytkowników.
- Celem gry jest zdobycie jak największej liczby punktów poprzez zwiększanie długości węża:
- Pochłonięcie specjalnego obiektu na ekranie gry zwiększa długość węża o jeden blok;
- Gracz zaczyna od lewej strony ekranu;
- Gracz może poruszać się w lewo, prawo, górę lub dół;
- Gracz nie może wyjść poza granice ekranu; zderzenie z granicami kończy grę;
- Gra kończy się, gdy wąż zderzy się ze sobą;
- Gra kończy się również, gdy użytkownik zamknie okno.
Tworzenie gry od podstaw
Chociaż Snake jest prostą grą, proces jej tworzenia wymaga napisania znacznej ilości kodu. Podzieliliśmy tworzenie gry na sekwencyjne etapy, z których każdy odpowiada za implementację określonego elementu rozgrywki.
Uruchamianie Pythona
Do pisania kodu w Pythonie zalecamy korzystanie ze specjalistycznych edytorów tekstu. Dostępnych jest wiele opcji, które zapewniają wygodę i funkcjonalność niezbędną do efektywnego tworzenia. Wybór odpowiedniego edytora zależy od Twoich potrzeb i preferencji.
- Używaj specjalistycznych środowisk IDE: IntelliJ IDEA lub Visual Studio Code. Zalecamy tę metodę – na przykład cały kod do tego artykułu napisaliśmy w Visual Studio Code.
- Użyj terminala w systemie macOS lub Linux albo wiersza poleceń w systemie Windows. Aby to zrobić, musisz najpierw zainstalować Pythona w systemie. Pisaliśmy o tym szczegółowo w osobnym artykule.
Po zainstalowaniu i uruchomieniu Pythona musisz załadować bibliotekę Pygame. Biblioteka ta zapewnia wygodne narzędzia do tworzenia gier i aplikacji multimedialnych w Pythonie. Aby zainstalować Pygame, otwórz wiersz poleceń i wpisz pip install pygame. Po zakończeniu instalacji możesz zaimportować Pygame do swojego projektu za pomocą polecenia import pygame. Teraz możesz tworzyć pełnoprawne gry i aplikacje graficzne, korzystając z zaawansowanych funkcji tej biblioteki.
Teraz jesteśmy w pełni gotowi do rozpoczęcia tworzenia gry. Aby kontynuować pisanie kodu, musisz utworzyć pusty plik Pythona z rozszerzeniem .py. Ten plik będzie podstawą całej logiki Twojej gry i pomoże zorganizować strukturę Twojego projektu.
Tworzenie pola gry
Aby utworzyć okno gry za pomocą Pygame, musisz użyć funkcji display.set_mode(), określając żądane wymiary okna w pikselach. Ważne jest również użycie metod init() i quit(), aby poprawnie zainicjować bibliotekę na początku programu i zakończyć jego działanie na końcu. Zapewni to stabilne działanie Twojego projektu gry. Pygame oferuje wiele opcji dostosowywania i kontrolowania rozgrywki, dlatego ważne jest, aby odpowiednio zorganizować kod wokół tych funkcji.
Metoda update() służy do aktualizacji zawartości ekranu. Istnieje również metoda flip(), która wykonuje podobną funkcję. Główną różnicą między nimi jest to, że update() aktualizuje tylko wprowadzone zmiany, podczas gdy flip() odświeża cały ekran. Jednak wywołanie update() bez parametrów spowoduje również aktualizację całego ekranu. Ta wiedza jest przydatna do optymalizacji wydajności w aplikacjach graficznych, umożliwiając wybór najodpowiedniejszej metody w zależności od wymagań dotyczących aktualizacji interfejsu.
Po uruchomieniu tego kodu ekran gry zostanie natychmiast zamknięty. Dzieje się tak, ponieważ kod przechodzi do wiersza pygame.quit(), który wyłącza bibliotekę i zamyka pole gry. Aby temu zapobiec, konieczne jest użycie pętli while, która utrzyma ekran gry w działaniu i zapobiegnie jego przedwczesnemu zamknięciu. Implementując pętlę while, zapewnisz, że gra będzie działać w nieskończoność, dopóki nie zostanie spełniony warunek jej zakończenia. Pozwala to graczowi na interakcję z grą bez ryzyka jej nieoczekiwanego zamknięcia.
Dodatkowo do kodu wprowadzono dwie nowe encje: tytuł gry i funkcję monitorującą zdarzenia gry. Aby wyświetlić tytuł gry w oknie, używa się polecenia pygame.display.set_caption(»), gdzie tytuł jest określony w cudzysłowie. Funkcja event.get() umożliwia odbieranie wszystkich zdarzeń związanych z grą w terminalu, co pomaga śledzić interakcję użytkownika z rozgrywką. Te zmiany poprawiają komfort użytkowania i czynią grę bardziej interaktywną.
Uruchommy kod i przeanalizujmy wyniki.

Okno gry nie zamyka się już automatycznie. Nie możemy jednak zamknąć go ręcznie – po kliknięciu przycisku „Wyjdź” okno nie reaguje. Aby rozwiązać ten problem, musimy wprowadzić zmiany w kodzie, dodając zdarzenie QUIT, które zapewni prawidłowe zamknięcie okna.
Przycisk wyjścia działa teraz poprawnie. Po jego kliknięciu okno gry zostanie zamknięte, co ułatwia obsługę.
Tworzenie węża
Najpierw musimy zainicjować zmienne określające kolor. Zmienne te zostaną użyte do ustawienia koloru ekranu, węża i jedzenia w grze. Pygame używa standardowego schematu kolorów RGB, w którym każdy kolor powstaje z kombinacji czerwonego, zielonego i niebieskiego, których intensywność można regulować. Pozwala to na tworzenie różnorodnych schematów kolorów i dostosowywanie elementów wizualnych gry dla lepszego doświadczenia.
Nasz wąż ma kształt prostokąta, dlatego używamy funkcji draw.rect(), aby go utworzyć. Ta funkcja pozwala ustawić zarówno rozmiar, jak i kolor prostokąta, dzięki czemu idealnie nadaje się do wyświetlania węża w grze. Wybierając odpowiednie parametry, możesz stworzyć wizualnie atrakcyjny i funkcjonalny element gry.
Uruchom kod i przeanalizuj wynik.

Projekt ukończony. Na środku ekranu pojawia się niebieski kwadrat, który będzie reprezentował naszego węża.
Opis ruchów węża
Ruch węża jest kontrolowany za pomocą klasy Pygame KEYDOWN. Klasa ta obsługuje cztery główne zdarzenia odbierane z klawiatury: K_UP, K_DOWN, K_LEFT i K_RIGHT. Zdarzenia te odpowiadają ruchom węża w górę, w dół, w lewo i w prawo. Po wyzwoleniu któregokolwiek ze zdarzeń klasy KEYDOWN położenie węża ulega zmianie. Dla wygody ustawimy krok ruchu na 10 pikseli. Prawidłowe ustawienia sterowania poprawiają rozgrywkę i czynią ją bardziej angażującą.
Aby zaimplementować logikę ruchu węża, musimy zdefiniować dwie zmienne, które będą przechowywać współrzędne pierwszej komórki węża na osiach x i y. Nazwijmy je x1_change i y1_change. Zmienne te będą kontrolować ruch węża, zapewniając prawidłową aktualizację jego pozycji w przestrzeni gry.
Wąż rozpoczyna swoją podróż po planszy, eksplorując nowe terytoria. Każdy krok przybliża go do celu, a gracz musi zarządzać trasą, unikając zderzeń z granicami i własnymi ciałami. To klasyczna gra, która wymaga strategicznego myślenia i szybkich reakcji. Z każdym zebranym elementem wąż rośnie, co czyni grę bardziej ekscytującą i wymagającą. Skuteczne zarządzanie i inteligentne planowanie pomogą graczowi osiągnąć najlepsze wyniki, ciesząc się rozgrywką.

Bierzemy pod uwagę Przeszkody – granice gry. Jeśli wąż dotrze do krawędzi ekranu, gracz przegrywa, a gra się kończy. Aby zaimplementować tę regułę, można użyć instrukcji warunkowej if, która sprawdzi współrzędne x i y węża, aby ustalić, czy znajdują się one poza polem gry. Zobaczmy, jak dodać odpowiedni kod do tego sprawdzenia. Teraz, jeśli wąż dotrze do krawędzi ekranu, gra się zakończy, a na ekranie pojawi się powiadomienie o przegranej. Dodaje to element napięcia i strategii, zmuszając graczy do większej ostrożności w podejmowaniu działań, aby uniknąć zakończenia gry.

Dodawanie jedzenia dla
Teraz dodajmy element „jedzenie”. W tym celu użyjemy biblioteki random, aby jedzenie pojawiało się w losowych miejscach na planszy. W miarę jak wąż będzie mijał jedzenie, jego długość będzie się zwiększać. Zostanie to zaimplementowane w następnym kroku. Damy graczowi również możliwość zakończenia gry lub wznowienia jej po przegranej.
Teraz, po uruchomieniu gry, oprócz węża, wyświetlane będzie jedzenie, reprezentowane przez czarny kwadrat. Dodaje to nowy element do rozgrywki, pozwalając graczom zbierać jedzenie, aby wydłużyć węża i zwiększyć poziom trudności gry. Estetyka gry staje się bardziej wyrazista dzięki temu elementowi.

Gdy spełniony zostanie warunek ukończenia gry, na ekranie wyświetli się komunikat oferujący aby wyjść z gry lub rozpocząć ją ponownie. Dzięki temu gracze mogą łatwo wybrać kolejne kroki, co poprawia ogólne wrażenia z gry. Możliwość ponownego rozpoczęcia gry daje szansę na zdobycie nowych osiągnięć i pozwala graczom na wypróbowanie różnych strategii.

Zwiększenie długości węża
Uzupełnijmy nasz kod, aby zwiększyć długość ruchu węża podczas jedzenia. W tym celu utworzymy listę, która będzie przechowywać aktualną długość węża. Ważne jest również, aby pamiętać o zasadzie: jeśli głowa węża zderzy się z jego ciałem, gra się kończy. To doda grze element złożoności i realizmu, czyniąc ją bardziej angażującą dla graczy.
Zmieniliśmy kolor planszy i węża, zwiększając ich kontrast, aby poprawić percepcję wizualną. Te zmiany pomogą graczom lepiej poruszać się po grze i poprawią ogólny komfort rozgrywki. Lepszy kontrast sprawia, że elementy są bardziej zauważalne, co przekłada się na bardziej angażujące i immersyjne wrażenia z gry.

Dodawanie Wyświetlanie
Dodajmy wyświetlanie aktualnego wyniku gry. W tym celu utworzymy funkcję Your_score, która wyświetli długość węża, odejmując od niej 1. Jest to konieczne, ponieważ 1 to początkowy rozmiar węża i nie jest on uznawany przez gracza za osiągnięcie. W ten sposób gracz będzie mógł śledzić swoje postępy w grze, co pomoże zwiększyć zainteresowanie i zaangażowanie.
Zdefiniujemy regułę obliczania długości węża, odejmując 1 od jego aktualnej długości. Pozwoli nam to dokładnie śledzić zmiany w rozmiarze węża i zapewnić prawidłowe zarządzanie jego długością podczas gry.
Teraz aktualny wynik jest wyświetlany na polu gry. Dzięki temu gracze i widzowie mogą monitorować zmiany w grze w czasie rzeczywistym, znacznie poprawiając ogólne postrzeganie rozgrywki. Aktualny wynik zostanie automatycznie zaktualizowany, dostarczając dokładnych informacji o stanie meczu.

Prace nad projektem „Snake” zostały zakończone. Pomyślnie wdrożyliśmy całą zaplanowaną rozgrywkę zdefiniowaną na początku prac.
Kod końcowy
Nasz kod jest prezentowany w całości, bez żadnych komentarzy. Został opracowany zgodnie z najlepszymi praktykami i zoptymalizowany pod kątem wydajności. Dążymy do zapewnienia maksymalnej wydajności i niezawodności, dzięki czemu nasz kod jest idealnym rozwiązaniem do różnych zadań.
Co dalej?
Więcej informacji o bibliotece Pygame i jej możliwościach można znaleźć w oficjalnej dokumentacji biblioteki. Aby głębiej zanurzyć się w tworzeniu gier i poznać inne projekty, zalecamy korzystanie ze specjalistycznych książek, które pomogą Ci opanować różne aspekty tworzenia gier w Pygame.
- „Naucz się Pythona, tworząc niesamowite gry” autorstwa Ala Sweigarta;
- „Początki tworzenia gier w Pythonie i Pygame: od nowicjusza do profesjonalisty” autorstwa Willa McGoogana;
- „Programuj gry zręcznościowe: z Pythonem i Pygame” autorstwa Paula Vincenta Cravena.
Dowiedz się więcej o kodowaniu i programowaniu na naszym kanale Telegram. Subskrybuj, aby być na bieżąco z ciekawymi treściami i aktualnościami!
Przeczytaj także:
- Gdzie uczyć się Pythona: 7 kursów, które pozwolą Ci opanować język od podstaw i zdobyć pracę
- Jak napisać grę w JavaScript
- Przegląd Kubernetesa dla programistów: jego struktura, sposób działania i związek z chmurami

