Hai mai desiderato creare un gioco entusiasmante utilizzando la libreria PyGame di Python, ma ti sei sentito sopraffatto dal concetto di gestione del tempo? Se è così, non sei solo.
Il tempo è una delle componenti più critiche dello sviluppo del gioco e capire come funziona il tempo in PyGame è essenziale per creare giochi coinvolgenti e di successo. PyGame fornisce diverse utili funzioni e moduli che ti consentono di controllare il tempo nei tuoi giochi.
Creazione di un gioco semplice
Inizia creando un semplice gioco in cui un rettangolo si muove verso destra. Iniziare, installa pip sul tuo dispositivo e usa il comando seguente per installare il modulo PyGame:
pip installa pygame
Puoi trovare tutti gli esempi di codice in questo Repository GitHub.
Una volta installato, importa il modulo PyGame. Quindi crea uno schermo con una dimensione di 800x600 e un colore di sfondo bianco e aggiungi un oggetto rect. Il codice dovrebbe assomigliare a questo:
importare pygame
pygame.init()
schermo = pygame.display.set_mode((800, 600))
sfondo = pygame. Superficie (screen.get_size())
sfondo.riempimento((255, 255, 255))
rect = pygame. Rett(0, 0, 20, 20)
Successivamente, usa un ciclo while per mantenere il gioco in esecuzione e mantenere l'oggetto rect in movimento a destra finché non raggiunge la fine dello schermo.
correre = VERO
Mentre corsa:
per evento In pygame.event.get():
Se event.type == pygame. ESENTATO:
correre = Falso
rect.x += 1
Se retta.x > 780:
rect.x = 0
screen.blit (sfondo, (0, 0))
pygame.draw.rect (schermo, (0, 0, 0), retta)
pygame.display.update()
Puoi anche aggiungere input utente e collisioni nel gioco. Di seguito è riportato l'output:
Panoramica del modulo temporale di PyGame
Per controllare l'ora in questo gioco, puoi usare il pygame.time modulo. Questo modulo fornisce varie funzioni utili, tra cui a Orologio oggetto con metodi come get_tick(), Aspettare(), E ritardo(). Usando queste funzioni, puoi facilmente controllare il tempo nel tuo gioco.
Creazione di un oggetto orologio per tenere traccia del tempo
In PyGame, puoi utilizzare un oggetto Clock per tenere traccia del tempo. Per creare un orologio, usa semplicemente la seguente riga di codice:
orologio = pygame.time. Orologio()
Con questo oggetto Orologio, ora puoi tenere traccia dell'ora nel tuo gioco. Ci sono anche molte altre utili funzioni associate all'oggetto Orologio, come ad esempio:
-
prendi tempo(): Con l'aiuto di questa funzione, puoi recuperare il tempo impiegato per ogni fotogramma del gioco. Per utilizzare questa funzione, aggiungi semplicemente la seguente riga di codice dopo il ciclo while:
Aggiungi un oggetto di testo per visualizzare il tempo impiegato:ora = orologio.get_time()
carattere = pygame.font. SysFont('ariale', 18)
testo = font.render('Tempo impiegato: {} ms'.format (ora), VERO, (0, 0, 0))
screen.blit (testo, (0, 0)) -
tic tac(): Usa questa funzione per impostare il frame rate del gioco. Per impostazione predefinita, il frame rate è impostato su 60 FPS. Per impostarlo su 30 FPS, aggiungi semplicemente la seguente riga di codice:
clock.tick(30)
-
get_fps(): Puoi recuperare il frame rate attuale del gioco usando get_fps. Per utilizzare questa funzione, è sufficiente aggiungere la seguente riga di codice:
È possibile aggiungere un oggetto di testo per visualizzare la frequenza dei fotogrammi:fps = clock.get_fps()
carattere = pygame.font. SysFont('ariale', 18)
testo = font.render('FPS: {}'.formato (fps), VERO, (0, 0, 0))
screen.blit (testo, (0, 20)) -
tick_busy_loop(): Questa funzione consente di calcolare quanti millisecondi sono trascorsi dall'ultima chiamata a tic tac() funzione. Per usarlo, aggiungi semplicemente la seguente riga di codice:
clock.tick_busy_loop(30)
Ottenere l'ora usando get_ticks
IL get_tick() La funzione restituisce il tempo in millisecondi dall'inizializzazione di PyGame. Per utilizzare questa funzione, aggiungi la seguente riga di codice:
time_elapsed = pygame.time.get_ticks()
Aggiungi un oggetto di testo per visualizzare il tempo impiegato:
carattere = pygame.font. SysFont('ariale', 18)
testo = font.render('Tempo trascorso: {} ms'.format (tempo_trascorso), VERO, (0, 0, 0))
screen.blit (testo, (0, 40))
Puoi utilizzare il tempo trascorso per implementare elementi di gioco basati sul tempo, come potenziamenti che durano per un periodo di tempo specifico. Ad esempio, puoi implementare un potenziamento che aumenta la velocità dell'oggetto rect per 5 secondi:
Se tempo trascorso / 5000 > 0:
rect.x += 5
Di seguito è riportato l'output:
Mettere in pausa il gioco Usando le funzioni di attesa e ritardo
PyGame fornisce anche due funzioni che puoi utilizzare per mettere in pausa il gioco per un determinato periodo di tempo: il Aspettare funzione e il ritardo funzione.
Per usare il Aspettare funzione, aggiungi semplicemente la seguente riga di codice nel ciclo while:
pygame.time.wait(1000)
Questo metterà in pausa il gioco per 1000 millisecondi (1 secondo). Per usare il ritardo funzione, aggiungi semplicemente la seguente riga di codice nel ciclo while:
pygame.time.delay(1000)
Ciò ritarderà il frame successivo del gioco di 1000 millisecondi (1 secondo).
Differenze tra attesa e ritardo
Ci sono alcune differenze tra il Aspettare E ritardo funzioni. IL Aspettare la funzione dorme il processo per condividere il processore con altri programmi. IL ritardo funzione utilizzerà il processore per rendere il ritardo più preciso. Ciò significa che il ritardo La funzione richiede più potenza del processore rispetto a Aspettare funzione ed è adatto per i giochi che richiedono un tempismo preciso.
Creazione di un evento utilizzando set_timer
Puoi usare il imposta_timer() funzione per creare un evento che si attiva dopo un periodo di tempo specificato.
Gli eventi in PyGame sono oggetti che contengono informazioni sull'input dell'utente o messaggi generati dal programma. Per utilizzare questa funzione, crea un evento personalizzato e aggiungi la seguente riga di codice:
pygame.time.set_timer (CUSTOM_EVENT, 1000)
Questo creerà un evento che si attiva dopo 1.000 millisecondi—1 secondo. Esistono diversi tipi di eventi che è possibile attivare, come il movimento del mouse, l'input da tastiera e gli eventi della finestra. Il tuo codice può quindi reagire a questi eventi nel modo più appropriato.
Ad esempio, se desideri modificare l'asse y dell'oggetto rect dopo 1 secondo o quando si attiva l'evento personalizzato, puoi aggiungere la seguente riga di codice:
Se event.type == CUSTOM_EVENT:
rect.y += 20
In questo modo, puoi facilmente creare eventi basati sul tempo nel tuo gioco che puoi utilizzare per creare un gameplay interessante e stimolante.
Migliora i controlli di gioco con il tempo
Con l'aiuto del controllo del tempo, puoi migliorare i controlli del gioco. Puoi usare il tempo per implementare accelerazioni, decelerazioni e persino condizioni di game over. Molti giochi introducono il concetto di bullet time in cui l'azione rallenta per un breve periodo.
Utilizzando le funzioni di controllo del tempo in PyGame, puoi facilmente implementare tali funzionalità e altro ancora nei tuoi giochi.