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:
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:
Legg til et tekstobjekt for å vise tiden det tar:tid = klokke.get_tid()
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:
Du kan legge til et tekstobjekt for å vise bildefrekvensen:fps = klokke.get_fps()
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.