Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

Ha Ön a Pygame könyvtárat használó játékfejlesztő, valószínűleg találkozott már a Sprite osztállyal. A Sprite osztály egy hatékony eszköz játékkarakterek létrehozására, amelyeket könnyedén mozgathat, forgathat és méretezhet a képernyőn.

Egy egyszerű Python programmal megismerkedhetsz a sprite-alapú játékkarakterek létrehozásának folyamatával a Pygame-ben. Ismerje meg, hogyan hozhat létre alapvető Sprite-osztályt, majd adjon hozzá attribútumokat és módszereket a viselkedés szabályozásához.

Bevezetés a Pygame Sprite osztályába

A Pygame Sprite osztálya egy konténerosztály, amely egy játékkarakter összes tulajdonságát és viselkedését tartalmazza. A Pygame Surface osztályából származik, amely rögzített szélességű és magasságú képet reprezentál.

A vele való munkavégzéshez létre kell hoznia egy új osztályt, amely örököl a Sprite osztálytól, és meg kell határoznia azokat az attribútumokat és metódusokat, amelyeket a játékkarakterének használni szeretne.

Alapvető Sprite osztály létrehozása egy játékkarakter számára

Első, telepítse a pygame modult a pip segítségével. Tegye ezt ezzel a paranccsal:

csipog telepítés pygame

Egy alap sprite létrehozásához importálnia kell a Sprite osztályt a Pygame-ből, és létre kell hoznia egy új osztályt, amely örököl belőle. Ezután meghatározhat minden olyan attribútumot és metódust, amellyel a játékkarakternek rendelkeznie szeretne.

Például létrehozhat egy Sprite osztályt egy játékos karakter számára, amely balra és jobbra mozoghat a képernyőn. Ehhez a következő attribútumokat adhatja meg:

  • pozíció: Egy sor, amely a sprite x és y koordinátáit tartalmazza a képernyőn.
  • sebesség: Egy sor, amely azt a sebességet tartja, amellyel a sprite vízszintesen és függőlegesen mozog.

És a következő módszerek:

  • frissítés(): Egy módszer, amely frissíti a sprite helyzetét a sebessége alapján.
  • húz(): Egy módszer, amely a sprite-ot a képernyőre vonja.

Íme egy példa egy alap Sprite osztályra, amely megvalósítja ezeket az attribútumokat és metódusokat:

import pygame

osztályJátékos(pygame.sprite. Kobold):
def__benne__(self, x, y, sebesség_x, sebesség_y):
szuper().__benne__()
maga.pozíció = (x, y)
maga.velocity = (sebesség_x, sebesség_y)

deffrissítés(maga):
maga.position = (maga.pozíció[0] + maga.sebesség[0], maga.pozíció[1] + maga.sebesség[1])

defhúz(én, felület):
pygame.húz.kör(felület, (255, 0, 0), maga.pozíció, 10)

Az __init__ metódus egy speciális metódus a Python osztályokban amely akkor fut le, amikor létrehozza az osztály példányát. Használhatja a példány attribútumainak inicializálására.

Ebben a kódban a Player osztály __init__ metódusa négy argumentumot vesz fel: x, y, sebesség_x és sebesség_y. Ezek az argumentumok határozzák meg a játékos sprite kezdeti helyzetét és sebességét.

Az __init__ metódus meghívja a super().__init__() metódust is, amely a szülő Sprite osztály __init__ metódusa. Erre azért van szükség, mert a Player osztály a Sprite osztály egyik alosztálya, és a Sprite osztály __init__ metódusa beállít néhány attribútumot, amelyekre minden sprite-nek szüksége van.

Attribútumok és módszerek hozzáadása a viselkedés szabályozásához

Most, hogy van egy alap Sprite osztályod, attribútumokat és metódusokat adhatsz hozzá játékkaraktered viselkedésének szabályozásához. Ez magában foglalhat olyan dolgokat, mint a mozgás, támadás, ugrás stb.

Ezen attribútumok és módszerek hozzáadásához át kell gondolnia, hogy milyen műveleteket szeretne a játékban karaktert, hogy végre tudja hajtani, és határozza meg a megfelelő attribútumokat és metódusokat a Sprite-ben osztály.

Hozzáadhat például egy módszert a sprite mozgásának szabályozására, például egy move_left() metódust, amely csökkenti a sprite sebességét az x tengelyen.

