Rozdział 20 · Tworzenie gier z Pygame

Rect: pozycja, rozmiar i współrzędne

pygame.Rect utrzymuje pozycję i rozmiar razem, a oś Y na ekranie rośnie w dół — w przeciwieństwie do Turtle i matematyki na papierze.

Już wspomnieliśmy pygame.Rect w sekcji 20.3 jako sposób przechowywania pozycji i rozmiaru razem. Czas poznać go naprawdę — i przy okazji zrozumieć, jak w Pygame działa układ współrzędnych.

pygame.Rect

rect_osnovy.py
igrok_rect = pygame.Rect(100, 200, 40, 40)   # x, y, szerokość, wysokość

print(igrok_rect.x, igrok_rect.y)       # lewy górny róg
print(igrok_rect.center)                # środek — krotka (x, y)
print(igrok_rect.right, igrok_rect.bottom)   # prawy i dolny krawędź

igrok_rect.x += 5        # przesunąć cały prostokąt w prawo
igrok_rect.center = (300, 300)   # lub natychmiast ustawić nowy środek

Rect jest wygodna właśnie dlatego, że nie zmusza do ręcznego zapamiętywania cztery oddzielne zmienne (x, y, ширина, высота) i przeliczaj granice obiektu samodzielnie — za to odpowiadają gotowe atrybuty, takie jak .right, .center, .bottom.

System współrzędnych: świat i ekran

W Pygame punkt (0, 0) to lewy górny róg ekranu, a oś jest Y rośnie na ziemię, nie w górę. Warto o tym pamiętać, zwłaszcza po Turtle (Rozdziały 6–7, 12 i 19), gdzie oś Y rośnie w górę, jak w matematyce na papierze:

Matematyka / TurtlePygame
Pochodzenie (0, 0)Ekran centralnyLewy górny róg
Kierunek wzrostu YUpDown
„Skok w górę”y rośniey się zmniejsza

Stąd początkowe zamieszanie: kod „skoku” y -= skorost_pryzhka, nie y += — Bo "wyżej na ekranie" oznacza "niższą wartość Y".

Współrzędne świata kontra ekran
W grach z przewijaniem (przewijany poziom, kamera podążająca za bohaterem) warto rozróżnić między świat współrzędne obiektu (jego położenie w całym świecie gry) oraz na ekranie współrzędne (gdzie dokładnie są narysowane na aktualnie widocznej części ekranu) są takie same tylko tak długo, jak kamera się nie porusza. W projektach tej książki kamera jest nieruchoma, więc współrzędne świata i ekranu są tym samym, ale w dużych grach to rozdzielenie jest standardową częścią architektury.
Praktyka: Rect i współrzędne
Zeskanowanie bezpośrednio w przeglądarce – nie wymaga instalacji Pygame
Otwórz praktykę →