Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Ar kada nors norėjote sukurti įdomų žaidimą naudodami Python PyGame biblioteką, bet jaučiatės priblokšti dėl laiko valdymo koncepcijos? Jei taip, jūs ne vieni.

Laikas yra vienas iš svarbiausių žaidimų kūrimo komponentų, o norint sukurti patrauklius ir sėkmingus žaidimus būtina suprasti, kaip laikas veikia PyGame. PyGame siūlo keletą naudingų funkcijų ir modulių, leidžiančių kontroliuoti žaidimo laiką.

Paprasto žaidimo kūrimas

Pradėkite kurdami paprastą žaidimą, kuriame stačiakampis juda į dešinę. Pradėti, įdiekite pip savo įrenginyje ir naudokite toliau pateiktą komandą, kad įdiegtumėte PyGame modulį:

pip įdiegti pygame

Čia galite rasti visus kodų pavyzdžius „GitHub“ atpirkimas.

Įdiegę importuokite PyGame modulį. Tada sukurkite 800 x 600 dydžio ir balto fono ekraną ir pridėkite tiesų objektą. Kodas turėtų atrodyti maždaug taip:

importuoti pygame
instagram viewer

pygame.init()
ekranas = pygame.display.set_mode((800, 600))
fonas = pygame. Paviršius (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Po to naudokite ciklą, kad žaidimas veiktų, o tiesus objektas judėtų tiesiai, kol pasieks ekrano pabaigą.

bėgimas = Tiesa

kol veikia:
dėl įvykis in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
bėgimas = Netiesa

rect.x += 1

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

screen.blit (fonas, (0, 0))
pygame.draw.rect (ekranas, (0, 0, 0), tiesa)
pygame.display.update()

Taip pat galite pridėti vartotojo įvesties ir susidūrimų žaidime. Žemiau yra išvestis:

PyGame laiko modulio apžvalga

Norėdami valdyti laiką šiame žaidime, galite naudoti pygame.time modulis. Šiame modulyje yra įvairių naudingų funkcijų, įskaitant a Laikrodis objektas su tokiais metodais kaip get_ticks (), laukti(), ir delsimas(). Naudodami šias funkcijas galite lengvai valdyti žaidimo laiką.

Laikrodžio objekto kūrimas laikui sekti

PyGame galite naudoti laikrodžio objektą, kad galėtumėte sekti laiką. Norėdami sukurti laikrodį, tiesiog naudokite šią kodo eilutę:

laikrodis = pygame.time. Laikrodis()

Naudodami šį laikrodžio objektą dabar galite sekti laiką žaidime. Taip pat yra keletas kitų naudingų funkcijų, susijusių su laikrodžio objektu, pavyzdžiui:

  • get_time(): Šios funkcijos pagalba galite atkurti kiekvieno žaidimo kadro laiką. Norėdami naudoti šią funkciją, tiesiog pridėkite šią kodo eilutę po while ciklo:
    laikas = laikrodis.get_time()
    Pridėkite tekstinį objektą, kad būtų rodomas laikas:
    šriftas = pygame.font. SysFont("Arial", 18)
    tekstas = font.render(„Laikas: {} ms“.format (laikas), Tiesa, (0, 0, 0))
    screen.blit (tekstas, (0, 0))
  • varnele (): Naudokite šią funkciją norėdami nustatyti žaidimo kadrų dažnį. Pagal numatytuosius nustatymus kadrų dažnis nustatytas į 60 FPS. Norėdami nustatyti 30 FPS, tiesiog pridėkite šią kodo eilutę:
    laikrodis.tick(30)
  • get_fps (): Dabartinį žaidimo kadrų dažnį galite gauti naudodami get_fps. Norėdami naudoti šią funkciją, tiesiog pridėkite šią kodo eilutę:
    fps = laikrodis.get_fps()
    Galite pridėti teksto objektą, kad būtų rodomas kadrų dažnis:
    šriftas = pygame.font. SysFont("Arial", 18)
    tekstas = font.render(„FPS: {}“.formatas (fps), Tiesa, (0, 0, 0))
    screen.blit (tekstas, (0, 20))
  • tick_busy_loop(): Ši funkcija leidžia apskaičiuoti, kiek milisekundžių praėjo nuo paskutinio skambučio varnele () funkcija. Norėdami jį naudoti, tiesiog pridėkite šią kodo eilutę:
    clock.tick_busy_loop(30)

Laiko gavimas naudojant get_ticks

The get_ticks () funkcija grąžina laiką milisekundėmis nuo PyGame inicijavimo. Norėdami naudoti šią funkciją, pridėkite šią kodo eilutę:

time_elapsed = pygame.time.get_ticks()

Pridėkite tekstinį objektą, kad būtų rodomas laikas:

šriftas = pygame.font. SysFont("Arial", 18)
tekstas = font.render(„Praėjęs laikas: {} ms“.format (praėjęs laikas), Tiesa, (0, 0, 0))
screen.blit (tekstas, (0, 40))

Prabėgusį laiką galite panaudoti laiku pagrįstiems žaidimo elementams, pvz., tam tikrą laiką trunkantiems įjungimams, įgyvendinti. Pavyzdžiui, galite įdiegti įjungimą, kuris padidina tiesioginio objekto greitį 5 sekundėms:

jeigu Praėjęs laikas / 5000 > 0:
rect.x += 5

Žemiau yra išvestis:

Žaidimo pristabdymas Laukimo ir atidėjimo funkcijų naudojimas

„PyGame“ taip pat teikia dvi funkcijas, kurias galite naudoti norėdami pristabdyti žaidimą tam tikram laikui: laukti funkcija ir delsimas funkcija.

Norėdami naudoti laukti funkcija, tiesiog pridėkite šią kodo eilutę į while kilpą:

pygame.time.wait(1000)

Tai pristabdys žaidimą 1000 milisekundžių (1 sekundei). Norėdami naudoti delsimas funkcija, tiesiog pridėkite šią kodo eilutę į while kilpą:

pygame.time.delay(1000)

Tai atidės kitą žaidimo kadrą 1000 milisekundžių (1 sekundei).

Skirtumai tarp laukimo ir delsimo

Yra keletas skirtumų tarp laukti ir delsimas funkcijas. The laukti funkcija užmiega procesą, kad būtų galima dalytis procesoriumi su kitomis programomis. The delsimas funkcija naudos procesorių, kad delsa būtų tikslesnė. Tai reiškia, kad delsimas funkcijai reikia daugiau procesoriaus galios nei laukti funkcija ir tinka žaidimams, kuriems reikia tikslaus laiko.

Įvykio kūrimas naudojant set_timer

Galite naudoti set_timer() funkcija sukurti įvykį, kuris suaktyvinamas po nurodyto laiko.

PyGame įvykiai yra objektai, kuriuose yra informacijos apie vartotojo įvestį arba programos sugeneruotus pranešimus. Norėdami naudoti šią funkciją, sukurkite pasirinktinį įvykį ir pridėkite šią kodo eilutę:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Taip bus sukurtas įvykis, kuris suaktyvinamas po 1 000 milisekundžių – 1 sekundės. Yra įvairių tipų įvykių, kuriuos galite suaktyvinti, pvz., pelės judėjimą, klaviatūros įvestį ir lango įvykius. Tada jūsų kodas gali reaguoti į šiuos įvykius tinkamiausiu būdu.

Pavyzdžiui, jei norite pakeisti tiesiojo objekto y ašį po 1 sekundės arba kai suaktyvinamas tinkintas įvykis, galite pridėti šią kodo eilutę:

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

Tokiu būdu savo žaidime galite lengvai sukurti laiku pagrįstus įvykius, kuriuos naudodami galėsite sukurti įdomų ir sudėtingą žaidimą.

Laikui bėgant tobulinkite žaidimų valdymą

Naudodami laiko kontrolę galite pagerinti žaidimo valdymą. Galite naudoti laiką pagreitinimo, lėtėjimo ir net žaidimo pabaigos sąlygoms įgyvendinti. Daugelyje žaidimų pristatoma kulkos laiko sąvoka, kai veiksmas trumpam sulėtėja.

Naudodami laiko valdymo funkcijas PyGame, galite lengvai įdiegti tokias funkcijas ir dar daugiau savo žaidimuose.