Gotowi jesteście na poznanie następnego pakietu Pythona? Rzucimy teraz okiem na pakiet "pygame" o którym z całą pewnością słyszeliście chociaż jeden raz w życiu jeśli interesuje Was programowanie (tworzenie gry w szczególności) i nauka języka Python nie od dziś. Zaznaczam na samym początku, że tu będą przedstawiane same podstawy, aby każdy czytelnik mógł przejść przez ten artykuł jak najmniej dotkliwie.

PAKIET "PYGAME" WYMAGA INSTALACJI

"pygame" w Pythonie jest jak biblioteka SDL dla języka C. Jedna z najpopularniejszych pozycji w kategorii narzędzi do tworzenia gier w Pythonie. Jednak wiem z doświadczenia, że coś co jest popularne nie zawsze jest dobre (czego nie twierdzę co do "pygame"). Istnienie tego pakietu sięga roku 2000 więc "żyje" już jakiś czas niż zdecydowana większość innych (może lepszych) narzędzi. Pakiet "pygame" umożliwi Wam utworzenie prostej gry czy wszelakiej maści multimedialnej aplikacji, czyli dowolnego oprogramowania z graficznym interfejsem.

INSTALACJA PAKIETU

Raz kolejny musimy sobie pobrać wyżej wymieniony pakiet przy pomocy systemu zarządzania pakietami "pip", gdyż "pygame" nie jest załączony do standardowej biblioteki Pythona. Uruchamiamy sobie wiersz poleceń zwany powszechnie "cmd" najlepiej włącznie z uprawnieniami administratora i wpisujemy sobie takie oto polecenie:

pip install pygame

Pakiet "pygame" waży ponad 5 MB (przynajmniej u mnie tak pisało), natomiast przy silnym łączu internetowym nie powinno to być w ogóle odczuwalne. Po wciśnięciu klawisza Enter, "pip" przejdzie do instalacji omawianego pakietu.

Instalacja pakietu "pygame" w systemie "pip" w Pythonie

Komunikat o poprawności instalacji pakietu "pygame" w systemie "pip".

Od tej pory, możecie korzystać z pakietu w kodzie źródłowym!

TWORZENIE PODSTAWOWEGO OKNA

Z "pygame" korzysta się zupełnie inaczej niż z innych pakietów ze względu na konieczność działania aplikacji w pętli "while". Dlatego też trzeba najpierw zacząć od kodu źródłowego będącego takim "pustym szablonem" każdego projektu wykorzystującego pakiet "pygame". Zacznijmy od importu modułu:

import pygame

Następną rzeczą jest utworzenie sobie obiektu okna gry. W "pygame" odpowiada za to metoda "set_mode" należąca do modułu "display". W tym pakiecie jest to zdecydowanie bardziej rozgałęzione na poszczególne moduły. Za parametr przyjmuje kolekcję razem z dwiema wartościami typu liczba całkowita (nie dwie osobne liczby całkowite!). To jest szerokość i wysokość okna.

window = pygame.display.set_mode([SZEROKOŚĆ, WYSOKOŚĆ])

Jak wspomniałem, wszystko dzieje się w pętli "while". W związku z tym należy dodać sobie zmienną logiczną i ustawić na "prawdę" ("True").

running = True

Teraz na scenę wkracza wchodzenie do pętli. Tutaj pakiet "pygame" mocno może "podnieść" stopień trudności w rozumieniu kodu. Dodam najpierw cały fragment, a pod spodem zostawię wyjaśnienia:

while running:
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			running = False

Na samej górze jest warunek wejścia do pętli "while". Ponieważ wstawiona zmienna boolowska jest ustawiona na "prawdę", wejście do pętli jest pewne. Zaraz po "przejściu przez bramkę", jest kolejną pętla, ale tym razem "for". Ona również jest niezbędna do pełnego prawidłowego działania. Ma ona za zadanie przechwytywać sygnały zdarzeń. Ale nie obiektów, tylko zdarzeń od urządzeń sterowania takich jak mysz czy klawiatura.

Pakiet "pygame" został stworzony na kształt działania biblioteki SDL i tam znajdziecie taki sam charakterystyczny zapis, aczkolwiek w bardziej przerażającej formie, gdyż tam jest występowanie wskaźników. Występuje pętla "for", gdyż w tej samej "uchwyconej" klatce może być więcej niż jedno zdarzenie. Abstrahując kompletnie, możecie na przykład w tym samym czasie przytrzymać prawy przycisk myszy i naciskać strzałkę w górę na klawiaturze. Wówczas mamy dwa zdarzenia. Dlatego też metoda "get" zwraca listę przechwyconych zdarzeń mając głównie na myśli (ale nie zawsze) urządzenia peryferyjne służące do obsługi sterowania.

Schodząc w głąb pętli "for" mamy instrukcję warunkową. Tu mamy sprawdzenie typu obecnie rozpatrywanego zdarzenia czy dotyczy on wartości "QUIT" (wiele innych "typów" zdarzeń możecie znaleźć pod tym adresem). W tym przypadku "wyjście" oznacza kliknięcie "iksa" w prawym górnym rogu, czyli zamknięcie aplikacji. Gdy takie zdarzenie zostanie przechwycone, dochodzi do ustawienia naszej flagi na "fałsz", co skutkować będzie zaprzestaniem dalszego egzekwowania całej pętli "while".

Prościej tego wyjaśnić nie można. Ostatnia rzecz w celu zbudowania "gołej" aplikacji okienkowej to wywołanie metody "quit" zaraz po pętli "while".

pygame.quit()

Czyli "posprzątanie po sobie" jako typowe zakończenie zadania procesu odpowiedzialnego za wyświetlenie i "podtrzymanie" okienka z grą. Nie zapomnijcie o tym, bo potem mogą być problemy przy ponownym uruchomieniu aplikacji, bądź też procesy mogą się mnożyć bez Waszej wiedzy i może być konieczna interwencja menedżera zadań. Zostawiam poniżej cały kod źródłowy jako "suchy" szablon dla każdego nowego projektu. Pakiet "pygame" to tak naprawdę "temat rzeka" i wstawienie kilku przykładowych metod powodowałoby zbyt dużą rozległość informacji więc traktujcie to jako wstęp.

import pygame

window = pygame.display.set_mode([640, 480])
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

pygame.quit()
Podstawowe okno aplikacji "pygame" w Pythonie

Puste działające okno aplikacji działającej w "pygame".

Mały smaczek na koniec. Możecie zmienić sobie tytuł okna gry przy użyciu metody "set_caption" poprzez moduł "display", czyli w pełni wywołanie musi wyglądać tak:

pygame.display.set_caption("Moja gra w pygame")

Nie wiem jak wygląda sprawa ze znakami diakrytycznymi, aczkolwiek osobiście bym odradzał stosowania takich znaków w tytułach "kodowych" każdego oprogramowania jako że może to nie zostać prawidłowo wyświetlone na każdym sprzęcie. Mogą być tak zwane "krzaki" albo puste pola.


To tyle póki co, jeśli chodzi o podstawy "pygame". Nic nie miałbym przeciwko programowaniu swoich gier w Pythonie gdyby nie to, że żadne narzędzie nie potrafi wyeksportować aplikacji na HTML5. Jeśli potrafi, to w bolesny i czasochłonny sposób.

PODOBNE ARTYKUŁY