Jos olet Pygame-kirjastoa käyttävä pelikehittäjä, olet todennäköisesti törmännyt Sprite-luokkaan. Sprite-luokka on tehokas työkalu pelihahmojen luomiseen, joita voit helposti siirtää, pyörittää ja skaalata näytöllä.
Yksinkertaisella Python-ohjelmalla voit oppia Sprite-pohjaisten pelihahmojen luomisprosessista Pygamessa. Opi luomaan Sprite-perusluokka ja lisää sitten attribuutteja ja menetelmiä käyttäytymisen ohjaamiseksi.
Johdatus Pygamen Sprite-luokkaan
Pygamen Sprite-luokka on konttiluokka, joka sisältää kaikki pelihahmon attribuutit ja käytökset. Se on peräisin Pygamen Surface-luokasta, joka edustaa kuvaa, jolla on kiinteä leveys ja korkeus.
Jotta voit työskennellä sen kanssa, sinun on luotava uusi luokka, joka perii Sprite-luokasta, ja määritettävä attribuutit ja menetelmät, jotka haluat pelihahmollasi olevan.
Sprite-perusluokan luominen pelihahmolle
Ensimmäinen, asenna pygame-moduuli pip: llä. Tee se tällä komennolla:
pip Asentaa pygame
Perusspriten luomiseksi sinun on tuotava Sprite-luokka Pygamesta ja luotava uusi luokka, joka perii siitä. Sitten voit määrittää mitkä tahansa attribuutit ja menetelmät, jotka haluat pelihahmollesi.
Voit esimerkiksi luoda Sprite-luokan pelaajahahmolle, joka voi liikkua vasemmalle ja oikealle ruudulla. Voit tehdä tämän määrittämällä seuraavat attribuutit:
- asema: Monikko, joka pitää spriten x- ja y-koordinaatit näytöllä.
- nopeus: Tuple, joka pitää nopeuden, jolla sprite liikkuu vaaka- ja pystysuunnassa.
Ja seuraavat menetelmät:
- päivittää(): Menetelmä, joka päivittää spriten sijainnin sen nopeuden perusteella.
- piirtää (): Menetelmä, joka vetää spriten näytölle.
Tässä on esimerkki Sprite-perusluokasta, joka toteuttaa nämä attribuutit ja menetelmät:
tuonti pygame
luokkaaPelaaja(pygame.sprite. Sprite):
def__sen sisällä__(itse, x, y, nopeus_x, nopeus_y):
super().__sen sisällä__()
itse.position = (x, y)
itse.velocity = (nopeus_x, nopeus_y)
defpäivittää(itse):
itse.position = (itse.position[0] + itse.nopeus[0], itse.position[1] + itse.nopeus[1])
defpiirtää(itse, pinta):
pygame.draw.ympyrä(pinta, (255, 0, 0), itse.position, 10)
__init__-menetelmä on erityinen menetelmä Python-luokissa joka suoritetaan, kun luot luokan esiintymän. Voit käyttää sitä ilmentymän attribuuttien alustamiseen.
Tässä koodissa Player-luokan menetelmä __init__ ottaa neljä argumenttia: x, y, nopeus_x ja nopeus_y. Nämä argumentit määrittävät pelaajaspriitin alkuperäisen sijainnin ja nopeuden.
__init__-metodi kutsuu myös super().__init__()-metodia, joka on Sprite-emoluokan __init__-metodi. Tämä on välttämätöntä, koska Player-luokka on Sprite-luokan aliluokka ja Sprite-luokan __init__-metodi määrittää attribuutteja, joita kaikki spritet tarvitsevat.
Attribuuttien ja menetelmien lisääminen käyttäytymisen ohjaamiseen
Nyt kun sinulla on Sprite-perusluokka, voit lisätä attribuutteja ja menetelmiä ohjataksesi pelihahmosi käyttäytymistä. Tämä voi sisältää asioita, kuten liikettä, hyökkäämistä, hyppäämistä ja paljon muuta.
Jotta voit lisätä nämä attribuutit ja menetelmät, sinun on mietittävä, mitä toimintoja haluat pelillesi merkin voidaksesi suorittaa, ja määritä vastaavat attribuutit ja menetelmät Sprite-sovelluksessasi luokkaa.
Voit esimerkiksi lisätä menetelmän spriten liikkeen ohjaamiseen, kuten move_left()-metodin, joka vähentää spritin nopeutta x-akselilla.
Tässä on esimerkki muokatusta Sprite-luokasta, joka sisältää nämä lisäattribuutit ja -menetelmät:
luokkaaPelaaja(pygame.sprite. Sprite):
def__sen sisällä__(itse, x, y, nopeus_x, nopeus_y):
super().__sen sisällä__()
itse.position = (x, y)
itse.velocity = (nopeus_x, nopeus_y)
defpäivittää(itse):
itse.position = (itse.position[0] + itse.nopeus[0], itse.position[1] + itse.nopeus[1])
defpiirtää(itse, pinta):
pygame.draw.ympyrä(pinta, (255, 0, 0), itse.position, 10)
defSiirry vasemmalle(itse):
itse.velocity = (-1, itse.nopeus[1])
defliiku oikealle(itse):
itse.velocity = (1, itse.nopeus[1])
Jotta voit käyttää Player-luokkaa Pygame-pelissäsi, sinun on luotava luokasta esiintymä ja kutsuttava sen menetelmiä tarpeen mukaan.
Aloita luomalla ikkuna ja Player sprite -esiintymä:
# Alusta Pygame
pygame.init()# Aseta ikkunan koko
window_size = (640, 480)# Luo ikkuna
ikkuna = pygame.display.set_mode (window_size)
# Luo pelaajaspriite
pelaaja = pelaaja(320, 240, 0, 0)
Määritä sitten pääpelisilmukka, joka käsittelee näppäimistötapahtumat ja päivittää ja piirtää spriten. Kun painat vasenta tai oikeaa nuolinäppäintä, sprite liikkuu vastaavaan suuntaan.
# Pääpelisilmukka
sillä aikaaTotta:
# Käsittele tapahtumia
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
pygame.quit()
sys.exit()
jos event.type == pygame. KEYDOWN:
jos event.key == pygame. K_LEFT:
player.move_left()
elif event.key == pygame. K_OIKEA:
player.move_right()
# Päivitä Player sprite
player.update()
# Tyhjennä ikkuna
window.fill((255, 255, 255))
# Piirrä pelaaja sprite
player.draw (ikkuna)
# Päivitä näyttö
pygame.display.update()
Tuloksena olevan ohjelman avulla voit ohjata pelaajaspriittä ja tarkkailla sen piirtymistä näytölle eri paikoissa:
Sprite-grafiikan lataaminen ja näyttäminen kuvamoduulin avulla
Nyt kun sinulla on Sprite-perusluokka, jossa on attribuutteja ja menetelmiä käyttäytymisen hallitsemiseksi, sinun kannattaa todennäköisesti lisätä grafiikkaa spriteen. Pygamen kuvamoduulin avulla on helppo ladata ja näyttää kuvia näytöllä.
Kuvan lataamiseksi sinun on käytettävä pygame.image.load()-funktiota, joka ottaa tiedostopolun argumenttina ja palauttaa Surface-objektin. Voit sitten määrittää tämän Surface-objektin sprite-attribuutille, kuten self.image, jonka avulla voit piirtää spriten näytölle.
Voit esimerkiksi ladata kuvan ja määrittää sen spritille seuraavasti:
tuonti pygame
luokkaaPelaaja(pygame.sprite. Sprite):
def__sen sisällä__(itse, x, y, nopeus_x, nopeus_y, kuvan_polku):
super().__sen sisällä__()
itse.position = (x, y)
itse.velocity = (nopeus_x, nopeus_y)
itse.image = pygame.image.load (image_path)
defpäivittää(itse):
itse.position = (itse.position[0] + itse.nopeus[0], itse.position[1] + itse.nopeus[1])
defpiirtää(itse, pinta):
pinta.blit(itse.kuva, itse.position)
defSiirry vasemmalle(itse):
itse.velocity = (-1, itse.nopeus[1])
defliiku oikealle(itse):
itse.velocity = (1, itse.nopeus[1])
Tämä koodi määrittelee Player-luokan, joka laajentaa Pygamen Sprite-luokkaa ja sisältää attribuutteja sijainnille, nopeudelle ja kuva sekä menetelmät spriten sijainnin päivittämiseen, spriten piirtämiseen näytölle ja ohjaamiseen liikettä.
Voit tarkistaa tämän GitHub repo koko koodille!
Paranna Sprite-hallintaa Sprite-luokan avulla
Sprite-luokka tarjoaa kätevän säiliön kaikille pelihahmon ominaisuuksille ja käytöksille, mikä tekee spriten päivittämisestä, piirtämisestä ja ohjaamisesta näytöllä helppoa.
Ottamalla Sprite-luokan Pygame-peliisi voit parantaa pelaajiesi yleistä kokemusta ja virtaviivaistaa kehitysprosessia itsellesi.