Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Heb je ooit een spannende game willen maken met de PyGame-bibliotheek van Python, maar voelde je je overweldigd door het concept van tijdmanagement? Als dat zo is, ben je niet de enige.

Tijd is een van de meest kritische componenten van game-ontwikkeling, en begrijpen hoe tijd werkt in PyGame is essentieel om boeiende en succesvolle games te maken. PyGame biedt verschillende handige functies en modules waarmee u de tijd in uw games kunt controleren.

Een eenvoudig spel maken

Begin met het maken van een eenvoudig spel waarbij een rechthoek naar rechts beweegt. Beginnen, installeer pip op uw apparaat en gebruik de onderstaande opdracht om de PyGame-module te installeren:

pip installeer pygame

Hierin vind je alle codevoorbeelden GitHub-opslagplaats.

Eenmaal geïnstalleerd, importeert u de PyGame-module. Maak dan een scherm aan met een afmeting van 800x600 en een witte achtergrondkleur, en voeg daar een rechthoekig object aan toe. De code zou er ongeveer zo uit moeten zien:

instagram viewer

importeren pyspel
pygame.init()
scherm = pygame.display.set_mode((800, 600))
achtergrond = pygame. Oppervlak (screen.get_size())
achtergrond.vulling((255, 255, 255))
rect = pygame. Recht(0, 0, 20, 20)

Gebruik daarna een while-lus om het spel draaiende te houden en het rechte object naar rechts te laten bewegen totdat het het einde van het scherm bereikt.

hardlopen = WAAR

terwijl rennen:
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals

rect.x += 1

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

scherm.blit (achtergrond, (0, 0))
pygame.draw.rect (scherm, (0, 0, 0), rect)
pygame.display.update()

U kunt ook gebruikersinvoer en toevoegen botsingen in het spel. Hieronder is de uitvoer:

Overzicht van de tijdmodule van PyGame

Om de tijd in dit spel te controleren, kun je de pygame.tijd moduul. Deze module biedt verschillende handige functies, waaronder een Klok object met methoden zoals get_ticks(), wachten(), En vertraging(). Met deze functies kun je eenvoudig de tijd in je spel regelen.

Een klokobject maken om de tijd bij te houden

In PyGame kunt u een Clock-object gebruiken om de tijd bij te houden. Gebruik de volgende regel code om een ​​klok te maken:

klok = pygame.tijd. Klok()

Met dit Clock-object kun je nu de tijd in je game bijhouden. Er zijn ook verschillende andere handige functies gekoppeld aan het Clock-object, zoals:

  • krijg tijd(): Met behulp van deze functie kun je de tijd die nodig is voor elk frame van het spel opvragen. Om deze functie te gebruiken, voegt u gewoon de volgende regel code toe na de while-lus:
    tijd = klok.get_time()
    Voeg een tekstobject toe om de tijd weer te geven:
    lettertype = pygame.lettertype. SysFont('Arial', 18)
    tekst = font.render('Benodigde tijd: {} ms'.formaat (tijd), WAAR, (0, 0, 0))
    scherm.blit (tekst, (0, 0))
  • Kruis aan(): Gebruik deze functie om de framesnelheid van het spel in te stellen. Standaard staat de framerate op 60 FPS. Om het in te stellen op 30 FPS, voegt u eenvoudig de volgende regel code toe:
    klok.vinkje(30)
  • krijg_fps(): U kunt de huidige framesnelheid van het spel ophalen met behulp van get_fps. Om deze functie te gebruiken, voegt u eenvoudig de volgende regel code toe:
    fps = klok.get_fps()
    U kunt een tekstobject toevoegen om de framesnelheid weer te geven:
    lettertype = pygame.lettertype. SysFont('Arial', 18)
    tekst = font.render('FPS: {}'.formaat (fps), WAAR, (0, 0, 0))
    scherm.blit (tekst, (0, 20))
  • tick_busy_loop(): Met deze functie kunt u berekenen hoeveel milliseconden er zijn verstreken sinds de laatste oproep aan de Kruis aan() functie. Om het te gebruiken, voegt u eenvoudig de volgende regel code toe:
    klok.tick_busy_loop(30)

