Eu pensei que você precisava saber como fazer esses eventos e o restante da postagem é sobre isso. Se você deseja apenas armazenar esses eventos, use algum banco de dados relacional ou descreva-os por texto e use a linguagem de script (ele fará a análise e a avaliação de eventos). Vocês). :)
O que você deseja é reconhecer os eventos ocorridos (1) e, em seguida, executar algumas ações exigidas por esses eventos (imprimir mensagem, verificar pressionamento de tecla ...) (2). Você também deseja que esses eventos ocorram apenas uma vez (3).
Basicamente, você deseja verificar as condições e agendar algum comportamento.
Como reconhecer eventos (1)
- Você deseja reconhecer eventos como estes "primeiro inimigo encontrado", "novo item ganho"
- se parte genérica acontecer, " inimigo encontrado ", " item ganho " Você verifica a parte específica " primeiro ...", " novo item ganho"
De que são feitos os eventos
Em uma visão mais geral, cada evento é composto de:
- condições prévias , você as verifica
- ações que serão executadas quando as condições prévias forem cumpridas (diga "" Você matou o primeiro inimigo! ", diga" "faça combos pressionando os botões A e B", diga "pressione 'enter' para continuar", pressione a tecla "enter")
Como armazenar esses eventos
Em alguma estrutura de dados:
- tenha uma lista de pré-condições (strings ou código se você estiver escrevendo em algum idioma de alto nível)
- tenha uma lista de ações (elas podem ser cadeias, o mecanismo do Quake usa cadeias para eventos)
Você também pode armazená-lo no banco de dados relacional, embora pareça que não é necessário. Se você deseja tornar esse jogo grande, talvez seja necessário criar um.
Você então precisa analisar essas strings / coisas. Ou você pode usar alguma linguagem de script como Python ou LUA ou linguagem como LISP, todas elas podem analisar e executar para você. :)
Como usar esses eventos no loop do jogo (2)
Você precisará destas duas estruturas de dados:
- fila de eventos (os eventos que estão programados para serem executados são colocados aqui)
- fila de ações (ações agendadas, eventos implicam quais ações são executadas)
Algoritmo:
- Se você reconhecer alguns dos eventos 's pré-condições são satisfeitas Você colocá-lo na fila de eventos
- (3) Então você deve garantir que esse evento ocorra apenas uma vez se desejar :) (por exemplo, com o array booleano has_this_event_happened ["first inimigo found"])
- (se a fila de ações estiver vazia, então) Se houver evento na fila de eventos Você coloca suas ações na fila de ações e remove-o da fila de eventos
- Se houver ação na fila de ações Você começará a fazer o que é exigido por ela
- Se essa ação for realizada, você a remove da fila de ações
Como fazer essas ações em si (2)
Você cria uma lista de objetos que possuem a função "update". Às vezes, são chamadas de entidades (no mecanismo do Quake) ou de atores (no mecanismo do Unreal).
- Você inicia esses objetos quando eles são solicitados a iniciar na fila de ações.
- esses objetos podem ser usados para outras coisas, como alguns outros temporizadores. No Quake, essas entidades são usadas para toda a lógica do jogo, eu recomendo que você leia algum material sobre isso .
Ação "diga alguma coisa"
- Você imprime algo na tela
- Você deseja que esta mensagem apareça por alguns segundos
- em "atualização":
- faça a variável remove_me_after e diminua-a pelo tempo que passou
- quando a variável é 0 Você remove esta ação da fila de ações
- Você também remove este objeto (ou agende para que seja removido ...)
Ação "exigir chave"
- Depende de como você quer fazer isso, mas acho que você faz uma mensagem
- em "atualização" ":
- Você acabou de verificar o evento de pressionamento de tecla desejado
- Você provavelmente precisará de alguma matriz / fila para armazenar eventos de pressionamento de tecla
- Você pode removê-lo da fila de ações e remover o objeto
Quais métodos aprender