Íme egy példa egy módosított Sprite osztályra, amely ezeket a további attribútumokat és metódusokat tartalmazza:

osztályJátékos(pygame.sprite. Kobold):
def__benne__(self, x, y, sebesség_x, sebesség_y):
szuper().__benne__()
maga.pozíció = (x, y)
maga.velocity = (sebesség_x, sebesség_y)

deffrissítés(maga):
maga.position = (maga.pozíció[0] + maga.sebesség[0], maga.pozíció[1] + maga.sebesség[1])

defhúz(én, felület):
pygame.húz.kör(felület, (255, 0, 0), maga.pozíció, 10)

defmenj balra(maga):
maga.velocity = (-1, maga.sebesség[1])

defMozdulj jobbra(maga):
maga.velocity = (1, maga.sebesség[1])

A Player osztály használatához a Pygame játékban létre kell hoznia egy példányt az osztályból, és szükség szerint meg kell hívnia a metódusait.

Kezdje azzal, hogy hozzon létre egy ablakot és a Player sprite példányát:

# Inicializálja a Pygame-et
pygame.init()

# Állítsa be az ablak méretét
window_size = (640, 480)

# Hozzon létre egy ablakot
ablak = pygame.display.set_mode (window_size)

# Hozzon létre egy játékos sprite-ot
játékos = játékos(320, 240, 0, 0)

Ezután határozzon meg egy fő játékhurkot, amely kezeli a billentyűzet eseményeit, frissíti és felhívja a sprite-ot. Ha megnyomja a bal vagy jobb nyílbillentyűket, a sprite a megfelelő irányba mozog.

# Fő játékhurok
mígIgaz:
# Kezelje az eseményeket
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
pygame.quit()
sys.exit()

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

# Frissítse a játékos sprite-ot
player.update()

# Törölje az ablakot
window.fill((255, 255, 255))

# Rajzold le a játékos szellemet
player.draw (ablak)

# Frissítse a kijelzőt
pygame.display.update()

Az így kapott programmal vezérelheti a játékos sprite-ot, és megfigyelheti, ahogy a képernyőre rajzolódik különböző pozíciókban:

Sprite grafika betöltése és megjelenítése a képmodul segítségével

Most, hogy van egy alap Sprite osztályod attribútumokkal és módszerekkel a viselkedés szabályozására, valószínűleg hozzá kell adni néhány grafikát a sprite-hoz. A Pygame képmodulja megkönnyíti a képek betöltését és megjelenítését a képernyőn.

Egy kép betöltéséhez a pygame.image.load() függvényt kell használnia, amely a fájl elérési útját veszi argumentumként, és egy Surface objektumot ad vissza. Ezt a Surface objektumot ezután hozzárendelheti egy sprite-attribútumhoz, például a self.image-hez, amellyel a sprite-t a képernyőre rajzolhatja.

Például a következőképpen tölthet be egy képet, és rendelheti hozzá egy sprite-hoz:

import pygame

osztályJátékos(pygame.sprite. Kobold):
def__benne__(self, x, y, sebesség_x, sebesség_y, kép_útvonala):
szuper().__benne__()
maga.pozíció = (x, y)
maga.velocity = (sebesség_x, sebesség_y)
maga.image = pygame.image.load (image_path)

deffrissítés(maga):
maga.position = (maga.pozíció[0] + maga.sebesség[0], maga.pozíció[1] + maga.sebesség[1])

defhúz(én, felület):
felület.blit(maga.kép, maga.pozíció)

defmenj balra(maga):
maga.velocity = (-1, maga.sebesség[1])

defMozdulj jobbra(maga):
maga.velocity = (1, maga.sebesség[1])

Ez a kód meghatároz egy Player osztályt, amely kiterjeszti a Pygame Sprite osztályát, és attribútumokat tartalmaz a pozícióhoz, sebességhez és kép, valamint módszerek a sprite helyzetének frissítésére, a sprite képernyőre rajzolására és vezérlésére mozgalom.

Ezt megnézheted GitHub repo a teljes kódhoz!

Javítsa a Sprite-kezelést a Sprite osztály segítségével

A Sprite osztály kényelmes tárolót biztosít a játékkarakter összes tulajdonságához és viselkedéséhez, megkönnyítve a sprite frissítését, rajzolását és vezérlését a képernyőn.

A Sprite osztály megvalósításával Pygame játékodban javíthatod a játékosok általános élményét, és egyszerűsítheted a fejlesztési folyamatot magadnak.