Je pensais que vous devez savoir comment créer ces événements et le reste du message en est question.Si vous voulez simplement stocker ces événements, utilisez une base de données relationnelle ou décrivez-les par texte et utilisez un langage de script (il fera l'analyse et l'évaluation pour Vous). :)
Ce que vous voulez, c'est reconnaître les événements qui se sont produits (1), puis effectuer certaines actions qui sont exigées par ces événements (imprimer le message, vérifier la pression des touches ...) (2). Vous souhaitez également que ces événements ne se produisent qu'une seule fois (3).
Fondamentalement, vous souhaitez vérifier les conditions, puis planifier un comportement.
Comment reconnaître les événements (1)
- Vous voulez reconnaître des événements comme ceux-ci "premier ennemi rencontré", "nouvel objet gagné"
- si une pièce générique se produit, " ennemi rencontré ", " objet gagné " Vous vérifiez la pièce spécifique "d' abord ...", " nouvel objet gagné"
De quoi sont faits les événements
De manière plus générale, chacun de ces événements est composé de:
- conditions préalables , vous les vérifiez
- les actions qui seront effectuées lorsque les conditions préalables seront remplies (dites "" Vous avez tué le premier ennemi! ", dites" "créez des combos en appuyant sur les boutons A et B", dites "appuyez sur 'Entrée' pour continuer", appuyez sur la touche "Entrée")
Comment stocker ces événements
Dans certaines structures de données:
- avoir une liste de conditions préalables (chaînes ou code si vous l'écrivez dans un langage de haut niveau)
- avoir une liste d'actions (il peut s'agir de chaînes, le moteur Quake utilise des chaînes pour les événements)
Vous pouvez également le stocker dans une base de données relationnelle, bien qu'il semble que ce ne soit pas nécessaire, si vous voulez créer ce jeu en grand, vous devrez peut-être en créer un.
Vous devez ensuite analyser ces chaînes / choses. Ou vous pouvez utiliser un langage de script comme Python ou LUA ou un langage comme LISP, ils peuvent tous l'analyser et l'exécuter pour vous. :)
Comment utiliser ces événements dans la boucle de jeu (2)
Vous aurez besoin de ces deux structures de données:
- file d'attente d'événements (les événements dont l'exécution est planifiée sont indiqués ici)
- file d'attente d'actions (actions planifiées, les événements impliquent quelles actions sont effectuées)
Algorithme:
- Si vous reconnaissez certains des cas de » les conditions préalables sont remplies Vous le mettez dans la file d'événements
- (3) Ensuite, vous devez vous assurer que cet événement ne s'est produit qu'une seule fois si vous le souhaitez :) (par exemple avec le tableau booléen has_this_event_happened ["premier ennemi rencontré"])
- (si la file d'attente d'actions est vide, alors) S'il y a un événement dans la file d'attente d'événements Vous mettez ses actions dans la file d'attente d'actions et le supprimez de la file d'attente d'événements
- S'il y a une action dans la file d'attente d'action Vous commencez à faire ce qui est demandé par elle
- Si une telle action est effectuée Vous la supprimez de la file d'attente d'actions
Comment réaliser ces actions lui-même (2)
Vous faites la liste des objets, qui ont la fonction "mise à jour". Ils sont parfois appelés entités (dans le moteur Quake) ou acteurs (dans le moteur Unreal).
- Vous démarrez ces objets lorsqu'ils doivent démarrer dans la file d'attente d'actions.
- ces objets peuvent être utilisés pour d'autres choses telles que d'autres minuteries. Dans Quake, ces entités sont utilisées pour toute la logique du jeu, je vous recommande de lire quelques informations à ce sujet .
Action "dire quelque chose"
- Vous imprimez quelque chose à l'écran
- Vous voulez que ce message apparaisse pendant quelques secondes
- dans "mise à jour":
- faire la variable remove_me_after et la diminuer par le temps qui s'est écoulé
- lorsque la variable est 0 Vous supprimez cette action de la file d'attente d'actions
- Vous supprimez également cet objet (ou planifiez sa suppression ...)
Action "nécessite une clé"
- Cela dépend de la façon dont vous voulez le faire, mais je pense que vous faites un message
- dans "mise à jour" ":
- Vous venez de rechercher l'événement de frappe souhaité
- Vous avez probablement besoin d'un tableau / d'une file d'attente pour contenir les événements de pression de touche
- alors vous pouvez le supprimer de la file d'attente d'actions et supprimer l'objet
Quelles méthodes apprendre