Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Kas olete kunagi tahtnud Pythoni PyGame'i teeki kasutades luua põnevat mängu, kuid tundsite ajajuhtimise kontseptsioonist hämmingut? Kui jah, siis te pole üksi.

Aeg on mänguarenduse üks kriitilisemaid komponente ning kaasahaaravate ja edukate mängude loomiseks on oluline mõista, kuidas aeg PyGame'is töötab. PyGame pakub mitmeid kasulikke funktsioone ja mooduleid, mis võimaldavad teil oma mängude aega kontrollida.

Lihtsa mängu loomine

Alustage lihtsa mängu loomisega, kus ristkülik liigub paremale. Alustada, installige oma seadmesse pip ja kasutage PyGame mooduli installimiseks allolevat käsku:

pip install pygame

Siit leiate kõik koodinäited GitHubi repo.

Pärast installimist importige PyGame'i moodul. Seejärel looge ekraan suurusega 800x600 ja valge taustavärviga ning lisage sirge objekt. Kood peaks välja nägema umbes selline:

importida pygame
pygame.init()
ekraan = pygame.display.set_mode((800, 600))
taust = mängumäng. Pind (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Pärast seda kasutage mängu käigushoidmiseks ajasilmust ja hoidke sirget objekti liikumas paremale, kuni see jõuab ekraani lõppu.

jookseb = Tõsi

samal ajal jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale

rect.x += 1

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

screen.blit (taust, (0, 0))
pygame.draw.rect (ekraan, (0, 0, 0), õige)
pygame.display.update()

Saate lisada ka kasutaja sisendeid ja kokkupõrked mängus. Allpool on väljund:

PyGame'i ajamooduli ülevaade

Selles mängus aja juhtimiseks saate kasutada nuppu pygame.time moodul. See moodul pakub mitmesuguseid kasulikke funktsioone, sealhulgas a Kell objekt selliste meetoditega nagu get_ticks(), oota()ja viivitus (). Nende funktsioonide abil saate hõlpsasti oma mängu aega juhtida.

Kellaobjekti loomine aja jälgimiseks

PyGame'is saate aja jälgimiseks kasutada kellaobjekti. Kella loomiseks kasutage lihtsalt järgmist koodirida:

kell = pygame.time. Kell ()

Selle Kella objektiga saate nüüd oma mängu aega jälgida. Objektiga Kell on seotud ka mitmeid muid kasulikke funktsioone, näiteks:

  • get_time(): Selle funktsiooni abil saate alla laadida iga mängukaadri jaoks kulunud aja. Selle funktsiooni kasutamiseks lisage while-tsükli järel lihtsalt järgmine koodirida:
    aeg = kell.get_time()
    Lisage kulunud aja kuvamiseks tekstiobjekt:
    font = pygame.font. SysFont("Arial", 18)
    text = font.render(„Aeg: {} ms”.formaat (aeg), Tõsi, (0, 0, 0))
    screen.blit (tekst, (0, 0))
  • linnuke (): Kasutage seda funktsiooni mängu kaadrisageduse määramiseks. Vaikimisi on kaadrisageduseks määratud 60 kaadrit sekundis. Selle määramiseks 30 kaadrit sekundis lisage lihtsalt järgmine koodirida:
    kell.tikk(30)
  • get_fps(): Mängu praeguse kaadrisageduse saate hankida kasutades get_fps. Selle funktsiooni kasutamiseks lisage lihtsalt järgmine koodirida:
    fps = kell.get_fps()
    Saate lisada kaadrisageduse kuvamiseks tekstiobjekti.
    font = pygame.font. SysFont("Arial", 18)
    text = font.render('FPS: {}'.formaat (fps), Tõsi, (0, 0, 0))
    screen.blit (tekst, (0, 20))
  • tick_busy_loop(): See funktsioon võimaldab teil arvutada, mitu millisekundit on viimasest kõnest möödunud linnuke () funktsiooni. Selle kasutamiseks lisage lihtsalt järgmine koodirida:
    clock.tick_busy_loop(30)

Aja leidmine, kasutades get_ticks

The get_ticks() funktsioon tagastab aja millisekundites alates PyGame'i initsialiseerimisest. Selle funktsiooni kasutamiseks lisage järgmine koodirida:

time_elapsed = pygame.time.get_ticks()

Lisage kulunud aja kuvamiseks tekstiobjekt:

font = pygame.font. SysFont("Arial", 18)
text = font.render("Aeg kulunud: {} ms".formaat (kulunud aeg), Tõsi, (0, 0, 0))
screen.blit (tekst, (0, 40))

Saate kulunud aega kasutada ajapõhiste mänguelementide, näiteks teatud aja kestvate võimsuste rakendamiseks. Näiteks saate rakendada toite, mis suurendab sirge objekti kiirust 5 sekundiks:

kui möödunud aeg / 5000 > 0:
rect.x += 5

Allpool on väljund:

Mängu peatamine Oote- ja viivitusfunktsioonide kasutamine

PyGame pakub ka kahte funktsiooni, mida saate kasutada mängu teatud ajaks peatamiseks: oota funktsioon ja viivitus funktsiooni.

Et kasutada oota funktsiooni, lisage while-tsüklisse lihtsalt järgmine koodirida:

pygame.time.wait(1000)

See peatab mängu 1000 millisekundiks (1 sekund). Et kasutada viivitus funktsiooni, lisage while-tsüklisse lihtsalt järgmine koodirida:

pygame.time.delay(1000)

See lükkab mängu järgmise kaadri edasi 1000 millisekundit (1 sekund).

Erinevused ootamise ja viivituse vahel

Nende vahel on mõned erinevused oota ja viivitus funktsioonid. The oota funktsioon uinutab protsessi, et jagada protsessorit teiste programmidega. The viivitus funktsioon kasutab protsessorit viivituse täpsemaks muutmiseks. See tähendab, et viivitus funktsioon nõuab rohkem protsessori võimsust kui oota funktsioon ja sobib mängudele, mis vajavad täpset ajastust.

Sündmuse loomine kasutades set_timer

Võite kasutada set_timer() funktsiooni, et luua sündmus, mis käivitub teatud aja möödudes.

PyGame'i sündmused on objektid, mis sisaldavad teavet kasutaja sisendi või programmi loodud sõnumite kohta. Selle funktsiooni kasutamiseks looge kohandatud sündmus ja lisage järgmine koodirida:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

See loob sündmuse, mis käivitub 1000 millisekundi – 1 sekundi pärast. Saate käivitada erinevat tüüpi sündmusi, näiteks hiire liigutamist, klaviatuuri sisendit ja aknasündmusi. Teie kood võib seejärel nendele sündmustele reageerida kõige sobivamal viisil.

Näiteks kui soovite muuta sirge objekti y-telge 1 sekundi pärast või kohandatud sündmuse käivitamisel, saate lisada järgmise koodirea:

kui event.type == KOHANDATUD_SÜNDMUS:
rect.y += 20

Nii saate hõlpsasti luua oma mängus ajapõhiseid sündmusi, mida saate kasutada huvitava ja väljakutseid pakkuva mängu loomiseks.

Täiustage mängu juhtelemente aja jooksul

Ajakontrolli abil saate mängu juhtelemente täiustada. Aega saate kasutada kiirenduse, aeglustuse ja isegi mängu lõpetamise tingimuste rakendamiseks. Paljud mängud tutvustavad kuuliaja kontseptsiooni, kus tegevus aeglustub lühikeseks ajaks.

PyGame'i ajakontrolli funktsioone kasutades saate selliseid funktsioone ja palju muud hõlpsasti oma mängudes rakendada.