Scopri come misurare il tempo e usarlo per controllare vari aspetti del tuo gioco.
Nello sviluppo del gioco, l'aggiunta di eventi basati sul tempo può migliorare notevolmente le meccaniche di gioco e rendere i giochi più coinvolgenti per i giocatori. Incorporando i timer, puoi introdurre sfide, creare obiettivi a tempo limitato o aggiungere un senso di urgenza a determinati elementi di gioco.
Crea un gioco semplice
Inizia creando un semplice gioco per capire le basi. Costruisci un gioco in cui il giocatore può muoversi a destra ea sinistra e ci sarà un'unica piattaforma. Crea un nuovo file denominato gioco-semplice.py e importa il modulo arcade, che fornisce le funzionalità necessarie per creare il gioco.
Il codice utilizzato in questo articolo è disponibile in this Deposito GitHub ed è gratuito per l'uso con la licenza MIT.
Quindi, definisci il file Finestra di gioco class, che è una sottoclasse di sala giochi. Finestra. All'interno della classe GameWindow, definisci il file __dentro__ metodo, che inizializza la finestra con la larghezza, l'altezza e il titolo specificati.
IL on_key_press metodo rileva le pressioni dei tasti freccia sinistra o destra. Premendo a sinistra diminuisce giocatore_x di 10 unità mentre premendo a destra aumenta di 10 unità. Questo permette al giocatore di muoversi orizzontalmente all'interno della finestra di gioco.
Per eseguire il gioco, definisci la funzione principale, crea un'istanza di GameWindow, chiama il metodo setup per impostare la finestra del gioco e, infine, avvia il ciclo di gioco usando arcade.run().
Progettazione della struttura della classe timer
Per implementare i timer nel tuo gioco, puoi creare una classe Timer con gli attributi e i metodi necessari. Questa classe fornirà funzionalità per avviare il timer, fermarlo, recuperare il tempo trascorso e controllare se il timer è scaduto. Ecco la struttura di base per la classe Timer:
importare tempo
classeTimer:
def__dentro__(sé, durata):
self.duration = durata
self.start_time = 0
self.is_running = Falsodefinizio(se stesso):
self.start_time = tempo.tempo()
self.is_running = VEROdeffermare(se stesso):
self.is_running = Falsodefget_elapsed_time(se stesso):
Se self.è_in esecuzione:
ritorno time.time() - self.start_time
ritorno0
defè scaduto(se stesso):
ritorno self.get_elapsed_time() >= self.duration
La classe Timer prende a durata parametro in secondi durante l'inizializzazione. La classe contiene attributi come Ora di inizio per memorizzare l'ora di avvio del timer, e è_in esecuzione per tenere traccia dello stato del timer.
IL inizio() Il metodo imposta start_time sull'ora corrente utilizzando tempo.tempo() e imposta is_running a VERO. IL fermare() Il metodo imposta semplicemente is_running su Falso. IL get_tempo_trascorso() Il metodo calcola il tempo trascorso sottraendo start_time dall'ora corrente.
Se il timer è in esecuzione, restituisce il tempo trascorso; in caso contrario, restituisce 0. IL è scaduto() Il metodo controlla se il tempo trascorso è maggiore o uguale alla durata, indicando che il timer è scaduto.
Implementazione dei timer per il conto alla rovescia
Per dimostrare un conto alla rovescia nel tuo gioco, puoi avviare il timer quando il giocatore preme un tasto specifico, come la barra spaziatrice. Stampa il conto alla rovescia sulla console usando il comando print di Python. Crea un nuovo file denominato timer.py e aggiungi il codice con questi aggiornamenti:
importare tempo
classeFinestra di gioco(sala giochi. Finestra):
def__dentro__(se stesso):
super().__init__(LARGHEZZA, ALTEZZA, "Gioco semplice")
self.player_x = LARGHEZZA // 2
self.player_y = ALTEZZA // 2
autoscatto = Timer(10)defon_key_press(self, chiave, modificatori):
Se chiave == arcade.chiave. SPAZIO:
autoscatto.start()
defon_draw(se stesso):
# Codice esistente
Se self.timer.is_running:
tempo_trascorso = autoscatto.get_tempo_trascorso()
r_time = self.timer.duration - tempo_trascorso
tempo_rimanente = max (r_tempo, 0)
stampa(f"Conto alla rovescia: {tempo rimanente:.1F} secondi")
Assicurati di poter vedere contemporaneamente la finestra del terminale e la finestra del gioco. Quindi premi lo spazio e vedrai il conto alla rovescia del timer:
Gestione di eventi timer e azioni di attivazione
Puoi anche attivare una funzione che disegna un rettangolo allo scadere del conto alla rovescia. Crea un nuovo file denominato handle-event.py e aggiungi il codice con i seguenti aggiornamenti:
defon_draw(se stesso):
# Codice esistente
Se self.timer.is_expired():
self.draw_rectangle()
defdraw_rectangle(se stesso):
arcade.draw_rectangle_filled (LARGHEZZA // 2, ALTEZZA // 2, 100, 100, rosso)
Di seguito è riportato l'output:
Mettere in pausa, reimpostare e riprendere il timer
Per aggiungere funzionalità per mettere in pausa, reimpostare e riprendere il timer, è possibile estendere il Timer classe con metodi appropriati. Ecco un esempio:
classeTimer:
# Codice esistentedefpausa(se stesso):
self.duration -= self.get_elapsed_time()
self.is_running = FalsodefRipristina(se stesso):
self.start_time = 0
self.is_running = Falso
defriprendere(se stesso):
self.start_time = tempo.tempo()
self.is_running = VERO
Aggiunta di feedback visivo al timer
Per fornire un feedback visivo per il timer, puoi incorporare testo o elementi grafici nella schermata di gioco. Crea un nuovo file denominato visivo.py e aggiungi il codice con i seguenti aggiornamenti:
defon_draw(se stesso):
# Codice esistente
Se self.timer.is_running:
testo = f"Conto alla rovescia: {tempo rimanente:.1F} secondi"
arcade.draw_text (testo, 10, 10, nero, 18)
Ora vedrai il timer direttamente nella finestra di gioco anziché nella console:
Comprese funzionalità aggiuntive
Per migliorare ulteriormente gli eventi basati sul tempo, puoi prendere in considerazione l'implementazione delle seguenti funzionalità aggiuntive nei tuoi giochi.
Potenziamenti o bonus basati sul tempo
Introduci power-up o bonus che compaiono periodicamente durante il gioco. Questi potenziamenti potrebbero fornire abilità temporanee, punti extra, maggiore velocità o armi potenziate.
Rendendoli limitati nel tempo, i giocatori devono raccoglierli strategicamente entro un periodo di tempo specifico per ottenere un vantaggio. Questo aggiunge entusiasmo e premia il pensiero veloce.
Sfide a tempo limitato
Crea sfide a tempo limitato in cui i giocatori devono completare un'attività entro un determinato periodo di tempo. Ad esempio, una sezione puzzle o platform che richiede la risoluzione entro un determinato tempo.
Questo sfida i giocatori a pensare e ad agire rapidamente, aggiungendo un emozionante senso di urgenza al gameplay. Il completamento con successo di queste sfide può sbloccare ricompense o far progredire la storia.
Ostacoli a tempo o nemici
Implementa ostacoli a tempo o nemici che rappresentano una minaccia per il giocatore. Ad esempio, piattaforme mobili che appaiono e scompaiono a intervalli regolari o nemici che diventano invincibili per un tempo limitato.
I giocatori devono cronometrare correttamente le loro azioni e movimenti per superare questi ostacoli o sconfiggere i nemici prima che scada il tempo. Questo aggiunge uno strato di strategia e coordinamento al gameplay.
Best practice per gli eventi basati sul tempo
Quando implementi eventi basati sul tempo nei tuoi giochi, è essenziale seguire queste best practice.
Prova ed Equilibrio
Testa accuratamente i tuoi eventi basati sul tempo per assicurarti che siano giusti ed equilibrati. Ottimizza la durata, la difficoltà e le ricompense per creare esperienze di gioco divertenti.
Feedback degli utenti
Fornisci un feedback chiaro e intuitivo ai giocatori in merito allo stato del timer e a qualsiasi evento basato sul tempo. Aggiunta di effetti sonori, indicatori visivi o segnali testuali possono aiutare i giocatori a comprendere i limiti di tempo e le conseguenze delle loro azioni.
Misurazione del tempo coerente
Usa un sistema di misurazione del tempo coerente durante il gioco. Ad esempio, utilizza i secondi come unità per tutti i timer e i calcoli relativi al tempo. Ciò garantisce coerenza e facilità di comprensione sia per i giocatori che per gli sviluppatori.
Gestire le custodie Edge
Prendi in considerazione scenari in cui il gioco potrebbe essere in pausa, ridotto a icona o in esecuzione in background. Gestisci queste situazioni con garbo per mantenere un tempismo accurato e prevenire comportamenti indesiderati quando il gioco riprende.
Seguendo queste best practice, puoi creare eventi basati sul tempo che migliorano il gameplay, sfidano i giocatori e forniscono un'esperienza equilibrata e divertente.
Rendere i giochi più divertenti con gli eventi basati sul tempo
Incorporando eventi basati sul tempo nei tuoi giochi, puoi creare un'esperienza dinamica e coinvolgente per i giocatori. Le sfide a tempo limitato aggiungono entusiasmo e urgenza, mentre power-up o ostacoli a tempo possono creare opportunità decisionali strategiche.
Sperimenta con diverse meccaniche basate sul tempo per trovare il giusto equilibrio per il tuo gioco e ricorda di eseguire test di gioco e iterazioni per massimizzare il divertimento e il divertimento.