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.