Ți-ai dorit vreodată să creezi un joc interesant folosind biblioteca PyGame a lui Python, dar te-ai simțit copleșit de conceptul de management al timpului? Dacă da, nu ești singur.
Timpul este una dintre cele mai critice componente ale dezvoltării jocului, iar înțelegerea modului în care funcționează timpul în PyGame este esențială pentru a crea jocuri captivante și de succes. PyGame oferă mai multe funcții și module utile care vă permit să controlați timpul în jocuri.
Crearea unui joc simplu
Începeți prin a crea un joc simplu în care un dreptunghi se mișcă la dreapta. A incepe, instalați pip pe dispozitivul dvs și utilizați comanda de mai jos pentru a instala modulul PyGame:
pip install pygame
Puteți găsi toate exemplele de cod în aceasta Repoziție GitHub.
Odată instalat, importați modulul PyGame. Apoi creați un ecran cu o dimensiune de 800x600 și o culoare de fundal albă și adăugați un obiect rect. Codul ar trebui să arate cam așa:
import pygame
pygame.init()
ecran = pygame.display.set_mode((800, 600))
fundal = pygame. Suprafață (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)
După aceea, folosiți o buclă while pentru a menține jocul să ruleze și mențineți obiectul rect în mișcare până când ajunge la sfârșitul ecranului.
alergare = Adevărat
in timp ce alergare:
pentru eveniment în pygame.event.get():
dacă event.type == pygame. PĂRĂSI:
alergare = Fals
rect.x += 1
dacă rect.x > 780:
rect.x = 0
screen.blit (fond, (0, 0))
pygame.draw.rect (ecran, (0, 0, 0), rect)
pygame.display.update()
De asemenea, puteți adăuga intrări de utilizator și ciocniri în joc. Mai jos este rezultatul:
Prezentare generală a modulului de timp al PyGame
Pentru a controla timpul în acest joc, puteți folosi pygame.time modul. Acest modul oferă diverse caracteristici utile, inclusiv a Ceas obiect cu metode precum get_ticks(), aștepta(), și întârziere(). Folosind aceste funcții, puteți controla cu ușurință timpul din joc.
Crearea unui obiect ceas pentru a urmări timpul
În PyGame, puteți folosi un obiect Clock pentru a urmări timpul. Pentru a crea un Ceas, pur și simplu utilizați următoarea linie de cod:
ceas = pygame.time. Ceas()
Cu acest obiect Clock, acum puteți ține evidența orei din joc. Există, de asemenea, câteva alte funcții utile asociate cu obiectul Ceas, cum ar fi:
-
Fă-ți timp(): Cu ajutorul acestei funcții, puteți recupera timpul necesar pentru fiecare cadru al jocului. Pentru a utiliza această funcție, adăugați pur și simplu următoarea linie de cod după bucla while:
Adăugați un obiect text pentru a afișa timpul necesar:time = clock.get_time()
font = pygame.font. SysFont(„Arial”, 18)
text = font.render(„Timp luat: {} ms”.format (timp), Adevărat, (0, 0, 0))
screen.blit (text, (0, 0)) -
bifă(): Utilizați această funcție pentru a seta rata de cadre a jocului. În mod implicit, rata de cadre este setată la 60 FPS. Pentru a-l seta la 30 FPS, adăugați pur și simplu următoarea linie de cod:
clock.tick(30)
-
get_fps(): Puteți prelua rata de cadre curentă a jocului folosind get_fps. Pentru a utiliza această funcție, adăugați pur și simplu următoarea linie de cod:
Puteți adăuga un obiect text pentru a afișa rata de cadre:fps = clock.get_fps()
font = pygame.font. SysFont(„Arial”, 18)
text = font.render(„FPS: {}”.format (fps), Adevărat, (0, 0, 0))
screen.blit (text, (0, 20)) -
tick_busy_loop(): Această funcție vă permite să calculați câte milisecunde au trecut de la ultimul apel către bifa () funcţie. Pentru a-l utiliza, adăugați pur și simplu următoarea linie de cod:
clock.tick_busy_loop(30)
Obținerea timpului folosind get_ticks
The get_ticks() funcția returnează timpul în milisecunde de la inițializarea PyGame. Pentru a utiliza această funcție, adăugați următoarea linie de cod:
time_elapsed = pygame.time.get_ticks()
Adăugați un obiect text pentru a afișa timpul necesar:
font = pygame.font. SysFont(„Arial”, 18)
text = font.render(„Timp scurs: {} ms”.format (time_elapsed), Adevărat, (0, 0, 0))
screen.blit (text, (0, 40))
Puteți folosi timpul scurs pentru a implementa elemente de joc bazate pe timp, cum ar fi power-up-uri care durează o anumită perioadă de timp. De exemplu, puteți implementa o pornire care crește viteza obiectului rect timp de 5 secunde:
dacă timpul scurs / 5000 > 0:
rect.x += 5
Mai jos este rezultatul:
Întreruperea jocului folosind funcțiile așteptare și întârziere
PyGame oferă, de asemenea, două funcții pe care le puteți folosi pentru a întrerupe jocul pentru o anumită perioadă de timp: aștepta funcția și întârziere funcţie.
Pentru a utiliza aștepta funcție, adăugați pur și simplu următoarea linie de cod în bucla while:
pygame.time.wait(1000)
Acest lucru va întrerupe jocul timp de 1000 de milisecunde (1 secundă). Pentru a utiliza întârziere funcție, adăugați pur și simplu următoarea linie de cod în bucla while:
pygame.time.delay(1000)
Acest lucru va întârzia următorul cadru al jocului cu 1000 de milisecunde (1 secundă).
Diferențe între așteptare și întârziere
Există câteva diferențe între aștepta și întârziere funcții. The aștepta funcția adormite procesul pentru a partaja procesorul cu alte programe. The întârziere funcția va folosi procesorul pentru a face întârzierea mai precisă. Aceasta înseamnă că întârziere funcția necesită mai multă putere de procesor decât cea aștepta funcție și este potrivit pentru jocurile care necesită sincronizare precisă.
Crearea unui eveniment folosind set_timer
Puteți folosi set_timer() funcție pentru a crea un eveniment care se declanșează după o anumită perioadă de timp.
Evenimentele din PyGame sunt obiecte care conțin informații despre intrarea utilizatorului sau mesajele generate de program. Pentru a utiliza această funcție, creați un eveniment personalizat și adăugați următoarea linie de cod:
pygame.time.set_timer (CUSTOM_EVENT, 1000)
Acest lucru va crea un eveniment care se declanșează după 1.000 de milisecunde—1 secundă. Există diferite tipuri de evenimente pe care le puteți declanșa, cum ar fi mișcarea mouse-ului, introducerea tastaturii și evenimentele din fereastră. Codul dumneavoastră poate reacționa la aceste evenimente în orice mod este cel mai potrivit.
De exemplu, dacă doriți să schimbați axa y a obiectului rect după 1 secundă sau când se declanșează evenimentul personalizat, puteți adăuga următoarea linie de cod:
dacă event.type == CUSTOM_EVENT:
rect.y += 20
În acest fel, puteți crea cu ușurință evenimente bazate pe timp în jocul dvs. pe care le puteți folosi pentru a crea un joc interesant și provocator.
Îmbunătățiți controalele jocului cu timpul
Cu ajutorul controlului timpului, puteți îmbunătăți controalele jocului. Puteți folosi timpul pentru a implementa condiții de accelerare, decelerare și chiar de terminare a jocului. Multe jocuri introduc conceptul de timp glonț în care acțiunea încetinește pentru o perioadă scurtă.
Folosind funcțiile de control al timpului din PyGame, puteți implementa cu ușurință astfel de funcții – și multe altele – în propriile jocuri.