Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Vai esat kādreiz vēlējies izveidot aizraujošu spēli, izmantojot Python PyGame bibliotēku, bet jutāties pārņemts ar laika pārvaldības koncepciju? Ja tā, jūs neesat viens.

Laiks ir viena no vissvarīgākajām spēļu izstrādes sastāvdaļām, un izpratne par laika darbību PyGame ir būtiska, lai radītu saistošas ​​un veiksmīgas spēles. PyGame nodrošina vairākas noderīgas funkcijas un moduļus, kas ļauj kontrolēt spēles laiku.

Vienkāršas spēles izveide

Sāciet, izveidojot vienkāršu spēli, kurā taisnstūris virzās pa labi. Sākt, instalējiet pip savā ierīcē un izmantojiet tālāk norādīto komandu, lai instalētu PyGame moduli:

pip instalēt pygame

Šeit varat atrast visus kodu piemērus GitHub repo.

Pēc instalēšanas importējiet PyGame moduli. Pēc tam izveidojiet ekrānu ar izmēru 800x600 ar baltu fona krāsu un pievienojiet taisnu objektu. Kodam vajadzētu izskatīties apmēram šādi:

instagram viewer
imports pygame
pygame.init()
ekrāns = pygame.display.set_mode((800, 600))
fons = pygame. Virsma (screen.get_size())
background.fill((255, 255, 255))
taisnais = pygame. Rect(0, 0, 20, 20)

Pēc tam izmantojiet laika cilpu, lai turpinātu spēles darbību, un noturiet taisnā objekta kustību pa labi, līdz tas sasniedz ekrāna beigas.

skriešana = Taisnība

kamēr darbojas:
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
skriešana = Nepatiesi

taisn.x += 1

ja rect.x > 780:
taisn.x = 0

screen.blit (fons, (0, 0))
pygame.draw.rect (ekrāns, (0, 0, 0), taisni)
pygame.display.update()

Varat arī pievienot lietotāja ievades un sadursmes spēlē. Zemāk ir izvade:

PyGame laika moduļa pārskats

Lai kontrolētu laiku šajā spēlē, varat izmantot pygame.time modulis. Šis modulis nodrošina dažādas noderīgas funkcijas, tostarp a Pulkstenis objekts ar tādām metodēm kā get_tiks(), gaidi (), un kavēšanās (). Izmantojot šīs funkcijas, jūs varat viegli kontrolēt spēles laiku.

Pulksteņa objekta izveide laika izsekošanai

Programmā PyGame laika izsekošanai varat izmantot pulksteņa objektu. Lai izveidotu pulksteni, vienkārši izmantojiet šo koda rindiņu:

pulkstenis = pygame.time. Pulkstenis ()

Izmantojot šo pulksteņa objektu, tagad varat sekot līdzi spēles laikam. Ir arī vairākas citas noderīgas funkcijas, kas saistītas ar objektu Pulkstenis, piemēram:

  • get_time(): Ar šīs funkcijas palīdzību jūs varat izgūt katra spēles kadra laiku. Lai izmantotu šo funkciju, vienkārši pievienojiet šādu koda rindiņu pēc while cilpas:
    laiks = pulkstenis.get_time()
    Pievienojiet teksta objektu, lai parādītu patērēto laiku:
    fonts = pygame.font. SysFont("Arial", 18)
    teksts = font.render('Pavadītais laiks: {} ms'.formāts (laiks), Taisnība, (0, 0, 0))
    screen.blit (teksts, (0, 0))
  • atzīmējiet (): Izmantojiet šo funkciju, lai iestatītu spēles kadru ātrumu. Pēc noklusējuma kadru ātrums ir iestatīts uz 60 FPS. Lai iestatītu to uz 30 FPS, vienkārši pievienojiet šādu koda rindiņu:
    pulkstenis.tick(30)
  • get_fps(): Varat izgūt pašreizējo spēles kadru ātrumu, izmantojot get_fps. Lai izmantotu šo funkciju, vienkārši pievienojiet šādu koda rindiņu:
    fps = pulkstenis.get_fps()
    Varat pievienot teksta objektu, lai parādītu kadru ātrumu:
    fonts = pygame.font. SysFont("Arial", 18)
    teksts = font.render('FPS: {}'.formāts (fps), Taisnība, (0, 0, 0))
    screen.blit (teksts, (0, 20))
  • tick_busy_loop(): Šī funkcija ļauj aprēķināt, cik milisekundes ir pagājušas kopš pēdējā zvana uz atzīmējiet () funkciju. Lai to izmantotu, vienkārši pievienojiet šādu koda rindiņu:
    clock.tick_busy_loop(30)

