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.

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:

instagram viewer
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:
    idő = óra.get_time()
    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 (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:
    fps = óra.get_fps()
    Hozzáadhat egy szöveges objektumot a képkockasebesség megjelenítéséhez:
    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.