Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Har du noen gang ønsket å lage et spennende spill ved å bruke Pythons PyGame-bibliotek, men følt deg overveldet av konseptet med tidsstyring? I så fall er du ikke alene.

Tid er en av de mest kritiske komponentene i spillutvikling, og å forstå hvordan tiden fungerer i PyGame er avgjørende for å skape engasjerende og vellykkede spill. PyGame har flere nyttige funksjoner og moduler som lar deg kontrollere tiden i spillene dine.

Opprette et enkelt spill

Start med å lage et enkelt spill hvor et rektangel beveger seg til høyre. Å begynne, installer pip på enheten din og bruk kommandoen nedenfor for å installere PyGame-modulen:

pip installer pygame

Du finner alle kodeeksemplene i denne GitHub repo.

Når den er installert, importerer du PyGame-modulen. Lag deretter en skjerm med en størrelse på 800x600 og en hvit bakgrunnsfarge, og legg til et rett objekt. Koden skal se omtrent slik ut:

instagram viewer
import pygame
pygame.init()
skjerm = pygame.display.set_mode((800, 600))
bakgrunn = pygame. Surface (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rekt(0, 0, 20, 20)

Etter det, bruk en while-løkke for å holde spillet i gang og hold det rette objektet i bevegelse rett til det når slutten av skjermen.

kjører = ekte

samtidig som løping:
til begivenhet i pygame.event.get():
hvis event.type == pygame. SLUTTE:
kjører = Falsk

rect.x += 1

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

screen.blit (bakgrunn, (0, 0))
pygame.draw.rect (skjerm, (0, 0, 0), rect)
pygame.display.update()

Du kan også legge til brukerinndata og kollisjoner i spillet. Nedenfor er utgangen:

Oversikt over tidsmodulen til PyGame

For å kontrollere tiden i dette spillet, kan du bruke pygame.time modul. Denne modulen gir forskjellige nyttige funksjoner, inkludert en Klokke objekt med metoder som get_ticks(), vente(), og forsinkelse(). Ved å bruke disse funksjonene kan du enkelt kontrollere tiden i spillet ditt.

Opprette et klokkeobjekt for å spore tid

I PyGame kan du bruke et klokkeobjekt for å spore tid. For å lage en klokke, bruk bare følgende kodelinje:

klokke = pygame.time. Klokke()

Med dette Clock-objektet kan du nå holde styr på tiden i spillet ditt. Det er også flere andre nyttige funksjoner knyttet til Clock-objektet, for eksempel:

  • get_time(): Ved hjelp av denne funksjonen kan du hente ut tiden det tar for hver frame av spillet. For å bruke denne funksjonen, legg til følgende kodelinje etter while-løkken:
    tid = klokke.get_tid()
    Legg til et tekstobjekt for å vise tiden det tar:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('Tid: {} ms'.format (tid), ekte, (0, 0, 0))
    screen.blit (tekst, (0, 0))
  • sett kryss(): Bruk denne funksjonen til å angi bildefrekvensen for spillet. Som standard er bildefrekvensen satt til 60 FPS. For å sette den til 30 FPS, legg til følgende kodelinje:
    klokke.tick(30)
  • get_fps(): Du kan hente gjeldende bildefrekvens for spillet ved å bruke get_fps. For å bruke denne funksjonen, legg til følgende kodelinje:
    fps = klokke.get_fps()
    Du kan legge til et tekstobjekt for å vise bildefrekvensen:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('FPS: {}'.format (fps), ekte, (0, 0, 0))
    screen.blit (tekst, (0, 20))
  • tick_busy_loop(): Denne funksjonen lar deg beregne hvor mange millisekunder som har gått siden siste anrop til sett kryss() funksjon. For å bruke den, legg til følgende kodelinje:
    klokke.tick_busy_loop(30)

Få tiden ved å bruke get_ticks

De get_ticks() funksjonen returnerer tiden i millisekunder siden PyGame ble initialisert. For å bruke denne funksjonen, legg til følgende kodelinje:

time_elapsed = pygame.time.get_ticcks()

Legg til et tekstobjekt for å vise tiden det tar:

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

Du kan bruke tiden som har gått til å implementere tidsbaserte spillelementer som power-ups som varer i en bestemt tidsperiode. For eksempel kan du implementere en oppstart som øker hastigheten til det rette objektet i 5 sekunder:

hvis tid forløpt / 5000 > 0:
rect.x += 5

Nedenfor er utgangen:

Sette spillet på pause Bruke vente- og forsinkelsesfunksjonene

PyGame har også to funksjoner som du kan bruke til å pause spillet i en bestemt tidsperiode: vente funksjon og forsinkelse funksjon.

For å bruke vente funksjon, bare legg til følgende kodelinje i while-løkken:

pygame.time.wait(1000)

Dette vil sette spillet på pause i 1000 millisekunder (1 sekund). For å bruke forsinkelse funksjon, bare legg til følgende kodelinje i while-løkken:

pygame.time.delay(1000)

Dette vil forsinke neste bilde av spillet i 1000 millisekunder (1 sekund).

Forskjeller mellom venting og forsinkelse

Det er noen få forskjeller mellom vente og forsinkelse funksjoner. De vente funksjonen hviler prosessen for å dele prosessoren med andre programmer. De forsinkelse funksjonen vil bruke prosessoren til å gjøre forsinkelsen mer nøyaktig. Dette betyr at forsinkelse funksjonen krever mer prosessorkraft enn vente funksjon og passer for spill som trenger presis timing.

Opprette en hendelse ved hjelp av set_timer

Du kan bruke set_timer() funksjon for å opprette en hendelse som utløses etter en spesifisert tidsperiode.

Hendelser i PyGame er objekter som inneholder informasjon om brukerinndata eller programgenererte meldinger. For å bruke denne funksjonen, lag en egendefinert hendelse og legg til følgende kodelinje:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Dette vil opprette en hendelse som utløses etter 1000 millisekunder – 1 sekund. Det er forskjellige typer hendelser du kan utløse, for eksempel musebevegelser, tastaturinndata og vindushendelser. Koden din kan deretter reagere på disse hendelsene på den måten som passer best.

Hvis du for eksempel vil endre y-aksen til rect-objektet etter 1 sekund, eller når den tilpassede hendelsen utløses, kan du legge til følgende kodelinje:

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

På denne måten kan du enkelt lage tidsbaserte hendelser i spillet ditt som du kan bruke til å skape interessant og utfordrende spill.

Forbedre spillkontrollene med tiden

Ved hjelp av tidskontroll kan du forbedre kontrollene i spillet. Du kan bruke tiden til å implementere akselerasjon, retardasjon og til og med game-over-forhold. Mange spill introduserer konseptet kuletid der handlingen bremses ned i en kort periode.

Ved å bruke tidskontrollfunksjonene i PyGame kan du enkelt implementere slike funksjoner – og mer – i dine egne spill.