Laika iegūšana, izmantojot get_ticks

The get_tiks() funkcija atgriež laiku milisekundēs kopš PyGame inicializācijas. Lai izmantotu šo funkciju, pievienojiet šādu koda rindiņu:

time_elapsed = pygame.time.get_ticks()

Pievienojiet teksta objektu, lai parādītu patērēto laiku:

fonts = pygame.font. SysFont("Arial", 18)
teksts = font.render("Pagājušais laiks: {} ms".format (pagājušais laiks), Taisnība, (0, 0, 0))
screen.blit (teksts, (0, 40))

Varat izmantot pagājušo laiku, lai ieviestu uz laiku balstītus spēles elementus, piemēram, jaudas, kas ilgst noteiktu laiku. Piemēram, varat ieviest iedarbināšanu, kas palielina taisnā objekta ātrumu uz 5 sekundēm:

ja laiks_pagājušais / 5000 > 0:
taisn.x += 5

Zemāk ir izvade:

Spēles apturēšana Gaidīšanas un aizkaves funkciju izmantošana

PyGame nodrošina arī divas funkcijas, kuras varat izmantot, lai apturētu spēli uz noteiktu laiku: pagaidi funkcija un kavēšanās funkciju.

Lai izmantotu pagaidi funkciju, vienkārši pievienojiet šo koda rindiņu while cilpā:

pygame.time.wait(1000)

Tādējādi spēle tiks apturēta uz 1000 milisekundēm (1 sekundi). Lai izmantotu kavēšanās funkciju, vienkārši pievienojiet šo koda rindiņu while cilpā:

pygame.time.delay(1000)

Tas aizkavēs nākamo spēles kadru par 1000 milisekundēm (1 sekundi).

Atšķirības starp gaidīšanu un kavēšanos

Pastāv dažas atšķirības starp pagaidi un kavēšanās funkcijas. The pagaidi funkcija iemidzina procesu, lai koplietotu procesoru ar citām programmām. The kavēšanās funkcija izmantos procesoru, lai padarītu aizkavi precīzāku. Tas nozīmē, ka kavēšanās funkcijai ir nepieciešams vairāk procesora jaudas nekā pagaidi funkcija un ir piemērota spēlēm, kurām nepieciešams precīzs laiks.

Notikuma izveide, izmantojot set_timer

Jūs varat izmantot set_taimer() funkciju, lai izveidotu notikumu, kas tiek aktivizēts pēc noteikta laika.

PyGame notikumi ir objekti, kas satur informāciju par lietotāja ievadi vai programmas ģenerētiem ziņojumiem. Lai izmantotu šo funkciju, izveidojiet pielāgotu notikumu un pievienojiet šādu koda rindiņu:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Tādējādi tiks izveidots notikums, kas tiks aktivizēts pēc 1000 milisekundēm — 1 sekundes. Varat aktivizēt dažādus notikumu veidus, piemēram, peles kustību, tastatūras ievadi un logu notikumus. Pēc tam jūsu kods var reaģēt uz šiem notikumiem vispiemērotākajā veidā.

Piemēram, ja vēlaties mainīt taisnā objekta y asi pēc 1 sekundes vai kad tiek aktivizēts pielāgotais notikums, varat pievienot šādu koda rindiņu:

ja event.type == PIELĀGOTS_NOTIKUMS:
rect.y += 20

Tādā veidā savā spēlē varat viegli izveidot uz laiku balstītus notikumus, kurus varat izmantot, lai izveidotu interesantu un izaicinošu spēli.

Uzlabojiet spēles vadīklas ar laiku

Ar laika kontroles palīdzību jūs varat uzlabot spēles vadību. Varat izmantot laiku, lai ieviestu paātrinājuma, palēninājuma un pat spēles beigu nosacījumus. Daudzas spēles ievieš aizzīmes laika jēdzienu, kurā darbība uz īsu laiku palēninās.

Izmantojot PyGame laika kontroles funkcijas, varat viegli ieviest šādas funkcijas un daudz ko citu savās spēlēs.