Jei esate žaidimų kūrėjas ir naudojate Pygame biblioteką, tikriausiai susidūrėte su „Sprite“ klase. „Sprite“ klasė yra galingas įrankis, leidžiantis sukurti žaidimo personažus, kuriuos galite lengvai perkelti, pasukti ir keisti ekrane.
Naudodami paprastą Python programą galite sužinoti apie „Pygame“ žaidimų simbolių kūrimo procesą, pagrįstą „Sprite“. Sužinokite, kaip sukurti pagrindinę „Sprite“ klasę, tada pridėkite atributų ir metodų elgsenai valdyti.
Įvadas į Pygame Sprite klasę
„Sprite“ klasė Pygame yra konteinerio klasė, kurioje yra visi žaidimo veikėjo atributai ir elgesys. Jis kilęs iš Pygame Surface klasės, kuri vaizduoja fiksuoto pločio ir aukščio vaizdą.
Norėdami su ja dirbti, turėsite sukurti naują klasę, kuri būtų paveldima iš Sprite klasės, ir apibrėžti visus atributus bei metodus, kuriuos norite turėti savo žaidimo veikėjui.
Pagrindinės „Sprite“ klasės žaidimo veikėjui kūrimas
Pirmas, įdiekite pygame modulį naudodami pip. Padarykite tai naudodami šią komandą:
pip diegti pygame
Norėdami sukurti pagrindinį sprite, turėsite importuoti Sprite klasę iš Pygame ir sukurti naują klasę, kuri paveldės iš jos. Tada galite apibrėžti bet kokius atributus ir metodus, kuriuos norite turėti savo žaidimo veikėjui.
Pavyzdžiui, galbūt norėsite sukurti „Sprite“ klasę žaidėjo veikėjui, kuris ekrane gali judėti kairėn ir dešinėn. Norėdami tai padaryti, galite apibrėžti šiuos atributus:
- pozicija: Eilė, kurioje ekrane laikomos sprito x ir y koordinatės.
- greitis: Kortelė, kuri išlaiko greitį, kuriuo sprite juda horizontaliai ir vertikaliai.
Ir šie metodai:
- atnaujinimas (): Metodas, atnaujinantis sprito padėtį pagal jo greitį.
- piešti (): Metodas, kuris pritraukia sprite prie ekrano.
Štai pagrindinės „Sprite“ klasės, kuri įgyvendina šiuos atributus ir metodus, pavyzdys:
importuoti pygame
klasėŽaidėjas(pygame.sprite. Sprite):
def__init__(savęs, x, y, greitis_x, greitis_y):
super().__init__()
savarankiškai.pozicija = (x, y)
savarankiškai.greitis = (greitis_x, greitis_y)
defatnaujinti(savarankiškai):
savarankiškai.position = (savarankiškai.position[0] + savarankiškai.greitis[0], savarankiškai.position[1] + savarankiškai.greitis[1])
defpiešti(savaime, paviršiuje):
pygame.pieškite.ratas(paviršius, (255, 0, 0), savarankiškai.pozicija, 10)
__init__ metodas yra ypatingas metodas Python klasėse kuri veikia, kai kuriate klasės egzempliorių. Galite naudoti jį inicijuodami egzemplioriaus atributus.
Šiame kode Player klasės metodas __init__ turi keturis argumentus: x, y, greitis_x ir greitis_y. Šie argumentai nustato pradinę žaidėjo sprito padėtį ir greitį.
Metodas __init__ taip pat iškviečia super().__init__() metodą, kuris yra pagrindinės Sprite klasės __init__ metodas. Tai būtina, nes Player klasė yra Sprite klasės poklasis, o Sprite klasės metodas __init__ nustato kai kuriuos atributus, kurių reikia visiems sprite.
Atributų ir metodų pridėjimas prie elgesio kontrolės
Dabar, kai turite pagrindinę „Sprite“ klasę, galite pridėti atributų ir metodų, kad valdytumėte savo žaidimo veikėjo elgesį. Tai gali apimti tokius dalykus kaip judėjimas, puolimas, šokinėjimas ir kt.
Norėdami pridėti šiuos atributus ir metodus, turėsite pagalvoti, kokių veiksmų norite atlikti žaidime simbolį, kurį galėsite atlikti, ir apibrėžti atitinkamus atributus bei metodus savo „Sprite“. klasė.
Pavyzdžiui, galbūt norėsite pridėti metodą, skirtą valdyti sprito judėjimą, pvz., metodą move_left(), kuris sumažina sprito greitį x ašyje.
Štai modifikuotos „Sprite“ klasės, kuri apima šiuos papildomus atributus ir metodus, pavyzdys:
klasėŽaidėjas(pygame.sprite. Sprite):
def__init__(savęs, x, y, greitis_x, greitis_y):
super().__init__()
savarankiškai.pozicija = (x, y)
savarankiškai.greitis = (greitis_x, greitis_y)
defatnaujinti(savarankiškai):
savarankiškai.position = (savarankiškai.position[0] + savarankiškai.greitis[0], savarankiškai.position[1] + savarankiškai.greitis[1])
defpiešti(savaime, paviršiuje):
pygame.pieškite.ratas(paviršius, (255, 0, 0), savarankiškai.pozicija, 10)
defperkelti_į kairę(savarankiškai):
savarankiškai.greitis = (-1, savarankiškai.greitis[1])
defperkelti į dešinę(savarankiškai):
savarankiškai.greitis = (1, savarankiškai.greitis[1])
Norėdami savo Pygame žaidime naudoti Player klasę, turėsite sukurti klasės egzempliorių ir prireikus iškviesti jos metodus.
Pradėkite kurdami langą ir Player sprite egzempliorių:
# Inicijuoti Pygame
pygame.init()# Nustatykite lango dydį
window_size = (640, 480)# Sukurkite langą
langas = pygame.display.set_mode (lango_dydis)
# Sukurkite žaidėjo sprite
žaidėjas = žaidėjas (320, 240, 0, 0)
Tada apibrėžkite pagrindinę žaidimo kilpą, kuri tvarko klaviatūros įvykius ir atnaujina bei piešia sprite. Kai paspausite kairįjį arba dešinįjį rodyklių klavišus, sprite judės atitinkama kryptimi.
# Pagrindinė žaidimo kilpa
kolTiesa:
# Tvarkykite įvykius
dėl įvykis in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
pygame.quit()
sys.exit()
jeigu event.type == pygame. KEYDOWN:
jeigu event.key == pygame. K_LEFT:
player.move_left()
elifas event.key == pygame. K_RIGHT:
player.move_right()
# Atnaujinkite grotuvo sprite
player.update()
# Išvalykite langą
window.fill((255, 255, 255))
# Nupieškite žaidėjo sprite
player.draw (langas)
# Atnaujinkite ekraną
pygame.display.update()
Naudodami gautą programą galėsite valdyti grotuvo sprite ir stebėti, kaip jis traukiasi į ekraną skirtingose padėtyse:
„Sprite“ grafikos įkėlimas ir rodymas naudojant vaizdo modulį
Dabar, kai turite pagrindinę „Sprite“ klasę su atributais ir elgesio valdymo metodais, tikriausiai norėsite pridėti šiek tiek grafikos prie savo „Sprite“. Pygame vaizdo modulis leidžia lengvai įkelti ir rodyti vaizdus ekrane.
Norėdami įkelti vaizdą, turėsite naudoti funkciją pygame.image.load(), kuri kaip argumentą paima failo kelią ir grąžina Surface objektą. Tada galite priskirti šį „Surface“ objektą „sprite“ atributui, pvz., „self.image“, kurį galite naudoti norėdami nupiešti „Sprite“ ekrane.
Pavyzdžiui, štai kaip galite įkelti vaizdą ir priskirti jį sprite:
importuoti pygame
klasėŽaidėjas(pygame.sprite. Sprite):
def__init__(savęs, x, y, greitis_x, greitis_y, vaizdo_kelias):
super().__init__()
savarankiškai.pozicija = (x, y)
savarankiškai.greitis = (greitis_x, greitis_y)
savarankiškai.image = pygame.image.load (image_path)
defatnaujinti(savarankiškai):
savarankiškai.position = (savarankiškai.position[0] + savarankiškai.greitis[0], savarankiškai.position[1] + savarankiškai.greitis[1])
defpiešti(savaime, paviršiuje):
paviršius.blit(savarankiškai.vaizdas, savarankiškai.pozicija)
defperkelti_į kairę(savarankiškai):
savarankiškai.greitis = (-1, savarankiškai.greitis[1])
defperkelti į dešinę(savarankiškai):
savarankiškai.greitis = (1, savarankiškai.greitis[1])
Šis kodas apibrėžia žaidėjų klasę, kuri išplečia Pygame Sprite klasę ir apima pozicijos, greičio ir atributus. vaizdą, taip pat sprite padėties atnaujinimo, sprite pritraukimo prie ekrano ir valdymo metodus judėjimas.
Galite tai patikrinti „GitHub“ atpirkimas visam kodui!
Pagerinkite „Sprite“ valdymą naudodami „Sprite“ klasę
„Sprite“ klasė suteikia patogią talpyklą visoms žaidimo veikėjo savybėms ir elgesiui, todėl ją lengva atnaujinti, piešti ir valdyti ekrane.
Įdiegę „Sprite“ klasę savo Pygame žaidime, galite pagerinti bendrą žaidėjų patirtį ir supaprastinti kūrimo procesą sau.