De tijd krijgen met behulp van get_ticks

De get_ticks() functie retourneert de tijd in milliseconden sinds PyGame is geïnitialiseerd. Om deze functie te gebruiken, voegt u de volgende regel code toe:

time_elapsed = pygame.time.get_ticks()

Voeg een tekstobject toe om de tijd weer te geven:

lettertype = pygame.lettertype. SysFont('Arial', 18)
tekst = font.render('Verstreken tijd: {} ms'.format (verstreken tijd), WAAR, (0, 0, 0))
scherm.blit (tekst, (0, 40))

Je kunt de verstreken tijd gebruiken om op tijd gebaseerde spelelementen te implementeren, zoals power-ups die een bepaalde tijd duren. U kunt bijvoorbeeld een power-up implementeren die de snelheid van het rect-object gedurende 5 seconden verhoogt:

als verstreken tijd / 5000 > 0:
rect.x += 5

Hieronder is de uitvoer:

Het spel pauzeren De wacht- en vertragingsfuncties gebruiken

PyGame biedt ook twee functies die u kunt gebruiken om het spel voor een bepaalde tijd te pauzeren: de wachten functie en de vertraging functie.

Om de wachten functie, voegt u gewoon de volgende regel code toe aan de while-lus:

pygame.tijd.wacht(1000)

Hierdoor wordt het spel 1000 milliseconden (1 seconde) onderbroken. Om de vertraging functie, voegt u gewoon de volgende regel code toe aan de while-lus:

pygame.tijd.vertraging(1000)

Hierdoor wordt het volgende frame van de game 1000 milliseconden (1 seconde) vertraagd.

Verschillen tussen wachten en uitstellen

Er zijn een paar verschillen tussen de wachten En vertraging functies. De wachten functie slaapt het proces om de processor met andere programma's te delen. De vertraging functie zal de processor gebruiken om de vertraging nauwkeuriger te maken. Dit betekent dat de vertraging functie vereist meer processorkracht dan de wachten functie en is geschikt voor games die nauwkeurige timing nodig hebben.

Een evenement maken met behulp van set_timer

U kunt de set_timer() functie om een ​​gebeurtenis te creëren die na een bepaalde tijd wordt geactiveerd.

Gebeurtenissen in PyGame zijn objecten die informatie bevatten over gebruikersinvoer of door programma's gegenereerde berichten. Om deze functie te gebruiken, maakt u een aangepaste gebeurtenis en voegt u de volgende coderegel toe:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Hierdoor wordt een gebeurtenis gemaakt die wordt geactiveerd na 1000 milliseconden—1 seconde. Er zijn verschillende soorten gebeurtenissen die u kunt activeren, zoals muisbewegingen, toetsenbordinvoer en venstergebeurtenissen. Uw code kan vervolgens op deze gebeurtenissen reageren op de meest geschikte manier.

Als u bijvoorbeeld de y-as van het rect-object na 1 seconde wilt wijzigen, of wanneer de aangepaste gebeurtenis wordt geactiveerd, kunt u de volgende coderegel toevoegen:

als gebeurtenis.type == CUSTOM_EVENT:
rect.y += 20

Op deze manier kun je eenvoudig op tijd gebaseerde gebeurtenissen in je game maken die je kunt gebruiken om interessante en uitdagende gameplay te creëren.

Verbeter de spelbesturing met de tijd

Met behulp van tijdcontrole kun je de besturing van het spel verbeteren. Je kunt de tijd gebruiken om versnelling, vertraging en zelfs game-over-condities te implementeren. Veel games introduceren het concept van bullet time, waarbij de actie gedurende een korte periode vertraagt.

Met behulp van de tijdcontrolefuncties in PyGame kunt u dergelijke functies - en meer - eenvoudig in uw eigen games implementeren.