Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Ak ste vývojár hier a používate knižnicu Pygame, pravdepodobne ste sa stretli s triedou Sprite. Trieda Sprite je výkonný nástroj na vytváranie herných postáv, ktoré môžete jednoducho presúvať, otáčať a meniť ich veľkosť na obrazovke.

Pomocou jednoduchého programu Python sa môžete dozvedieť o procese vytvárania herných postáv založených na sprite v Pygame. Zistite, ako vytvoriť základnú triedu Sprite a potom pridať atribúty a metódy na ovládanie správania.

Úvod do triedy Sprite v Pygame

Trieda Sprite v Pygame je kontajnerová trieda, ktorá obsahuje všetky atribúty a správanie hernej postavy. Je odvodená od triedy Surface Pygame, ktorá predstavuje obrázok s pevnou šírkou a výškou.

Aby ste s ňou mohli pracovať, budete musieť vytvoriť novú triedu, ktorá zdedí triedu Sprite, a definovať všetky atribúty a metódy, ktoré chcete, aby vaša herná postava mala.

instagram viewer

Vytvorenie základnej triedy sprite pre hernú postavu

Najprv, nainštalujte modul pygame pomocou pip. Urobte to pomocou tohto príkazu:

pip Inštalácia pygame

Na vytvorenie základného sprite budete musieť importovať triedu Sprite z Pygame a vytvoriť novú triedu, ktorá z nej zdedí. Potom môžete definovať akékoľvek atribúty a metódy, ktoré chcete, aby vaša herná postava mala.

Môžete napríklad chcieť vytvoriť triedu Sprite pre postavu hráča, ktorá sa môže pohybovať po obrazovke doľava a doprava. Ak to chcete urobiť, môžete definovať nasledujúce atribúty:

  • pozícia: N-tica, ktorá obsahuje súradnice x a y sprita na obrazovke.
  • rýchlosť: Tuple, ktorá drží rýchlosť, ktorou sa sprite pohybuje horizontálne a vertikálne.

A nasledujúce metódy:

  • aktualizovať(): Metóda, ktorá aktualizuje polohu sprita na základe jeho rýchlosti.
  • kresliť(): Metóda, ktorá pritiahne sprite na obrazovku.

Tu je príklad základnej triedy Sprite, ktorá implementuje tieto atribúty a metódy:

importovať pygame

triedaHráč(pygame.sprite. sprite):
def__init__(self, x, y, velocity_x, velocity_y):
Super().__init__()
seba.position = (x, y)
seba.velocity = (rýchlosť_x, rýchlosť_y)

defaktualizovať(ja):
seba.pozícia = (seba.pozícia[0] + seba.rýchlosť[0], seba.pozícia[1] + seba.rýchlosť[1])

defkresliť(vlastný, povrch):
pygame.kresliť.kruh(povrch, (255, 0, 0), seba.pozícia, 10)

Metóda __init__ je špeciálna metóda v triedach Pythonu ktorý sa spustí, keď vytvoríte inštanciu triedy. Môžete ho použiť na inicializáciu atribútov inštancie.

V tomto kóde má metóda __init__ triedy Player štyri argumenty: x, y, velocity_x a velocity_y. Tieto argumenty určujú počiatočnú pozíciu a rýchlosť hráča sprite.

Metóda __init__ tiež volá metódu super().__init__(), čo je metóda __init__ nadradenej triedy Sprite. Je to potrebné, pretože trieda Player je podtriedou triedy Sprite a metóda __init__ triedy Sprite nastavuje niektoré atribúty, ktoré potrebujú všetci sprite.

Pridanie atribútov a metód na kontrolu správania

Teraz, keď máte základnú triedu Sprite, môžete pridať atribúty a metódy na ovládanie správania vašej hernej postavy. To môže zahŕňať veci ako pohyb, útok, skákanie a ďalšie.

Ak chcete pridať tieto atribúty a metódy, musíte sa zamyslieť nad tým, aké akcie chcete vo svojej hre znak, aby ste ho mohli vykonávať, a definujte zodpovedajúce atribúty a metódy vo vašom Sprite trieda.

Môžete napríklad chcieť pridať metódu na ovládanie pohybu spritu, ako je metóda move_left(), ktorá zníži rýchlosť spritu na osi x.

Tu je príklad upravenej triedy Sprite, ktorá obsahuje tieto dodatočné atribúty a metódy:

