Pensavo che dovessi sapere come organizzare questi eventi e il resto dei post è su di esso, se vuoi semplicemente archiviare questi eventi, utilizza un database relazionale o decodificali tramite testo e usa il linguaggio di scripting (eseguirà l'analisi e la valutazione per Voi). :)
Quello che vuoi è riconoscere gli eventi accaduti (1) e quindi fare alcune azioni richieste da questi eventi (stampa messaggio, verifica la pressione dei tasti ...) (2). Vuoi anche far accadere questi eventi una sola volta (3).
Fondamentalmente si desidera verificare le condizioni e quindi pianificare alcuni comportamenti.
Come riconoscere gli eventi (1)
- Vuoi riconoscere eventi come questi "primo nemico incontrato", "nuovo oggetto guadagnato"
- se succede una parte generica, " nemico incontrato ", " oggetto guadagnato " Controlli la parte specifica " prima ...", " nuovo oggetto guadagnato"
Di cosa sono fatti gli eventi
In una visione più generale, ciascuno di questi eventi è composto da:
- precondizioni , le controlli
- azioni che verranno eseguite quando saranno soddisfatte le condizioni preliminari (dì "" Hai schiaffeggiato il primo nemico! ", dì" "crea combinazioni premendo i pulsanti A e B", dì "premi 'invio' per continuare", tasto "invio")
Come conservare questi eventi
In alcune strutture di dati:
- avere un elenco di precondizioni (stringhe o codice se lo si sta scrivendo in un linguaggio di alto livello)
- avere un elenco di azioni (potrebbero essere stringhe, il motore di Quake utilizza stringhe per eventi)
Puoi anche memorizzarlo nel database relazionale, anche se sembra che non sia necessario, se vuoi creare questo gioco in grande potresti averne bisogno.
Devi quindi analizzare queste stringhe / cose. Oppure puoi usare un linguaggio di scripting come Python o LUA o un linguaggio come LISP, tutti possono analizzarlo ed eseguirlo per te. :)
Come usare questi eventi nel game loop (2)
Avrai bisogno di queste due strutture di dati:
- coda di eventi (gli eventi programmati per essere eseguiti vengono inseriti qui)
- coda di azioni (azioni pianificate, eventi implicano quali azioni vengono eseguite)
Algoritmo:
- Se si riconosce alcuni dei evento 's precondizioni sono soddisfatte Lo mette in coda di eventi
- (3) Quindi dovresti assicurarti che questo evento si sia verificato solo una volta se vuoi :) (ad esempio con array booleano has_this_event_happened ["primo nemico incontrato"])
- (se la coda delle azioni è vuota, quindi) Se c'è un evento nella coda degli eventi Metti le sue azioni nella coda delle azioni e rimuovilo dalla coda degli eventi
- Se è presente un'azione nella coda di azioni Si inizia a fare ciò che è richiesto da essa
- Se tale azione viene eseguita, la si rimuove dalla coda azioni
Come effettuare queste azioni (2)
Fai una lista di oggetti, che hanno la funzione "aggiorna". A volte sono chiamati entità (nel motore di Quake) o attori (nel motore di Unreal).
- Questi oggetti vengono avviati quando viene richiesto di avviarli nella coda di azioni.
- questi oggetti possono essere usati per altre cose come altri timer. In Quake queste entità sono utilizzate per l'intera logica di gioco, ti consiglio di leggere del materiale a riguardo .
Azione "dì qualcosa"
- Stampi qualcosa sullo schermo
- Vuoi che questo messaggio appaia per pochi secondi
- in "aggiorna":
- rendere variabile remove_me_after e diminuirla nel tempo che è passato
- quando la variabile è 0 Rimuovete questa azione dalla coda di azioni
- Rimuovi anche questo oggetto (o pianificalo per la rimozione ...)
Azione "richiede chiave"
- Dipende da come vuoi farlo, ma penso che tu faccia un messaggio
- in "aggiorna" ":
- Basta controllare l'evento keypress desiderato
- Probabilmente avrai bisogno di qualche array / coda per contenere eventi keypress
- quindi è possibile rimuoverlo dalla coda di azioni e rimuovere l'oggetto
Quali metodi per imparare