Podstawy PyGame

Tworzenie gier w Pythonie z wykorzystaniem biblioteki PyGame

Python, pyGame i gry

Python był i jest stosowany w różnych grach i aplikacjach. Przykładowo silnik gry Świątynia Pierwotnego Zła oskryptowany był w pythonie - kod pythona sterował całą grą. pyGame to biblioteka przeznaczona do tworzenia przenośnych gier napisanych w całości w pythonie. Bazuje na wydajnych bibliotekach SDL. Proste gry w pyGame (pisane w tydzień) można znaleźć na pyweek.org

Z wikipedii:
Pygame to stworzona przez Pete Shinnersa biblioteka graficzna przeznaczona do tworzenia gier komputerowych oraz aplikacji multimedialnych w języku Python. Do działania wymaga biblioteki SDL, przy wykorzystaniu której dostarcza modułów pozwalających na wyświetlanie grafiki, odtwarzanie dźwięków, śledzenie czasu, obsługę myszy i joysticka, obsługę CD, czy renderowanie czcionek TTF. Pygame jako nakładka na SDL jest wieloplatformowa i umożliwia pracę na różnych systemach operacyjnych m.in. na Windows, Linux, MacOS. Biblioteka Pygame stanowi wolne oprogramowanie i jest dystrybuowana na zasadach licencji LGPL.


Instalacja pyGame

W przypadku systemów linuks/unix pygame powinno być w repozytorium twojego systemu, a jeżeli nie ma to pobieramy pakiet ze strony projektu. W przypadku MS Windows pobieramy instalator (exe). pyGame możemy pobrać z tej strony.

Czy wszystko działa ?

Otwórz plik pythona o kodzie:
import pygame, sys,os
from pygame.locals import *
pygame.init()
Wykonanie go nie powinno wygenerować żadnych błędów, a jeżeli jakieś się pojawią to trzeba je usunąć.

Podstawy

W testowym kodzie powyżej zaimportowaliśmy pygame i kilka innych modułów. Ostatni wiersz zawiera:
pygame.init()
Metoda init ładuje moduły pyGame odpowiedzialne m.in. za dźwięk czy grafikę i jest podstawą każdej aplikacji korzystającej z tej biblioteki. Opis tej podobnych metod znajdziemy tutaj.

Teraz rozbudujemy kod do postaci:
import pygame, sys,os
from pygame.locals import *
pygame.init()
# utworzenie okna
window = pygame.display.set_mode((468, 60))

def input(events):
   for event in events:
      if event.type == QUIT:
         sys.exit(0)
      else:
         print event

# działaj aż do przerwania
while True:
   input(pygame.event.get())
Powyższy kod utworzy puste czarne okno. W konsoli powinniśmy widzieć komunikaty o zdarzeniach takich jak ruch myszy czy wciśnięcie klawisza. pygame.display.set_mode:
window = pygame.display.set_mode((długość, wysokość))
Ustawia rozmiar okna. Kolejny element to funkcja input reagująca na zdarzenia wysyłane między aplikacją pyGame a "odbiorcą". Jej cel w tym przykładzie to zakończenie aplikacji w przypadku otrzymania odpowiedniego sygnału i wyświetlenie komunikatu o zdarzeniu w przypadku pozostałych. Naszą aplikację kończy:
while True:
   input(pygame.event.get())
Jest to nieskończona pętla "podtrzymująca" działanie aplikacji. Dzięki niemu aplikacja pyGame będzie działała aż do wysłania sygnału zamykającego aplikację. Powyższy kod to szkielet każdej aplikacji pyGame.

Dodajemy grafikę

Rozbudowujemy nasz kod do postacji:
import pygame, sys,os
from pygame.locals import *
pygame.init()
window = pygame.display.set_mode((550, 400))

# ustawiamy etykietę
pygame.display.set_caption('Gra w pyGame')
# ładujemy plik graficzny
moja_grafika = pygame.image.load('foto.png')
# pobieramy informacje o ekranie - tle
screen = pygame.display.get_surface()
# przypisanie grafiki do określonego miejsca ekranu
screen.blit(moja_grafika, (0,0))
pygame.display.flip()

def input(events):
   for event in events:
      if event.type == QUIT:
         sys.exit(0)
      else:
         print event

while True:
   input(pygame.event.get())
W tym samym katalogu umieszczamy niewielki plik graficzny. W tym przypadku - foto.png. Powyższa modyfikacja dodaje plik graficzny do ekranu (tła). Efekt:
pygame1


Moduły pyGame

cdrom - zarządza CD-ROOMami i odtwarzaniem audio
cursors - ładuje grafiki kursora
display - kontroluje ekran lub okno aplikacji
draw - rysuje proste kształty
event - zarządza zdarzeniami (events) i kolejką zdarzeń
font - zarządza czcionkami TrueType
image - zapisuje/ładuje grafiki
joystick - obsługa joisticka
key - obsługa klawiatury
mouse - obsługa myszy
movie - odtwarzanie mpeg
sndarray - manipulowanie dźwiękiem za pomocą Numeric
surfarray - manipulowanie grafikami za pomocą Numeric
time - obsługa czasu
transform - obróbka grafiki

Przykładowa Gra

Jeden ze zwycięzców pyWeek - stworzenie gry w jeden tydzień - to gra o tytule "Trip on the Funny Boat", do pobrania ze strony pyweek (funnyboat-1.1.tar.gz lub nowsze) Po rozpakowaniu uruchamiamy poleceniem:
python main.py
pygame2
Gra polega na unikaniu rekinów i innych wrogów. Możemy strzelać do nich (spacja) oraz skakać :)
blog comments powered by Disqus

Kategorie

Strony