Pensé que necesita saber cómo hacer estos eventos y el resto de la publicación es sobre eso. Si desea almacenar estos eventos, use una base de datos relacional o descríbalos por texto y use un lenguaje de scripting (analizará y evaluará Tú). :)
Lo que desea es reconocer los eventos ocurridos (1) y luego realizar algunas acciones que estos eventos exigen (imprimir mensaje, verificar pulsación de tecla ...) (2). También desea que estos eventos sucedan solo una vez (3).
Básicamente, desea verificar las condiciones y luego programar un comportamiento.
Cómo reconocer eventos (1)
- Desea reconocer eventos como estos "primer enemigo encontrado", "nuevo elemento ganado"
- si ocurre una parte genérica, " enemigo encontrado ", " elemento ganado " Usted verifica la parte específica " primero ...", " nuevo elemento ganado"
¿De qué están hechos los eventos?
En una visión más general, cada evento está compuesto de:
- precondiciones , las revisas
- acciones que se realizarán cuando se cumplan las condiciones previas (diga "" ¡Has matado al primer enemigo! ", di" "haz combos presionando los botones A y B", di "presiona 'enter' para continuar", requiere la tecla "enter")
Cómo almacenar estos eventos
En alguna estructura de datos:
- tener una lista de condiciones previas (cadenas o código si lo está escribiendo en algún lenguaje de alto nivel)
- tener una lista de acciones (pueden ser cadenas, el motor Quake usa cadenas para eventos)
También puede almacenarlo en una base de datos relacional, aunque parece que no es necesario, si desea hacer este juego en grande, es posible que necesite hacer uno.
Luego tienes que analizar estas cadenas / cosas. O puede usar un lenguaje de script como Python o LUA o un lenguaje como LISP, todos pueden analizarlo y ejecutarlo por usted. :)
Cómo usar estos eventos en el bucle del juego (2)
Necesitará estas dos estructuras de datos:
- cola de eventos (los eventos que están programados para ejecutarse se colocan aquí)
- cola de acciones (acciones programadas, eventos implican qué acciones se realizan)
Algoritmo:
- Si reconoces que se cumplen algunas de las condiciones previas del evento , lo pones en cola del evento
- (3) Entonces debe asegurarse de que este evento ocurra solo una vez si lo desea :) (por ejemplo, con la matriz booleana has_this_event_happened ["primer enemigo encontrado"])
- (si la cola de acciones está vacía, entonces) Si hay un evento en la cola de eventos Usted pone sus acciones en la cola de acciones y lo elimina de la cola de eventos
- Si hay acción en la cola de acciones, comienza a hacer lo que exige
- Si se realiza dicha acción, la elimina de la cola de acciones
Cómo realizar estas acciones por sí mismo (2)
Haces una lista de objetos, que tienen la función "actualizar". A veces se les llama entidades (en el motor Quake) o actores (en el motor Unreal).
- Usted inicia estos objetos cuando se les exige que comiencen en la cola de acciones.
- estos objetos se pueden usar para otras cosas, como algunos otros temporizadores. En Quake, estas entidades se usan para la lógica del juego completo, te recomiendo que leas algo de material al respecto .
Acción "decir algo"
- Imprimes algo en la pantalla
- Desea que este mensaje aparezca durante unos segundos.
- en "actualizar":
- hacer variable remove_me_after y disminuirla por el tiempo que pasó
- cuando variable es 0 Eliminas esta acción de cola de acciones
- También elimina este objeto (o programa que se elimine ...)
La acción "requiere clave"
- Depende de cómo quieras hacerlo, pero creo que tú haces un mensaje
- en "actualizar" ":
- Simplemente verifica el evento de pulsación de tecla
- Probablemente necesite algo de matriz / cola para contener eventos de pulsación de teclas
- luego puede eliminarlo de la cola de acciones y eliminar el objeto
Que métodos aprender