Jason. Cała informatyka w jednym miejscu!

Sięgniemy znowu do biblioteki "pygame" w Pythonie ułatwiającej utworzenie gry, ale teraz zajrzymy do paru metod jakie udostępnia moduł "pygame.draw", czyli programowanie rysowania obiektów. Przeczytanie pierwszej części o "pygame" wysoce przeze mnie wskazane, zanim sięgniecie po niniejszą treść.

MODUŁ "PYGAME.DRAW" I JEGO ZASTOSOWANIE PRAKTYCZNE

Gdyby ktoś się pytał czemu nazywam to "modułem", tu zostawiłem odpowiedź. Przytoczony moduł przechowuje zestaw metod odpowiedzialnych za rysowanie w oknie gry różnych prymitywnych figur płaskich takich jak prostokąt, koło czy też wielokąt. Tutaj nie znajdziecie rysowania zaimportowanych plików graficznych, za to odpowiada inny moduł, "pygame.image".

PUNKT POCZĄTKOWY WSPÓŁRZĘDNYCH

Zanim przejdziemy do omawiania przykładowych metod "pygame.draw", musimy pojąć jak wygląda sprawa ze współrzędnymi. Chodzi o to, w którym rogu znajduje się punkt początkowy (tzw. "origin"). W zależności od twórców wykorzystywanego narzędzia, może on znajdować się w lewym górnym rogu, ale może być też w lewym dolnym rogu. W "pygame", "liczenie" koordynatów rozpoczyna się od lewego górnego rogu.

Punkt początkowy współrzędnych w "pygame" w Pythonie

W "pygame", punkt początkowy ("origin") znajduje się w lewym górnym rogu.

Korzystając z tego pakietu musicie mieć na względzie, że liczymy idąc w prawo osią X oraz w dół osią Y.

ZESTAW METOD "PYGAME.DRAW"

Możemy teraz zająć się kilkoma metodami znajdującymi się w module "pygame.draw". Nie będę powtarzać tego samego ciągu, który jest wymagany w zależności od sposobu zaimportowania modułu. Wypiszę jedynie nazwy metod.

rect()

"rect" to jest rysowanie prostokąta. Metoda akceptująca za parametry zmienną przechowującą okno gry, listę z trzema liczbami całkowitymi oznaczającymi kod palety barw RGB (czerwony, zielony, niebieski) w zakresie 0-255 oraz instancję obiektu typu "pygame.Rect" przyjmującą za parametry pozycję w osi X, pozycję w osi Y, szerokość oraz wysokość:

pygame.draw.rect([okno], [200, 150, 100], pygame.Rect(24, 24, 48, 72))
Metoda "rect" w Pythonie z modułu "pygame.draw"

Przykładowy efekt wywołania metody "pygame.draw.rect".

Można bez problemu też nakładać jeden prostokąt na drugi i wtedy "schowany" będzie ten, którego wywołanie odbyło się wcześniej od drugiego.

circle()

Rysowanie koła odbywa się poprzez metodę o nazwie "circle". Przyjmuje ona cztery parametry: zmienną referencyjną okna gry, listę trzech tych samych wartości RGB, listę dwóch wartości dla określenia pozycji środka koła w dwuwymiarze (x, y), a także średnicę w pikselach jakie to koło ma przyjmować:

pygame.draw.circle([okno], [30, 100, 60], [128, 160], 32)
Metoda "circle" w Pythonie z modułu "pygame.draw"

Przykładowy efekt wywołania metody "pygame.draw.circle".

polygon()

Trzecią z prezentowanych metod jest "polygon" służącą do rysowania wielokątów, czyli możemy nie tylko nanosić na ekran trójkąty, ale również sześciokąty, ośmiokąty, osiemnastokąty i tak dalej ;). Wbrew pozorom, korzystanie z niej wcale nie jest skomplikowane. Wymaga ona trzech parametrów w postaci zmiennej przechowującej nasze okienko z grą, tę samą listę wartości RGB oraz listę list zawierających po dwie wartości każda dla ustalenia pozycji każdego z podanych wierzchołków. Powtarzam, listę list:

pygame.display.polygon([okno], [128, 255, 75], [[65, 52], [74, 80], [102, 109])
Metoda "polygon" w Pythonie z modułu "pygame.draw"

Przykładowy efekt wywołania metody "pygame.draw.polygon".

Można dostać oczopląsu od tego ostatniego parametru :D, ale nabierając wprawy przestaje nam to przeszkadzać.

ODŚWIEŻANIE EKRANU

Jeszcze jedno na sam koniec. Aby ujrzeć efekt, koniecznie dorzućcie metodę "update" (ewentualnie "flip") tym razem z modułu "pygame.display" i to najlepiej po wszystkich wywołaniach metod rysujących figury. To są metody odświeżające ekran, aby w ten sposób ukazać zmiany naniesione na okno gry:

pygame.display.update()
pygame.display.flip()

To jest tak, gdybyście przenieśli do innego katalogu jakiś plik i ujrzeli go tam dopiero po naciśnięciu przycisku "Odśwież" z menu kontekstowego, a nie automatycznie. Działanie takie same. Co się stanie, jeśli tego nie dacie? Ekran nie zostanie wyczyszczony z poprzedniej klatki, a grafika zacznie się "rozjeżdżać".


W ten sposób dotarliśmy do mety. To nie są wszystkie istniejące w "pygame.draw", tylko ich mniejsza część.

PODOBNE ARTYKUŁY