Ismerje meg, hogyan mérheti az időt, és hogyan használhatja azt a játék különböző aspektusainak vezérlésére.

A játékfejlesztésben az időalapú események hozzáadása nagymértékben javíthatja a játék mechanikáját, és vonzóbbá teheti a játékokat a játékosok számára. Az időzítők beépítésével kihívásokat vezethet be, időkorlátos célokat hozhat létre, vagy sürgőssé teheti bizonyos játékelemeket.

Hozzon létre egy egyszerű játékot

Kezdje egy egyszerű játék létrehozásával, hogy megértse az alapokat. Építs egy játékot, ahol a játékos balra és jobbra mozoghat, és egyetlen platform lesz. Hozzon létre egy új nevű fájlt simple-game.py és importálja az arcade modult, amely biztosítja a játék létrehozásához szükséges funkciókat.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Ezután határozza meg a GameWindow osztály, amely alosztálya árkád. Ablak. A GameWindow osztályon belül határozza meg a __benne__ módszer, amely inicializálja az ablakot a megadott szélességgel, magassággal és címmel.

instagram viewer

A on_key_press A módszer érzékeli a bal vagy jobb nyílbillentyű lenyomását. A bal oldali megnyomás csökken játékos_x 10 egységgel, míg a jobb oldali megnyomása 10 egységgel növeli. Ez lehetővé teszi a játékos mozgását vízszintesen a játékablakon belül.

A játék futtatásához határozza meg a fő funkciót, hozzon létre egy példányt a GameWindowból, hívja meg a setup metódust a játékablak beállításához, és végül indítsa el a játék ciklust a arcade.run().

Az időzítő osztály szerkezetének megtervezése

Az időzítők játékban való megvalósításához létrehozhat egy Timer osztályt a szükséges attribútumokkal és metódusokkal. Ez az osztály funkciókat biztosít az időzítő elindításához, leállításához, az eltelt idő lekéréséhez és annak ellenőrzéséhez, hogy az időzítő lejárt-e. Íme az időzítő osztály alapvető felépítése:

import idő

osztályIdőzítő:
def__benne__(én, időtartam):
self.duration = időtartam
self.start_time = 0
self.is_running = Hamis

defRajt(maga):
self.start_time = time.time()
self.is_running = Igaz

defállj meg(maga):
self.is_running = Hamis

defget_elapped_time(maga):
ha self.is_running:
Visszatérés time.time() - self.start_time
Visszatérés0

deflejárt(maga):
Visszatérés self.get_elapsed_time() >= self.duration

Az Időzítő osztály a időtartama paraméter másodpercben az inicializálás során. Az osztály olyan attribútumokat tartalmaz, mint pl kezdési idő az időzítő indulásának időpontjának tárolásához, és fut az időzítő állapotának nyomon követéséhez.

A Rajt() metódus a start_time értéket az aktuális időre állítja be a használatával time.time() és beállítja az is_running to Igaz. A állj meg() metódus egyszerűen beállítja az is_running értéket Hamis. A get_elapsed_time() metódus úgy számítja ki az eltelt időt, hogy kivonja az aktuális időből a start_time értéket.

Ha az időzítő fut, visszaadja az eltelt időt; ellenkező esetben 0-t ad vissza. A is_expired() A módszer ellenőrzi, hogy az eltelt idő nagyobb-e vagy egyenlő-e az időtartammal, jelezve, hogy az időzítő lejárt.

Visszaszámláló időzítők megvalósítása

A visszaszámlálás bemutatásához a játékban elindíthatja az időzítőt, amikor a játékos megnyom egy adott billentyűt, például a szóköz billentyűt. Nyomtassa ki a visszaszámlálást a konzolig a Python print parancsával. Hozzon létre egy új nevű fájlt timer.py és adja hozzá a kódot ezekkel a frissítésekkel:

import idő

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
szuper().__init__(WIDTH, HEIGHT, "Egyszerű játék")
self.player_x = SZÉLESSÉG // 2
self.player_y = HEIGHT // 2
self.timer = Időzítő(10)

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. HELY:
self.timer.start()

defon_draw(maga):
# Meglévő kód
ha self.timer.is_running:
eltelt_idő = self.timer.get_elapsed_time()
r_time = self.timer.duration – eltelt_idő
hátralévő_idő = max (r_time, 0)
nyomtatás(f" Visszaszámlálás: {hátralévő idő:.1f} másodperc")

Győződjön meg arról, hogy a terminálablak és a játékablak egyszerre látható. Ezután nyomja meg a szóköz billentyűt, és megjelenik az időzítő visszaszámlálása:

Időzítő események kezelése és kiváltó műveletek

Kiválthat olyan funkciót is, amely téglalapot rajzol amikor a visszaszámláló lejár. Hozzon létre egy új nevű fájlt hand-event.py és adja hozzá a kódot az alábbi frissítésekkel:

defon_draw(maga):
# Meglévő kód
ha self.timer.is_expired():
self.draw_rectangle()

defrajzol_téglalap(maga):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, piros)

Alább látható a kimenet:

Az időzítő szüneteltetése, visszaállítása és folytatása

