Szeretett volna valaha egy izgalmas játékot létrehozni a Python PyGame könyvtárával, de úgy érezte, hogy túlterheli az időgazdálkodás koncepciója? Ha igen, nem vagy egyedül.
Az idő a játékfejlesztés egyik legkritikusabb összetevője, és az idő működésének megértése a PyGame-ben elengedhetetlen a vonzó és sikeres játékok létrehozásához. A PyGame számos hasznos funkciót és modult kínál, amelyek lehetővé teszik az idő szabályozását a játékokban.
Egyszerű játék létrehozása
Kezdje egy egyszerű játék létrehozásával, amelyben egy téglalap jobbra mozog. Kezdeni, telepítse a pip-t a készülékére és használja az alábbi parancsot a PyGame modul telepítéséhez:
pip install pygame
Ebben megtalálja az összes kódpéldát GitHub repó.
A telepítés után importálja a PyGame modult. Ezután hozzon létre egy 800x600 méretű és fehér háttérszínű képernyőt, és adjon hozzá egy egyenes objektumot. A kódnak valahogy így kell kinéznie:
import pygame
pygame.init()
képernyő = pygame.display.set_mode((800, 600))
háttér = pygame. Felület (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)
Ezt követően használjon egy while ciklust a játék futásának folytatásához, és tartsa az egyenes tárgyat jobbra, amíg el nem éri a képernyő végét.
futás = Igaz
míg futás:
számára esemény ban ben pygame.event.get():
ha event.type == pygame. KILÉPÉS:
futás = Hamis
rect.x += 1
ha rect.x > 780:
rect.x = 0
screen.blit (háttér, (0, 0))
pygame.draw.rect (képernyő, (0, 0, 0), helyes)
pygame.display.update()
Hozzáadhat felhasználói bemeneteket és ütközések a játékban. Alább látható a kimenet:
A PyGame időmoduljának áttekintése
Az idő szabályozásához ebben a játékban használhatja a pygame.time modult. Ez a modul számos hasznos funkciót kínál, beleértve a Óra objektum olyan módszerekkel, mint get_ticks(), várjon(), és késleltetés(). Ezekkel a funkciókkal könnyedén szabályozhatja az időt a játékban.
Óraobjektum létrehozása az idő követéséhez
A PyGame-ben egy Clock objektumot használhat az idő követésére. Óra létrehozásához egyszerűen használja a következő kódsort:
óra = pygame.time. Óra()
Ezzel az Óra objektummal most nyomon követheti az időt a játékban. Számos más hasznos funkció is kapcsolódik az Óra objektumhoz, például:
-
get_time(): Ennek a funkciónak a segítségével lekérheti a játék egyes képkockáihoz szükséges időt. A funkció használatához egyszerűen adja hozzá a következő kódsort a while ciklus után:
Adjon hozzá egy szöveges objektumot az eltelt idő megjelenítéséhez:idő = óra.get_time()
font = pygame.font. SysFont("Arial", 18)
text = font.render("Eltelt idő: {} ms".formátum (idő), Igaz, (0, 0, 0))
screen.blit (szöveg, (0, 0)) -
ketyegés(): Ezzel a funkcióval beállíthatja a játék képkockasebességét. Alapértelmezés szerint a képkockasebesség 60 FPS. A 30 FPS beállításához egyszerűen adja hozzá a következő kódsort:
clock.tick(30)
-
get_fps(): A get_fps segítségével lekérheti a játék aktuális képkockasebességét. A funkció használatához egyszerűen adja hozzá a következő kódsort:
Hozzáadhat egy szöveges objektumot a képkockasebesség megjelenítéséhez:fps = óra.get_fps()
font = pygame.font. SysFont("Arial", 18)
text = font.render("FPS: {}".formátum (fps), Igaz, (0, 0, 0))
screen.blit (szöveg, (0, 20)) -
tick_busy_loop(): Ez a függvény lehetővé teszi annak kiszámítását, hogy hány ezredmásodperc telt el az utolsó hívás óta ketyegés() funkció. Használatához egyszerűen adja hozzá a következő kódsort:
clock.tick_busy_loop(30)
Időkeresés a get_ticks használatával
A get_ticks() függvény visszaadja a PyGame inicializálása óta eltelt időt ezredmásodpercben. A funkció használatához adja hozzá a következő kódsort:
time_elapsed = pygame.time.get_ticks()
Adjon hozzá egy szöveges objektumot az eltelt idő megjelenítéséhez:
font = pygame.font. SysFont("Arial", 18)
text = font.render("Eltelt idő: {} ms".formátum (eltelt idő), Igaz, (0, 0, 0))
screen.blit (szöveg, (0, 40))
Az eltelt időt felhasználhatja olyan időalapú játékelemek megvalósítására, mint például a meghatározott ideig tartó bekapcsolás. Például megvalósíthat egy bekapcsolást, amely 5 másodpercre növeli az egyenes objektum sebességét:
ha eltelt idő / 5000 > 0:
rect.x += 5
Alább látható a kimenet:
A játék szüneteltetése A várakozási és késleltetési funkciók használata
A PyGame két olyan funkciót is biztosít, amelyek segítségével a játékot meghatározott ideig szüneteltetheti: a várjon funkció és a késleltetés funkció.
Használatához a várjon függvényt, egyszerűen adja hozzá a következő kódsort a while ciklusba:
pygame.time.wait(1000)
Ezzel 1000 milliszekundumra (1 másodpercre) szünetel a játék. Használatához a késleltetés függvényt, egyszerűen adja hozzá a következő kódsort a while ciklusba:
pygame.time.delay(1000)
Ez 1000 ezredmásodperccel (1 másodperc) késlelteti a játék következő képkockáját.
A várakozás és a késés közötti különbségek
Van néhány különbség a között várjon és késleltetés funkciókat. A várjon funkció leállítja a folyamatot, hogy megosszák a processzort más programokkal. A késleltetés funkció a processzort használja a késleltetés pontosabbá tételére. Ez azt jelenti, hogy a késleltetés funkció több processzorteljesítményt igényel, mint a várjon funkció, és olyan játékokhoz alkalmas, amelyek pontos időzítést igényelnek.
Esemény létrehozása a set_timer használatával
Használhatja a set_timer() függvényt olyan esemény létrehozásához, amely meghatározott idő után aktiválódik.
A PyGame eseményei olyan objektumok, amelyek információkat tartalmaznak a felhasználói bevitelről vagy a program által generált üzenetekről. A funkció használatához hozzon létre egy egyéni eseményt, és adja hozzá a következő kódsort:
pygame.time.set_timer (CUSTOM_EVENT, 1000)
Ez olyan eseményt hoz létre, amely 1000 ezredmásodperc – 1 másodperc múlva – aktiválódik. Különféle típusú eseményeket indíthat el, például egérmozgást, billentyűzetbevitelt és ablakeseményeket. A kód ezután a legmegfelelőbb módon reagálhat ezekre az eseményekre.
Például, ha meg szeretné változtatni a rect objektum y tengelyét 1 másodperc után, vagy amikor az egyéni esemény aktiválódik, akkor hozzáadhatja a következő kódsort:
ha event.type == CUSTOM_EVENT:
rect.y += 20
Így egyszerűen hozhat létre időalapú eseményeket a játékban, amelyek segítségével érdekes és kihívásokkal teli játékmenetet hozhat létre.
A játékvezérlők javítása idővel
Az időszabályozás segítségével javíthatja a játék vezérlését. Használhatja az időt a gyorsítási, lassítási és akár a játék vége feltételeinek megvalósítására. Sok játék bevezeti a bullet time fogalmát, ahol az akció rövid időre lelassul.
A PyGame idővezérlési funkcióival könnyedén implementálhatja ezeket a funkciókat – és még sok mást – a saját játékaiban.