triedaHráč(pygame.sprite. sprite):
def__init__(self, x, y, velocity_x, velocity_y):
Super().__init__()
seba.position = (x, y)
seba.velocity = (rýchlosť_x, rýchlosť_y)

defaktualizovať(ja):
seba.pozícia = (seba.pozícia[0] + seba.rýchlosť[0], seba.pozícia[1] + seba.rýchlosť[1])

defkresliť(vlastný, povrch):
pygame.kresliť.kruh(povrch, (255, 0, 0), seba.pozícia, 10)

defmove_left(ja):
seba.velocity = (-1, seba.rýchlosť[1])

defpohnúť sa vpravo(ja):
seba.velocity = (1, seba.rýchlosť[1])

Ak chcete použiť triedu Player vo svojej hre Pygame, budete musieť vytvoriť inštanciu triedy a podľa potreby zavolať jej metódy.

Začnite vytvorením okna a inštancie sprite prehrávača:

# Inicializujte Pygame
pygame.init()

# Nastavte veľkosť okna
veľkosť_okna = (640, 480)

# Vytvorte okno
okno = pygame.display.set_mode (veľkosť_okna)

# Vytvorte hráča sprite
hráč = hráč(320, 240, 0, 0)

Potom definujte hlavnú hernú slučku, ktorá spracováva udalosti na klávesnici a aktualizácie a kreslí sprite. Keď stlačíte kláves so šípkou doľava alebo doprava, sprite sa bude pohybovať v príslušnom smere.

# Hlavná herná slučka
zatiaľ čoPravda:
# Zvládnite udalosti
pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
pygame.quit()
sys.exit()

ak event.type == pygame. KEYDOWN:
ak event.key == pygame. K_LEFT:
player.move_left()
elif event.key == pygame. K_RIGHT:
player.move_right()

# Aktualizujte sprite hráča
player.update()

# Vyčistite okno
window.fill((255, 255, 255))

# Nakreslite sprite hráča
player.draw (okno)

# Aktualizujte displej
pygame.display.update()

S výsledným programom budete môcť ovládať škriatka hráča a sledovať, ako sa kreslí na obrazovku na rôznych pozíciách:

Načítanie a zobrazenie grafiky Sprite pomocou obrazového modulu

Teraz, keď máte základnú triedu Sprite s atribútmi a metódami na ovládanie správania, pravdepodobne budete chcieť do svojho sprite pridať nejakú grafiku. Obrazový modul Pygame uľahčuje načítanie a zobrazenie obrázkov na obrazovke.

Ak chcete načítať obrázok, budete musieť použiť funkciu pygame.image.load(), ktorá berie cestu k súboru ako argument a vracia objekt Surface. Potom môžete tento objekt Surface priradiť atribútu sprite, ako napríklad self.image, ktorý môžete použiť na nakreslenie sprite na obrazovku.

Tu je napríklad postup, ako môžete načítať obrázok a priradiť ho k sprite:

importovať pygame

triedaHráč(pygame.sprite. sprite):
def__init__(self, x, y, velocity_x, velocity_y, image_path):
Super().__init__()
seba.position = (x, y)
seba.velocity = (rýchlosť_x, rýchlosť_y)
seba.image = pygame.image.load (cesta k obrázku)

defaktualizovať(ja):
seba.pozícia = (seba.pozícia[0] + seba.rýchlosť[0], seba.pozícia[1] + seba.rýchlosť[1])

defkresliť(vlastný, povrch):
povrch.blit(seba.obrázok, seba.pozícia)

defmove_left(ja):
seba.velocity = (-1, seba.rýchlosť[1])

defpohnúť sa vpravo(ja):
seba.velocity = (1, seba.rýchlosť[1])

Tento kód definuje triedu Player, ktorá rozširuje triedu Sprite Pygame a zahŕňa atribúty pre pozíciu, rýchlosť a obrázok, ako aj metódy na aktualizáciu polohy sprite, nakreslenie sprite na obrazovku a ovládanie pohyb.

Môžete si to overiť Úložisko GitHub pre úplný kód!

Zlepšite správu Sprite s triedou Sprite

Trieda Sprite poskytuje pohodlný kontajner pre všetky atribúty a správanie hernej postavy, čo uľahčuje aktualizáciu, kreslenie a ovládanie sprite na obrazovke.

Implementáciou triedy Sprite do vašej hry Pygame môžete zlepšiť celkový zážitok pre svojich hráčov a zefektívniť proces vývoja pre seba.