Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Har du nogensinde ønsket at skabe et spændende spil ved hjælp af Pythons PyGame-bibliotek, men følt dig overvældet af konceptet med tidsstyring? Hvis ja, er du ikke alene.

Tid er en af ​​de mest kritiske komponenter i spiludvikling, og det er vigtigt at forstå, hvordan tiden fungerer i PyGame, for at skabe engagerende og succesfulde spil. PyGame tilbyder flere nyttige funktioner og moduler, der giver dig mulighed for at kontrollere tiden i dine spil.

Oprettelse af et simpelt spil

Start med at lave et simpelt spil, hvor et rektangel bevæger sig til højre. At begynde, installer pip på din enhed og brug kommandoen nedenfor til at installere PyGame-modulet:

pip installer pygame

Du kan finde alle kodeeksemplerne i denne GitHub repo.

Når det er installeret, importerer du PyGame-modulet. Lav derefter en skærm med en størrelse på 800x600 og en hvid baggrundsfarve, og tilføj et ret objekt. Koden skulle se nogenlunde sådan ud:

instagram viewer
importere pygame
pygame.init()
skærm = pygame.display.set_mode((800, 600))
baggrund = pygame. Overflade (screen.get_size())
baggrund.fyld((255, 255, 255))
rect = pygame. Rekt(0, 0, 20, 20)

Brug derefter en while-løkke til at holde spillet kørende og hold det rette objekt i bevægelse lige indtil det når slutningen af ​​skærmen.

kører = Rigtigt

mens kører:
til begivenhed i pygame.event.get():
hvis event.type == pygame. AFSLUT:
kører = Falsk

rect.x += 1

hvis rect.x > 780:
rect.x = 0

screen.blit (baggrund, (0, 0))
pygame.draw.rect (skærm, (0, 0, 0), rect)
pygame.display.update()

Du kan også tilføje brugerinput og kollisioner i spillet. Nedenfor er output:

Oversigt over tidsmodulet i PyGame

For at styre tiden i dette spil kan du bruge pygame.time modul. Dette modul giver forskellige nyttige funktioner, herunder en Ur objekt med metoder som f.eks get_ticks(), vente(), og forsinke(). Ved at bruge disse funktioner kan du nemt styre tiden i dit spil.

Oprettelse af et urobjekt til at spore tid

I PyGame kan du bruge et Clock-objekt til at spore tid. For at oprette et ur skal du blot bruge følgende kodelinje:

ur = pygame.time. Ur()

Med dette Clock-objekt kan du nu holde styr på tiden i dit spil. Der er også flere andre nyttige funktioner forbundet med Clock-objektet, såsom:

  • get_time(): Ved hjælp af denne funktion kan du hente den tid, det tager for hver frame af spillet. For at bruge denne funktion skal du blot tilføje følgende kodelinje efter while-løkken:
    tid = clock.get_time()
    Tilføj et tekstobjekt for at vise den tid, det tager:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('Tid: {} ms'.format (tid), Rigtigt, (0, 0, 0))
    screen.blit (tekst, (0, 0))
  • kryds (): Brug denne funktion til at indstille spillets billedhastighed. Som standard er billedhastigheden indstillet til 60 FPS. For at indstille den til 30 FPS skal du blot tilføje følgende kodelinje:
    clock.tick(30)
  • get_fps(): Du kan hente den aktuelle billedhastighed for spillet ved hjælp af get_fps. For at bruge denne funktion skal du blot tilføje følgende kodelinje:
    fps = clock.get_fps()
    Du kan tilføje et tekstobjekt for at vise billedhastigheden:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('FPS: {}'.format (fps), Rigtigt, (0, 0, 0))
    screen.blit (tekst, (0, 20))
  • tick_busy_loop(): Denne funktion lader dig beregne, hvor mange millisekunder der er gået siden sidste opkald til kryds () fungere. For at bruge det skal du blot tilføje følgende kodelinje:
    clock.tick_busy_loop(30)

Få tiden ved at bruge get_ticks

Det get_ticks() funktion returnerer tiden i millisekunder siden PyGame blev initialiseret. For at bruge denne funktion skal du tilføje følgende kodelinje:

time_elapsed = pygame.time.get_ticks()

Tilføj et tekstobjekt for at vise den tid, det tager:

font = pygame.font. SysFont('Arial', 18)
text = font.render('Forløbet tid: {} ms'.format (tid_forløbet), Rigtigt, (0, 0, 0))
screen.blit (tekst, (0, 40))

Du kan bruge den forløbne tid til at implementere tidsbaserede spilelementer såsom power-ups, der varer i et bestemt tidsrum. For eksempel kan du implementere en power-up, der øger hastigheden af ​​det rette objekt i 5 sekunder:

hvis time_lapsed / 5000 > 0:
rect.x += 5

Nedenfor er output:

Sætte spillet på pause Brug af vente- og forsinkelsesfunktionerne

PyGame har også to funktioner, som du kan bruge til at sætte spillet på pause i et bestemt tidsrum: vente funktion og forsinke fungere.

For at bruge vente funktion, skal du blot tilføje følgende kodelinje i while-løkken:

pygame.time.wait(1000)

Dette vil sætte spillet på pause i 1000 millisekunder (1 sekund). For at bruge forsinke funktion, skal du blot tilføje følgende kodelinje i while-løkken:

pygame.time.delay(1000)

Dette vil forsinke det næste billede af spillet i 1000 millisekunder (1 sekund).

Forskelle mellem ventetid og forsinkelse

Der er et par forskelle mellem vente og forsinke funktioner. Det vente funktion dvaler processen for at dele processoren med andre programmer. Det forsinke funktionen vil bruge processoren til at gøre forsinkelsen mere nøjagtig. Det betyder, at forsinke funktionen kræver mere processorkraft end vente funktion og er velegnet til spil, der kræver præcis timing.

Oprettelse af en begivenhed ved hjælp af set_timer

Du kan bruge sæt_timer() funktion til at oprette en hændelse, der udløses efter et bestemt tidsrum.

Hændelser i PyGame er objekter, der indeholder information om brugerinput eller programgenererede meddelelser. For at bruge denne funktion skal du oprette en tilpasset hændelse og tilføje følgende kodelinje:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Dette vil skabe en hændelse, der udløses efter 1.000 millisekunder - 1 sekund. Der er forskellige typer hændelser, som du kan udløse, såsom musebevægelser, tastaturinput og vinduesbegivenheder. Din kode kan derefter reagere på disse hændelser på den måde, der er mest passende.

For eksempel, hvis du vil ændre y-aksen for rect-objektet efter 1 sekund, eller når den tilpassede hændelse udløses, kan du tilføje følgende kodelinje:

hvis event.type == CUSTOM_EVENT:
rect.y += 20

På denne måde kan du nemt oprette tidsbaserede begivenheder i dit spil, som du kan bruge til at skabe interessant og udfordrende gameplay.

Forbedre spilkontrol med tiden

Ved hjælp af tidskontrol kan du forbedre spillets kontroller. Du kan bruge tiden til at implementere acceleration, deceleration og endda game-over-forhold. Mange spil introducerer begrebet bullet time, hvor handlingen bremses i en kort periode.

Ved at bruge tidsstyringsfunktionerne i PyGame kan du nemt implementere sådanne funktioner – og mere – i dine egne spil.