Aflați cum să măsurați timpul și să îl utilizați pentru a controla diferite aspecte ale jocului dvs.

În dezvoltarea jocului, adăugarea de evenimente bazate pe timp poate îmbunătăți foarte mult mecanica de joc și poate face jocurile mai captivante pentru jucători. Încorporând cronometre, puteți introduce provocări, puteți crea obiective limitate în timp sau puteți adăuga un sentiment de urgență anumitor elemente de joc.

Creați un joc simplu

Începeți prin a crea un joc simplu pentru a înțelege elementele de bază. Construiește un joc în care jucătorul se poate mișca la stânga și la dreapta și va exista o singură platformă. Creați un fișier nou numit joc simplu.py și importați modulul arcade, care oferă funcționalitățile necesare pentru crearea jocului.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Apoi, definiți Game Window clasa, care este o subclasă a arcadă. Fereastră. În interiorul clasei GameWindow, definiți __init__ metoda, care inițializează fereastra cu lățimea, înălțimea și titlul specificate.

instagram viewer

The on_key_press metoda detectează apăsarea tastelor săgeată stânga sau dreapta. Apăsarea stângă scade player_x cu 10 unități în timp ce apăsați dreapta îl crește cu 10 unități. Acest permite jucătorului să se miște orizontal în fereastra jocului.

Pentru a rula jocul, definiți funcția principală, creați o instanță a GameWindow, apelați metoda de configurare pentru a configura fereastra jocului și, în final, începeți bucla de joc folosind arcade.run().

Proiectarea structurii clasei temporizatorului

Pentru a implementa cronometre în jocul dvs., puteți crea o clasă Timer cu atributele și metodele necesare. Această clasă va oferi funcționalități pentru pornirea cronometrului, oprirea acestuia, recuperarea timpului scurs și verificarea dacă cronometrul a expirat. Iată structura de bază pentru clasa Timer:

import timp

clasăTemporizator:
def__init__(auto, durata):
self.duration = durata
self.start_time = 0
self.is_running = Fals

defstart(de sine):
self.start_time = timp.timp()
self.is_running = Adevărat

defStop(de sine):
self.is_running = Fals

defget_elapsed_time(de sine):
dacă self.is_running:
întoarcere time.time() - self.start_time
întoarcere0

defeste_expirat(de sine):
întoarcere self.get_elapsed_time() >= self.duration

Clasa Timer ia a durată parametrul în secunde în timpul inițializării. Clasa conține atribute precum timpul de începere pentru a stoca ora la care a pornit temporizatorul și rulează pentru a urmări starea temporizatorului.

The start() metoda setează start_time la ora curentă folosind timp.timp() și setează is_running to Adevărat. The Stop() metoda setează pur și simplu is_running to Fals. The get_elapsed_time() metoda calculează timpul scurs scăzând start_time din timpul curent.

Dacă temporizatorul rulează, returnează timpul scurs; în caz contrar, returnează 0. The este_expirat() metoda verifică dacă timpul scurs este mai mare sau egal cu durata, indicând faptul că cronometrul a expirat.

Implementarea cronometrelor cu numărătoare inversă

Pentru a demonstra o numărătoare inversă în jocul dvs., puteți porni cronometrul atunci când jucătorul apasă o anumită tastă, cum ar fi bara de spațiu. Imprimați numărătoarea inversă până la consolă folosind comanda de imprimare a lui Python. Creați un fișier nou numit timer.py și adăugați codul cu aceste actualizări:

import timp

clasăGame Window(arcadă. Fereastră):
def__init__(de sine):
super().__init__(LAȚIME, ÎNĂLȚIE, "Joc simplu")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
self.timer = Timer(10)

defon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. SPAŢIU:
self.timer.start()

defon_draw(de sine):
# Cod existent
dacă self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
resting_time = max (r_time, 0)
imprimare(f"Numărătoare inversă: {timp rămas:.1f} secunde")

Asigurați-vă că puteți vedea fereastra terminalului și fereastra jocului în același timp. Apoi apăsați pe spațiu și veți vedea numărătoarea inversă a temporizatorului:

Gestionarea evenimentelor temporizatorului și acțiunilor de declanșare

De asemenea, puteți declanșa o funcție care desenează un dreptunghi când cronometrul de numărătoare inversă expiră. Creați un fișier nou numit handle-event.py și adăugați codul cu actualizările de mai jos:

defon_draw(de sine):
# Cod existent
dacă self.timer.is_expired():
self.draw_rectangle()

