Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Ja esat spēļu izstrādātājs un izmantojat Pygame bibliotēku, iespējams, esat saskāries ar Sprite klasi. Sprite klase ir spēcīgs rīks, lai izveidotu spēļu varoņus, kurus varat viegli pārvietot, pagriezt un mērogot ekrānā.

Izmantojot vienkāršu Python programmu, jūs varat uzzināt par sprite balstītu spēļu varoņu izveides procesu Pygame. Uzziniet, kā izveidot pamata Sprite klasi, pēc tam pievienojiet atribūtus un metodes, lai kontrolētu uzvedību.

Ievads Pygame Sprite klasē

Sprite klase Pygame ir konteineru klase, kurā ir visi spēles varoņa atribūti un uzvedība. Tas izriet no Pygame virsmas klases, kas attēlo attēlu ar fiksētu platumu un augstumu.

Lai ar to strādātu, jums ir jāizveido jauna klase, kas pārņem no Sprite klases, un jādefinē visi atribūti un metodes, kuras vēlaties, lai jūsu spēles varonis būtu.

Sprite pamata klases izveide spēles varoņam

Pirmkārt, instalējiet pygame moduli, izmantojot pip. Dariet to ar šo komandu:

pip uzstādīt pygame

Lai izveidotu pamata sprite, jums ir jāimportē Sprite klase no Pygame un jāizveido jauna klase, kas no tās tiek mantota. Pēc tam varat definēt jebkurus atribūtus un metodes, kuras vēlaties iegūt savam spēles varonim.

Piemēram, jūs varētu vēlēties izveidot Sprite klasi spēlētāja tēlam, kas var pārvietoties pa ekrānu pa kreisi un pa labi. Lai to izdarītu, varat definēt šādus atribūtus:

  • pozīcija: Korpuss, kas satur spraita x un y koordinātas uz ekrāna.
  • ātrums: Korpuss, kas notur ātrumu, ar kādu spraits pārvietojas horizontāli un vertikāli.

Un šādas metodes:

  • Atjaunināt(): Metode, kas atjaunina spraita pozīciju, pamatojoties uz tā ātrumu.
  • izdarīt (): Metode, kas piesaista spraitu ekrānam.

Šeit ir piemērs pamata Sprite klasei, kas ievieš šos atribūtus un metodes:

imports pygame

klasēSpēlētājs(pygame.sprite. Sprite):
def__tajā__(self, x, y, ātrums_x, ātrums_y):
super().__tajā__()
sevi.pozīcija = (x, y)
sevi.velocity = (ātrums_x, ātrums_y)

defAtjaunināt(pats):
sevi.position = (sevi.position[0] + sevi.velocity[0], sevi.position[1] + sevi.velocity[1])

defizdarīt(pats, virsma):
pygame.uzzīmēt.aplis(virsmas, (255, 0, 0), sevi.pozīcija, 10)

__init__ metode ir īpaša metode Python klasēs kas darbojas, kad veidojat klases gadījumu. Varat to izmantot, lai inicializētu gadījuma atribūtus.

Šajā kodā Player klases metodei __init__ ir četri argumenti: x, y, ātrums_x un ātrums_y. Šie argumenti nosaka spēlētāja spraita sākotnējo pozīciju un ātrumu.

Metode __init__ izsauc arī metodi super().__init__(), kas ir Sprite vecāku klases __init__ metode. Tas ir nepieciešams, jo Player klase ir Sprite klases apakšklase, un Sprite klases metode __init__ iestata dažus atribūtus, kas nepieciešami visiem spraitiem.

Atribūtu un metožu pievienošana uzvedības kontrolei

Tagad, kad jums ir pamata Sprite klase, varat pievienot atribūtus un metodes, lai kontrolētu sava spēles varoņa uzvedību. Tas var ietvert tādas lietas kā kustība, uzbrukums, lēkšana un citas lietas.

Lai pievienotu šos atribūtus un metodes, jums būs jāpārdomā, kādas darbības vēlaties spēlēt rakstzīmi, lai to varētu izpildīt, un definējiet atbilstošos atribūtus un metodes savā Sprite klasē.

Piemēram, iespējams, vēlēsities pievienot metodi spraita kustības kontrolei, piemēram, metodi move_left(), kas samazina spraita ātrumu uz x ass.

Šis ir modificētas Sprite klases piemērs, kurā ir iekļauti šie papildu atribūti un metodes:

klasēSpēlētājs(pygame.sprite. Sprite):
def__tajā__(self, x, y, ātrums_x, ātrums_y):
super().__tajā__()
sevi.pozīcija = (x, y)
sevi.velocity = (ātrums_x, ātrums_y)

defAtjaunināt(pats):
sevi.position = (sevi.position[0] + sevi.velocity[0], sevi.position[1] + sevi.velocity[1])

defizdarīt(pats, virsma):
pygame.uzzīmēt.aplis(virsmas, (255, 0, 0), sevi.pozīcija, 10)

defpārvietot_pa kreisi(pats):
sevi.velocity = (-1, sevi.velocity[1])

defkusties pa labi(pats):
sevi.velocity = (1, sevi.velocity[1])

Lai savā Pygame spēlē izmantotu Player klasi, jums ir jāizveido klases gadījums un pēc vajadzības jāizsauc tās metodes.

Sāciet, izveidojot logu un Player sprite instanci:

# Inicializējiet Pygame
pygame.init()

# Iestatiet loga izmēru
window_size = (640, 480)

# Izveidojiet logu
logs = pygame.display.set_mode (window_size)

# Izveidojiet spēlētāja spritu
spēlētājs = spēlētājs (320, 240, 0, 0)

Pēc tam definējiet galveno spēles cilpu, kas apstrādā tastatūras notikumus un atjaunina un zīmē spraitu. Nospiežot kreiso vai labo bulttaustiņu, spraite pārvietosies attiecīgajā virzienā.

# Galvenā spēles cilpa
kamērTaisnība:
# Apstrādājiet notikumus
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
pygame.quit()
sys.exit()

ja event.type == pygame. KEYDOWN:
ja event.key == pygame. K_LEFT:
player.move_left()
elifs event.key == pygame. K_RIGHT:
player.move_right()

# Atjauniniet atskaņotāja sprite
player.update()

# Notīriet logu
window.fill((255, 255, 255))

# Uzzīmējiet spēlētāja spraitu
player.draw (logs)

# Atjauniniet displeju
pygame.display.update()

Izmantojot iegūto programmu, jūs varēsiet kontrolēt atskaņotāja spritu un novērot, kā tas pievelkas ekrānam dažādās pozīcijās:

Sprite grafikas ielāde un parādīšana, izmantojot attēla moduli

Tagad, kad jums ir pamata Sprite klase ar atribūtiem un metodēm, lai kontrolētu uzvedību, jūs, iespējams, vēlēsities savam spraitam pievienot dažas grafikas. Pygame attēlu modulis ļauj ērti ielādēt un parādīt attēlus ekrānā.

Lai ielādētu attēlu, jums ir jāizmanto funkcija pygame.image.load(), kas kā argumentu izmanto faila ceļu un atgriež virsmas objektu. Pēc tam varat piešķirt šim Surface objektam sprite atribūtam, piemēram, self.image, ko varat izmantot, lai uzvilktu spraitu uz ekrānu.

Piemēram, šādi varat ielādēt attēlu un piešķirt to spraitam:

imports pygame

klasēSpēlētājs(pygame.sprite. Sprite):
def__tajā__(self, x, y, ātrums_x, ātrums_y, attēla_ceļš):
super().__tajā__()
sevi.pozīcija = (x, y)
sevi.velocity = (ātrums_x, ātrums_y)
sevi.image = pygame.image.load (image_path)

defAtjaunināt(pats):
sevi.position = (sevi.position[0] + sevi.velocity[0], sevi.position[1] + sevi.velocity[1])

defizdarīt(pats, virsma):
virsmas.blit(sevi.attēls, sevi.pozīcija)

defpārvietot_pa kreisi(pats):
sevi.velocity = (-1, sevi.velocity[1])

defkusties pa labi(pats):
sevi.velocity = (1, sevi.velocity[1])

Šis kods definē Player klasi, kas paplašina Pygame Sprite klasi un ietver pozīcijas, ātruma un atribūtus. attēlu, kā arī metodes spraita pozīcijas atjaunināšanai, spraita pievilkšanai uz ekrāna un kontrolei kustība.

Jūs varat pārbaudīt šo GitHub repo visam kodam!

Uzlabojiet Sprite pārvaldību, izmantojot Sprite klasi

Sprite klase nodrošina ērtu konteineru visiem spēles varoņa atribūtiem un uzvedībai, atvieglojot sprite atjaunināšanu, zīmēšanu un kontroli ekrānā.

Ieviešot Sprite klasi savā Pygame spēlē, jūs varat uzlabot savu spēlētāju kopējo pieredzi un racionalizēt izstrādes procesu sev.