Ako ste programer igara koji koristite biblioteku Pygame, vjerojatno ste naišli na klasu Sprite. Klasa Sprite moćan je alat za stvaranje likova iz igre koje možete lako pomicati, rotirati i mijenjati na zaslonu.
Pomoću jednostavnog Python programa možete naučiti o procesu stvaranja likova u igri temeljenih na spriteovima u Pygameu. Saznajte kako stvoriti osnovnu klasu Sprite, zatim dodati atribute i metode za kontrolu ponašanja.
Uvod u Pygame Sprite klasu
Klasa Sprite u Pygameu je klasa spremnika koja sadrži sve atribute i ponašanja lika iz igre. Proizlazi iz Pygameove klase Surface, koja predstavlja sliku s fiksnom širinom i visinom.
Da biste radili s njom, morat ćete stvoriti novu klasu koja nasljeđuje od klase Sprite i definirati sve atribute i metode koje želite da vaš lik u igri ima.
Stvaranje osnovne klase Sprite za lik u igri
Prvi, instalirajte pygame modul koristeći pip. Učinite to ovom naredbom:
pip instalirati pygame
Da biste stvorili osnovni sprite, morat ćete uvesti klasu Sprite iz Pygamea i stvoriti novu klasu koja nasljeđuje od nje. Zatim možete definirati sve atribute i metode koje želite da vaš lik u igri ima.
Na primjer, možda biste željeli stvoriti klasu Sprite za lika igrača koji se može pomicati lijevo i desno preko zaslona. Da biste to učinili, možete definirati sljedeće atribute:
- položaj: Torka koja sadrži x i y koordinate spritea na zaslonu.
- brzina: Torka koja sadrži brzinu kojom se lik pomiče vodoravno i okomito.
I sljedeće metode:
- Ažuriraj(): Metoda koja ažurira položaj spritea na temelju njegove brzine.
- crtati(): Metoda koja privlači duh na zaslon.
Evo primjera osnovne klase Sprite koja implementira ove atribute i metode:
uvoz pygame
razredaIgrač(pygame.sprite. Sprite):
def__u tome__(ja, x, y, brzina_x, brzina_y):
super().__u tome__()
sebe.pozicija = (x, y)
sebe.brzina = (brzina_x, brzina_y)
defAžuriraj(sebe):
sebe.pozicija = (sebe.položaj[0] + sebe.brzina[0], sebe.položaj[1] + sebe.brzina[1])
defcrtati(ja, površina):
pygame.crtati.krug(površinski, (255, 0, 0), sebe.položaj, 10)
Metoda __init__ je posebna metoda u Python klasama koji se pokreće kada kreirate instancu klase. Možete ga koristiti za inicijaliziranje atributa instance.
U ovom kodu, metoda __init__ klase Player uzima četiri argumenta: x, y, velocity_x i velocity_y. Ovi argumenti postavljaju početni položaj i brzinu spritea igrača.
Metoda __init__ također poziva metodu super().__init__(), koja je metoda __init__ roditeljske klase Sprite. Ovo je neophodno jer je klasa Player podklasa klase Sprite, a metoda __init__ klase Sprite postavlja neke atribute koji su potrebni svim spriteovima.
Dodavanje atributa i metoda za kontrolu ponašanja
Sada kada imate osnovnu klasu Sprite, možete dodati atribute i metode za kontrolu ponašanja vašeg lika u igri. To može uključivati stvari poput kretanja, napada, skakanja i više.
Da biste dodali ove atribute i metode, morat ćete razmisliti o radnjama koje želite u igri lik koji možete izvesti i definirajte odgovarajuće atribute i metode u vašem Spriteu razreda.
Na primjer, možda biste željeli dodati metodu za kontrolu kretanja spritea, kao što je metoda move_left() koja smanjuje brzinu spritea na x-osi.
Evo primjera modificirane Sprite klase koja uključuje ove dodatne atribute i metode:
razredaIgrač(pygame.sprite. Sprite):
def__u tome__(ja, x, y, brzina_x, brzina_y):
super().__u tome__()
sebe.pozicija = (x, y)
sebe.brzina = (brzina_x, brzina_y)
defAžuriraj(sebe):
sebe.pozicija = (sebe.položaj[0] + sebe.brzina[0], sebe.položaj[1] + sebe.brzina[1])
defcrtati(ja, površina):
pygame.crtati.krug(površinski, (255, 0, 0), sebe.položaj, 10)
defpomakni_lijevo(sebe):
sebe.brzina = (-1, sebe.brzina[1])
defpomaknuti se udesno(sebe):
sebe.brzina = (1, sebe.brzina[1])
Da biste koristili klasu Player u svojoj Pygame igri, morat ćete stvoriti instancu klase i pozivati njezine metode prema potrebi.
Započnite stvaranjem prozora i instance Player spritea:
# Inicijalizirajte Pygame
pygame.init()# Postavite veličinu prozora
veličina_prozora = (640, 480)# Napravite prozor
prozor = pygame.display.set_mode (veličina_prozora)
# Stvorite sprite igrača
igrač = igrač(320, 240, 0, 0)
Zatim definirajte glavnu petlju igre koja obrađuje događaje na tipkovnici i ažuriranja te crta sprite. Kada pritisnete lijevu ili desnu strelicu, sprite će se pomaknuti u odgovarajućem smjeru.
# Glavna petlja igre
dokPravi:
# Rukovanje događajima
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
pygame.quit()
sys.exit()
ako event.type == pygame. KEYDOWN:
ako event.key == pygame. K_LIJEVO:
player.move_left()
elif event.key == pygame. K_DESNO:
player.move_right()
# Ažurirajte sprite igrača
player.update()
# Očistite prozor
window.fill((255, 255, 255))
# Nacrtajte sprite igrača
player.draw (prozor)
# Ažurirajte zaslon
pygame.display.update()
S dobivenim programom moći ćete kontrolirati sprite igrača i promatrati ga kako se crta na zaslonu na različitim pozicijama:
Učitavanje i prikazivanje Sprite grafike pomoću Image Modula
Sada kada imate osnovnu Sprite klasu s atributima i metodama za kontrolu ponašanja, vjerojatno ćete htjeti dodati malo grafike svom spriteu. Pygameov slikovni modul olakšava učitavanje i prikaz slika na ekranu.
Za učitavanje slike morat ćete upotrijebiti funkciju pygame.image.load(), koja uzima putanju datoteke kao argument i vraća Surface objekt. Tada možete dodijeliti ovaj površinski objekt atributu spritea, kao što je self.image, koji možete koristiti za crtanje spritea na zaslonu.
Na primjer, evo kako možete učitati sliku i dodijeliti je spriteu:
uvoz pygame
razredaIgrač(pygame.sprite. Sprite):
def__u tome__(self, x, y, velocity_x, velocity_y, image_path):
super().__u tome__()
sebe.pozicija = (x, y)
sebe.brzina = (brzina_x, brzina_y)
sebe.image = pygame.image.load (image_path)
defAžuriraj(sebe):
sebe.pozicija = (sebe.položaj[0] + sebe.brzina[0], sebe.položaj[1] + sebe.brzina[1])
defcrtati(ja, površina):
površinski.blit(sebe.slika, sebe.položaj)
defpomakni_lijevo(sebe):
sebe.brzina = (-1, sebe.brzina[1])
defpomaknuti se udesno(sebe):
sebe.brzina = (1, sebe.brzina[1])
Ovaj kod definira klasu Player koja proširuje Pygame Sprite klasu i uključuje atribute za položaj, brzinu i slike, kao i metode za ažuriranje položaja spritea, crtanje spritea na zaslon i upravljanje pokret.
Možete pogledati ovo GitHub repo za kompletan kod!
Poboljšajte upravljanje Spriteom uz Sprite Class
Klasa Sprite pruža prikladan spremnik za sve atribute i ponašanja lika u igri, što olakšava ažuriranje, crtanje i kontrolu spritea na zaslonu.
Implementacijom klase Sprite u svoju Pygame igru, možete poboljšati sveukupno iskustvo za svoje igrače i pojednostaviti razvojni proces za sebe.