Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Har du någonsin velat skapa ett spännande spel med Pythons PyGame-bibliotek, men känt dig överväldigad av konceptet med tidshantering? I så fall är du inte ensam.

Tid är en av de mest kritiska komponenterna i spelutveckling, och att förstå hur tiden fungerar i PyGame är avgörande för att skapa engagerande och framgångsrika spel. PyGame tillhandahåller flera användbara funktioner och moduler som låter dig kontrollera tiden i dina spel.

Skapa ett enkelt spel

Börja med att skapa ett enkelt spel där en rektangel rör sig åt höger. Att börja, installera pip på din enhet och använd kommandot nedan för att installera PyGame-modulen:

pip installera pygame

Du kan hitta alla kodexempel i detta GitHub repo.

När du har installerat, importera PyGame-modulen. Skapa sedan en skärm med en storlek på 800x600 och en vit bakgrundsfärg och lägg till ett riktobjekt. Koden bör se ut ungefär så här:

instagram viewer
importera pygame
pygame.init()
skärm = pygame.display.set_mode((800, 600))
bakgrund = pygame. Surface (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rekt(0, 0, 20, 20)

Efter det, använd en while-loop för att hålla spelet igång och håll det raka objektet i rörelse tills det når slutet av skärmen.

springer = Sann

medan löpning:
för händelse i pygame.event.get():
om event.type == pygame. SLUTA MED:
springer = Falsk

rect.x += 1

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

screen.blit (bakgrund, (0, 0))
pygame.draw.rect (skärm, (0, 0, 0), rect)
pygame.display.update()

Du kan också lägga till användarinmatningar och kollisioner i spelet. Nedan är utgången:

Översikt över tidsmodulen för PyGame

För att kontrollera tiden i det här spelet kan du använda pygame.time modul. Den här modulen tillhandahåller olika användbara funktioner, inklusive en Klocka objekt med metoder som get_ticks(), vänta(), och dröjsmål(). Genom att använda dessa funktioner kan du enkelt kontrollera tiden i ditt spel.

Skapa ett klockobjekt för att spåra tid

I PyGame kan du använda ett Clock-objekt för att spåra tid. För att skapa en klocka, använd helt enkelt följande kodrad:

klocka = pygame.time. Klocka()

Med detta Clock-objekt kan du nu hålla reda på tiden i ditt spel. Det finns också flera andra användbara funktioner associerade med Clock-objektet, såsom:

  • få tid(): Med hjälp av den här funktionen kan du hämta tiden det tar för varje bildruta i spelet. För att använda den här funktionen lägger du bara till följande kodrad efter while-loopen:
    tid = clock.get_time()
    Lägg till ett textobjekt för att visa tiden det tog:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render("Tid: {} ms".format (tid), Sann, (0, 0, 0))
    screen.blit (text, (0, 0))
  • bock(): Använd den här funktionen för att ställa in spelets bildhastighet. Som standard är bildhastigheten inställd på 60 FPS. För att ställa in den till 30 FPS, lägg helt enkelt till följande kodrad:
    clock.tick(30)
  • get_fps(): Du kan hämta den aktuella bildfrekvensen för spelet med get_fps. För att använda den här funktionen, lägg helt enkelt till följande kodrad:
    fps = clock.get_fps()
    Du kan lägga till ett textobjekt för att visa bildfrekvensen:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('FPS: {}'.format (fps), Sann, (0, 0, 0))
    screen.blit (text, (0, 20))
  • tick_busy_loop(): Denna funktion låter dig beräkna hur många millisekunder som har gått sedan det senaste anropet till bock() fungera. För att använda det, lägg bara till följande kodrad:
    clock.tick_busy_loop(30)

Få tiden med hjälp av get_ticks

De get_ticks() funktion returnerar tiden i millisekunder sedan PyGame initierades. För att använda den här funktionen, lägg till följande kodrad:

time_elapsed = pygame.time.get_ticcks()

Lägg till ett textobjekt för att visa tiden det tog:

font = pygame.font. SysFont('Arial', 18)
text = font.render("Förfluten tid: {} ms".format (tid_förfluten), Sann, (0, 0, 0))
screen.blit (text, (0, 40))

Du kan använda tiden som gått för att implementera tidsbaserade spelelement som power-ups som varar under en viss tid. Till exempel kan du implementera en power-up som ökar hastigheten på det räta objektet i 5 sekunder:

om tiden som gått / 5000 > 0:
rect.x += 5

Nedan är utgången:

Pausa spelet Använda vänte- och fördröjningsfunktionerna

PyGame har också två funktioner som du kan använda för att pausa spelet under en viss tid: den vänta funktion och dröjsmål fungera.

Att använda vänta funktionen, lägg helt enkelt till följande kodrad i while-loopen:

pygame.time.wait(1000)

Detta pausar spelet i 1000 millisekunder (1 sekund). Att använda dröjsmål funktionen, lägg helt enkelt till följande kodrad i while-loopen:

pygame.time.delay(1000)

Detta kommer att fördröja nästa bildruta i spelet i 1000 millisekunder (1 sekund).

Skillnader mellan vänta och fördröjning

Det finns några skillnader mellan vänta och dröjsmål funktioner. De vänta funktionen vilar processen för att dela processorn med andra program. De dröjsmål funktionen kommer att använda processorn för att göra fördröjningen mer exakt. Detta innebär att dröjsmål funktionen kräver mer processorkraft än vänta funktion och är lämplig för spel som behöver exakt timing.

Skapa en händelse med set_timer

Du kan använda set_timer() funktion för att skapa en händelse som utlöses efter en viss tid.

Händelser i PyGame är objekt som innehåller information om användarinmatning eller programgenererade meddelanden. För att använda den här funktionen, skapa en anpassad händelse och lägg till följande kodrad:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Detta skapar en händelse som utlöses efter 1 000 millisekunder – 1 sekund. Det finns olika typer av händelser som du kan utlösa, såsom musrörelser, tangentbordsinmatning och fönsterhändelser. Din kod kan sedan reagera på dessa händelser på det sätt som är mest lämpligt.

Om du till exempel vill ändra y-axeln för rect-objektet efter 1 sekund, eller när den anpassade händelsen utlöses, kan du lägga till följande kodrad:

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

På så sätt kan du enkelt skapa tidsbaserade händelser i ditt spel som du kan använda för att skapa intressant och utmanande gameplay.

Förbättra spelkontrollerna med tiden

Med hjälp av tidskontroll kan du förbättra kontrollerna i spelet. Du kan använda tiden för att implementera acceleration, retardation och till och med game-over-förhållanden. Många spel introducerar begreppet bullet time där handlingen saktar ner under en kort period.

Genom att använda tidskontrollfunktionerna i PyGame kan du enkelt implementera sådana funktioner – och mer – i dina egna spel.