Az időzítő szüneteltetéséhez, alaphelyzetbe állításához és folytatásához szükséges funkciók hozzáadásához meghosszabbíthatja az időzítőt Időzítő osztály megfelelő módszerekkel. Íme egy példa:

osztályIdőzítő:
# Meglévő kód

defszünet(maga):
self.duration -= self.get_elapsed_time()
self.is_running = Hamis

defVisszaállítás(maga):
self.start_time = 0
self.is_running = Hamis

defönéletrajz(maga):
self.start_time = time.time()
self.is_running = Igaz

Vizuális visszajelzés hozzáadása az időzítőhöz

Az időzítő vizuális visszajelzéséhez szöveges vagy grafikus elemeket építhet be a játék képernyőjén. Hozzon létre egy új nevű fájlt visual.py és adja hozzá a kódot az alábbi frissítésekkel:

defon_draw(maga):
# Meglévő kód
ha self.timer.is_running:
szöveg = f" Visszaszámlálás: {hátralévő idő:.1f} másodperc"
arcade.draw_text (szöveg, 10, 10, fekete, 18)

Az időzítőt most közvetlenül a játékablakban fogja látni a konzol helyett:

Kiegészítő funkciókkal együtt

Az időalapú események továbbfejlesztése érdekében fontolóra veheti a következő további funkciók bevezetését a játékaiba.

Időalapú teljesítménynövelések vagy bónuszok

Vezess be erőnöveléseket vagy bónuszokat, amelyek rendszeresen megjelennek a játék során. Ezek az erők ideiglenes képességeket, extra pontokat, megnövelt sebességet vagy továbbfejlesztett fegyvereket biztosíthatnak.

Azáltal, hogy időben korlátozottak, a játékosoknak stratégiailag össze kell gyűjteniük őket egy adott időkereten belül, hogy előnyhöz jussanak. Ez izgalmat ad, és jutalmazza a gyors gondolkodást.

Időben korlátozott kihívások

Hozzon létre időkorlátos kihívásokat, ahol a játékosoknak egy adott időkereten belül kell elvégezniük egy feladatot. Például egy rejtvény vagy platform, amelyet adott időn belül kell megoldani.

Ez arra készteti a játékosokat, hogy gyorsan gondolkodjanak és cselekedjenek, és izgalmassá teszi a játékmenetet. Ezeknek a kihívásoknak a sikeres teljesítése jutalmakat nyithat, vagy előrehaladhat a történetben.

Időzített akadályok vagy ellenségek

Valósíts meg időzített akadályokat vagy ellenségeket, amelyek veszélyt jelentenek a játékosra. Például mozgó platformok, amelyek rendszeres időközönként jelennek meg és tűnnek el, vagy ellenségek, amelyek korlátozott ideig legyőzhetetlenek lesznek.

A játékosoknak helyesen kell időzíteniük akcióikat és mozdulataikat, hogy eligazodjanak ezeken az akadályokon, vagy legyőzzék az ellenséget, mielőtt lejárna az idő. Ez stratégiai és koordinációs réteget ad a játékmenethez.

Bevált gyakorlatok időalapú eseményekhez

Amikor időalapú eseményeket alkalmaz a játékaiban, elengedhetetlen, hogy kövesse ezeket a bevált gyakorlatokat.

Teszt és egyensúly

Tesztelje alaposan az időalapú eseményeit, hogy megbizonyosodjon arról, hogy igazságosak és kiegyensúlyozottak. Finomhangolja az időtartamot, a nehézséget és a jutalmakat, hogy élvezetes játékélményt teremtsen.

Felhasználói visszajelzések

Adjon egyértelmű és intuitív visszajelzést a játékosoknak az időzítő állapotáról és az időalapú eseményekről. Hangeffektusok hozzáadása, vizuális indikátorok vagy szöveges jelzések segíthetnek a játékosoknak megérteni az időkorlátokat és tetteik következményeit.

Következetes időmérés

Használjon következetes időmérési rendszert a játék során. Például használja a másodpercet minden időzítő és idővel kapcsolatos számítás mértékegységeként. Ez biztosítja a következetességet és a könnyebb érthetőséget mind a játékosok, mind a fejlesztők számára.

Kezelje az Edge tokot

Fontolja meg azokat a forgatókönyveket, amelyekben a játék szünetelhet, minimalizálható vagy a háttérben fut. Kezelje ezeket a helyzeteket kecsesen, hogy fenntartsa a pontos időzítést és megakadályozza a nem kívánt viselkedést a játék folytatásakor.

A bevált gyakorlatok követésével időalapú eseményeket hozhat létre, amelyek javítják a játékmenetet, kihívást jelentenek a játékosoknak, és kiegyensúlyozott és élvezetes élményt nyújtanak.

Tedd szórakoztatóbbá a játékokat időalapú eseményekkel

Ha időalapú eseményeket épít be a játékaiba, dinamikus és lebilincselő élményt teremthet a játékosok számára. Az időkorlátos kihívások izgalmat és sürgősséget okoznak, míg az időzített bekapcsolások vagy akadályok stratégiai döntéshozatali lehetőségeket teremthetnek.

Kísérletezzen különböző időalapú mechanikával, hogy megtalálja a megfelelő egyensúlyt a játékához, és ne felejtse el játszani és iterálni a szórakozás és az élvezet maximalizálása érdekében.