defdesen_dreptunghi(de sine):
arcade.draw_rectangle_filled (LAȚime // 2, înălțime // 2, 100, 100, roșu)

Mai jos este rezultatul:

Întreruperea, resetarea și reluarea temporizatorului

Pentru a adăuga funcționalitate pentru întreruperea, resetarea și reluarea temporizatorului, puteți extinde Temporizator clasa cu metode adecvate. Iată un exemplu:

clasăTemporizator:
# Cod existent

defpauză(de sine):
self.duration -= self.get_elapsed_time()
self.is_running = Fals

defresetare(de sine):
self.start_time = 0
self.is_running = Fals

defrelua(de sine):
self.start_time = timp.timp()
self.is_running = Adevărat

Adăugarea de feedback vizual la temporizator

Pentru a oferi feedback vizual pentru cronometru, puteți încorpora text sau elemente grafice pe ecranul jocului. Creați un fișier nou numit vizual.py și adăugați codul cu actualizările de mai jos:

defon_draw(de sine):
# Cod existent
dacă self.timer.is_running:
text = f"Numărătoare inversă: {timp rămas:.1f} secunde"
arcade.draw_text (text, 10, 10, negru, 18)

Acum veți vedea temporizatorul direct în fereastra jocului în loc de consolă:

Inclusiv caracteristici suplimentare

Pentru a îmbunătăți și mai mult evenimentele bazate pe timp, puteți lua în considerare implementarea următoarelor funcții suplimentare în jocurile dvs.

Power-Up-uri sau bonusuri bazate pe timp

Introduceți power-up-uri sau bonusuri care apar periodic pe parcursul jocului. Aceste power-up-uri ar putea oferi abilități temporare, puncte suplimentare, viteză crescută sau arme îmbunătățite.

Făcându-le limitate în timp, jucătorii trebuie să le colecteze strategic într-un interval de timp specific pentru a obține un avantaj. Acest lucru adaugă entuziasm și recompensează gândirea rapidă.

Provocări limitate în timp

Creați provocări limitate în timp în care jucătorii trebuie să îndeplinească o sarcină într-un anumit interval de timp. De exemplu, o secțiune de puzzle sau platforme care necesită rezolvare într-un anumit timp.

Acest lucru îi provoacă pe jucători să gândească și să acționeze rapid, adăugând un sentiment palpitant de urgență jocului. Finalizarea cu succes a acestor provocări poate debloca recompense sau poate progresa povestea.

Obstacole cronometrate sau dușmani

Implementați obstacole cronometrate sau inamici care reprezintă o amenințare pentru jucător. De exemplu, platforme în mișcare care apar și dispar la intervale regulate sau inamici care devin invincibili pentru un timp limitat.

Jucătorii trebuie să își cronometreze corect acțiunile și mișcările pentru a trece prin aceste obstacole sau pentru a învinge inamicii înainte de expirarea timpului. Acest lucru adaugă un strat de strategie și coordonare jocului.

Cele mai bune practici pentru evenimente bazate pe timp

Când implementați evenimente bazate pe timp în jocurile dvs., este esențial să urmați aceste bune practici.

Test și echilibru

Testați-vă evenimentele bazate pe timp pentru a vă asigura că sunt corecte și echilibrate. Reglați fin durata, dificultatea și recompensele pentru a crea experiențe de joc plăcute.

Feedback utilizator

Oferă jucătorilor feedback clar și intuitiv cu privire la starea cronometrului și la orice evenimente bazate pe timp. Adăugarea de efecte sonore, indicatorii vizuali sau indiciile textuale pot ajuta jucătorii să înțeleagă constrângerile de timp și consecințele acțiunilor lor.

Măsurarea consecventă a timpului

Utilizați un sistem consecvent de măsurare a timpului pe tot parcursul jocului. De exemplu, utilizați secundele ca unitate pentru toate cronometrele și calculele legate de timp. Acest lucru asigură coerența și ușurința de înțelegere atât pentru jucători, cât și pentru dezvoltatori.

Manevr carcase Edge

Luați în considerare scenariile în care jocul poate fi întrerupt, redus la minimum sau rulează în fundal. Gestionați aceste situații cu grație pentru a menține sincronizarea exactă și pentru a preveni comportamentul neintenționat atunci când jocul se reia.

Urmând aceste bune practici, puteți crea evenimente bazate pe timp care îmbunătățesc jocul, provoacă jucătorii și oferă o experiență echilibrată și plăcută.

Fă jocurile mai distractive cu evenimente bazate pe timp

Încorporând evenimente bazate pe timp în jocurile dvs., puteți crea o experiență dinamică și captivantă pentru jucători. Provocările limitate în timp adaugă entuziasm și urgență, în timp ce pornirile sau obstacolele cronometrate pot crea oportunități strategice de luare a deciziilor.

Experimentați cu diferite mecanisme bazate pe timp pentru a găsi echilibrul potrivit pentru jocul dvs. și amintiți-vă să testați și să repetați pentru a maximiza distracția și distracția.