Jeste li ikada željeli stvoriti uzbudljivu igru koristeći Pythonovu biblioteku PyGame, ali ste se osjećali preplavljeni konceptom upravljanja vremenom? Ako je tako, niste jedini.
Vrijeme je jedna od najkritičnijih komponenti razvoja igre, a razumijevanje načina na koji vrijeme funkcionira u PyGameu ključno je za stvaranje privlačnih i uspješnih igara. PyGame nudi nekoliko korisnih funkcija i modula koji vam omogućuju kontrolu vremena u vašim igrama.
Stvaranje jednostavne igre
Započnite stvaranjem jednostavne igre u kojoj se pravokutnik pomiče udesno. Početi, instalirajte pip na svoj uređaj i koristite donju naredbu za instalaciju modula PyGame:
pip instaliraj pygame
Ovdje možete pronaći sve primjere koda GitHub repo.
Nakon instaliranja, uvezite modul PyGame. Zatim izradite zaslon veličine 800x600 i bijelu boju pozadine te dodajte pravokutni objekt. Kod bi trebao izgledati otprilike ovako:
uvoz pygame
pygame.init()
zaslon = pygame.display.set_mode((800, 600))
pozadina = pygame. Površina (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Pravo(0, 0, 20, 20)
Nakon toga upotrijebite while petlju kako bi igra nastavila raditi i neka se pravokutni objekt pomiče udesno dok ne dođe do kraja zaslona.
trčanje = Pravi
dok trčanje:
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
trčanje = lažno
pravo.x += 1
ako rect.x > 780:
rect.x = 0
screen.blit (pozadina, (0, 0))
pygame.draw.rect (zaslon, (0, 0, 0), pravocrtno)
pygame.display.update()
Također možete dodati korisničke unose i sudara u igri. Ispod je izlaz:
Pregled vremenskog modula PyGame-a
Za kontrolu vremena u ovoj igri, možete koristiti pygame.vrijeme modul. Ovaj modul pruža razne korisne značajke, uključujući a Sat objekt s metodama poput get_ticks(), čekati(), i odgoditi(). Pomoću ovih funkcija možete jednostavno kontrolirati vrijeme u igri.
Stvaranje objekta sata za praćenje vremena
U PyGameu možete koristiti objekt Clock za praćenje vremena. Za izradu sata jednostavno upotrijebite sljedeći redak koda:
sat = pygame.vrijeme. Sat()
S ovim objektom Sat sada možete pratiti vrijeme u svojoj igri. Također postoji nekoliko drugih korisnih funkcija povezanih s objektom sata, kao što su:
-
get_time(): Uz pomoć ove funkcije možete dohvatiti vrijeme potrebno za svaki okvir igre. Da biste koristili ovu funkciju, jednostavno dodajte sljedeći redak koda nakon while petlje:
Dodajte tekstualni objekt za prikaz vremena:vrijeme = sat.get_time()
font = pygame.font. SysFont('Arial', 18)
tekst = font.render('Potrebno vrijeme: {} ms'.format (vrijeme), Pravi, (0, 0, 0))
screen.blit (tekst, (0, 0)) -
kvačica(): Koristite ovu funkciju za postavljanje broja sličica u sekundi igre. Prema zadanim postavkama, broj sličica u sekundi postavljen je na 60 FPS. Da biste ga postavili na 30 FPS, jednostavno dodajte sljedeći redak koda:
clock.tick(30)
-
get_fps(): Možete dohvatiti trenutni broj sličica u sekundi igre koristeći get_fps. Za korištenje ove funkcije jednostavno dodajte sljedeći redak koda:
Možete dodati tekstualni objekt za prikaz broja sličica u sekundi:fps = clock.get_fps()
font = pygame.font. SysFont('Arial', 18)
tekst = font.render('FPS: {}'.format (fps), Pravi, (0, 0, 0))
screen.blit (tekst, (0, 20)) -
tick_busy_loop(): Ova vam funkcija omogućuje izračunavanje koliko je milisekundi prošlo od posljednjeg poziva na označiti () funkcija. Da biste ga koristili, jednostavno dodajte sljedeći redak koda:
clock.tick_busy_loop(30)
Dobivanje vremena pomoću get_ticks
The get_ticks() funkcija vraća vrijeme u milisekundama od pokretanja PyGame-a. Za korištenje ove funkcije dodajte sljedeći redak koda:
proteklo_vrijeme = pygame.time.get_ticks()
Dodajte tekstualni objekt za prikaz vremena:
font = pygame.font. SysFont('Arial', 18)
tekst = font.render('Proteklo vrijeme: {} ms'.format (proteklo_vrijeme), Pravi, (0, 0, 0))
screen.blit (tekst, (0, 40))
Proteklo vrijeme možete upotrijebiti za implementaciju vremenskih elemenata igre kao što su pojačanja koja traju određeno vrijeme. Na primjer, možete implementirati pojačanje koje povećava brzinu pravokutnog objekta na 5 sekundi:
ako Vrijeme je proslo / 5000 > 0:
pravo.x += 5
Ispod je izlaz:
Pauziranje igre korištenjem funkcija čekanja i odgode
PyGame također nudi dvije funkcije koje možete koristiti za pauziranje igre na određeno vrijeme: čekati funkcija i odgoditi funkcija.
Za korištenje čekati jednostavno dodajte sljedeći redak koda u while petlju:
pygame.time.wait(1000)
Ovo će pauzirati igru na 1000 milisekundi (1 sekunda). Za korištenje odgoditi jednostavno dodajte sljedeći redak koda u while petlju:
pygame.time.delay(1000)
Ovo će odgoditi sljedeći okvir igre za 1000 milisekundi (1 sekundu).
Razlike između čekanja i kašnjenja
Postoji nekoliko razlika između čekati i odgoditi funkcije. The čekati funkcija miruje proces kako bi podijelila procesor s drugim programima. The odgoditi funkcija će koristiti procesor kako bi kašnjenje bilo točnije. To znači da je odgoditi funkcija zahtijeva više snage procesora od čekati funkcija i prikladan je za igre koje zahtijevaju precizno mjerenje vremena.
Stvaranje događaja pomoću set_timera
Možete koristiti set_timer() za stvaranje događaja koji se pokreće nakon određenog vremena.
Događaji u PyGameu su objekti koji sadrže informacije o korisničkom unosu ili programski generiranim porukama. Za korištenje ove funkcije stvorite prilagođeni događaj i dodajte sljedeći redak koda:
pygame.time.set_timer (CUSTOM_EVENT, 1000)
Ovo će stvoriti događaj koji se pokreće nakon 1000 milisekundi—1 sekunda. Postoje različite vrste događaja koje možete pokrenuti, poput kretanja miša, unosa tipkovnicom i događaja prozora. Vaš kod tada može reagirati na te događaje na bilo koji način koji je najprikladniji.
Na primjer, ako želite promijeniti y-os pravokutnog objekta nakon 1 sekunde ili kada se aktivira prilagođeni događaj, možete dodati sljedeći redak koda:
ako event.type == CUSTOM_EVENT:
rect.y += 20
Na taj način možete jednostavno stvoriti događaje temeljene na vremenu u svojoj igri koje možete koristiti za stvaranje zanimljivog i izazovnog igranja.
Poboljšajte kontrole igre s vremenom
Uz pomoć kontrole vremena možete poboljšati kontrole igre. Možete iskoristiti vrijeme za implementaciju uvjeta ubrzanja, usporavanja, pa čak i završetka igre. Mnoge igre uvode koncept bullet time gdje se radnja usporava na kratko.
Koristeći funkcije kontrole vremena u PyGameu, možete jednostavno implementirati takve značajke—i više—u svoje igre.