🐍Python🐍 zajęcia 11
- biblioteka PyGame Zero - podstawowa charakterystyka
- 📌program - odbijanie napisów od ścianek okna
- 📌program - ping pong
PyGame Zero
- jest uproszczoną wersją PyGame
- Pygame to biblioteka Pythona do tworzenia gier 2D i prostych aplikacji multimedialnych.
- Opiera się na SDL (Simple DirectMedia Layer).
- Obsługuje grafikę, dźwięk, zdarzenia z klawiatury i myszy
- link do dokumentacji biblioteki: https://pygame-zero.readthedocs.io/en/stable/index.html#
Charakterystyka:
- instalacja: pip3 install pgzero
- import: import pgzrun
- struktura kodu:
- import bibliotek
- rozmiar i parametry okna
# rozmiar okna - pozniej wrzucimy to do osobnego pliku
WIDTH = 800
HEIGHT = 600
screen = pgzero_screen.Screen(display.set_mode((WIDTH, HEIGHT), 0))
- funkcje własne
class Pilka(Actor):
def __init__(self, obrazek, polozenie):
super().__init__(obrazek, polozenie)
self.ruch_x = 3
self.ruch_y = 3
- obiekty
paletka1 = Paletka("paletka.png", (WIDTH -50 , HEIGHT // 2))
paletka2 = Paletka("paletka.png", (50, HEIGHT // 2))
pilka = Pilka("pilka.png", (100, 120))
- aktualizacja stany obiektów:
def update():
# tu aktualizujemy stan obiektow
- rysowanie obiektów (łączymy je z metodami)
def draw():
# tu je rysujemy
screen.clear()
paletka1.draw()
paletka2.draw()
pilka.draw()
- wywołanie pętli gry
# wywołanie pętli gry
pgzrun.go()
- colliderectangle - funkcja do reakcji po kolizji obiektów ( nie trzeba podawać ich współrzędnych)
💡Ciekawostki:
- tworząc programy w tej bibliotece powinniśmy korzystać z obrazów w formacie PNG ponieważ obsługują przeźroczystość
- układ współrzędny obiektów rozpoczyna się w ich lewym dolnym rogu, a y rośnie "do dołu"
- klasy tworzymy powyżej części "def update"
- czcionki - zmiana czcionki tekstu jest możliwa tylko w obrębie czcionek które mamy zaimportowane (można stworzyć specjalny folder dedykowany czcionkom i z niego korzystać)
- warto korzystać z bibliotek, które są częściej aktualizowane (przypadek pygame-ce i pygame-me(aktualizowana rok temu))
💡Warto zapamiętać:
from ____folder____ import * <- pobiera całą zawartość pliku
📌 Program - napisy w różnym kolorze:

kod:
import pgzrun
from pygame import display
from pgzero import screen as pgzero_screen
from pgzero.builtins import keyboard
import random
# rozmiar okna - pozniej wrzucimy to do osobnego pliku
WIDTH = 800
HEIGHT = 600
screen = pgzero_screen.Screen(display.set_mode((WIDTH, HEIGHT), 0))
# pygame uruchamia pętlę gry automatycznie
# ... ale potrzebuje do tego odpowiednio nazwanych funkcji.
# Korzystamy z funkcji update i draw.
class MojTekst():
def __init__(self, wsp_x:int, wsp_y:int, tekst: str, kolor: str = "red") -> None:
self.x = wsp_x
self.y = wsp_y
self.tekst = tekst
self.ruch_x = 3
self.ruch_y = 3
self.kolor = kolor
def narysuj_tekst(self):
screen.draw.text(self.tekst, (self.x, self.y), fontsize = 50, color= "green")
def przesun_tekst(self):
self.x += self.ruch_x
self.y += self.ruch_y
if self.x > WIDTH or self.x < 0:
self.ruch_x = self.ruch_x * -1
if self.y > HEIGHT or self.y < 0:
self.ruch_y = self.ruch_y * -1
hello = MojTekst(100, 300, "Hello!")
napisy = []
for _ in range(6):
x = random.randrange(50,750)
y = random.randrange(50,550)
napis = "hello"
napisy.append(MojTekst(x, y, napis))
def update():
# tu aktualizujemy stan obiektow
for napis in napisy:
napis.przesun_tekst()
def draw():
# tu je rysujemy
screen.clear()
screen.draw.circle((WIDTH/2, HEIGHT/2), 30, "white")
for napis in napisy:
napis.narysuj_tekst()
# wywołanie pętli gry
pgzrun.go()