Comme l'a mentionné sftrabbit, il s'agit d'une application parfaite pour une machine d'état.
Essentiellement, vous avez une sorte de structure arborescente. Chaque feuille / nœud contient des informations sur l'état actuel et des règles pour passer à l'état suivant. Chaque nœud peut contenir plusieurs sorties, selon la complexité dont vous avez besoin pour votre intrigue / flux de lecture.
Un bon analogue très lâche à ceci est un livre Choisissez votre propre aventure . Chaque page contient du texte décrivant une partie de l'histoire et les décisions que le joueur peut prendre. Chaque décision mène à une autre page. Certaines pages peuvent renvoyer vers des pages précédemment visitées, etc.
Les vieux jeux d'aventure textuels comme Zork et Leather Goddesses of Phobos , et les fameux jeux Sierra * Quest ( SpaceQuest avec Roger Wilco, le concierge de l'espace est l'un de mes favoris ) utilisaient une version très simple de ce type de système. Chaque pièce sur une carte était un état, avec des sorties liées à d'autres états ou pièces. L'acquisition d'un élément définit un indicateur dans un objet d'état global. Chaque pièce vérifierait ces drapeaux pour déterminer quels personnages ou objets étaient disponibles dans chaque pièce.
Ainsi, vos états peuvent être implémentés en tant que classe ou structure, chacun avec des propriétés pour:
Liste des ressources - liste des pointeurs vers les graphiques d'arrière-plan et tout ce dont vous avez besoin pour afficher la pièce / l'état / le niveau.
Conditions d'entrée - réalisations qui doivent déjà avoir été atteintes pour accéder à un niveau
Sorties - liens vers chaque sortie "suivante" possible. Le nord, le sud, l'est et l'ouest en sont quelques exemples, mais vous pouvez également inclure Door1, Teleport, etc. Lorsque vous tentez de quitter une pièce ou que la détermination d'une sortie / porte est "ouverte", votre jeu peut vérifier l'état suivant pour voir si ses conditions d'entrée sont remplies et modifier la façon dont la sortie est affichée à l'écran, ou tout simplement ne pas permettre au joueur de se déplacer dans cette direction.
Si vous voulez avoir de la fantaisie, vous pouvez inclure une version différente d'un état avec différentes conditions d'entrée, ce qui modifierait la façon dont la salle est présentée au joueur, ou les actions disponibles dans cette salle.
Votre écran de démarrage, mort / sur-écran, etc. peuvent tous être des états du système, similaires à la manière dont vous pouvez naviguer entre les écrans de menu. En fait, si vous disposez d'un tel système de menus, vous pouvez l'utiliser pour cela. Au lieu de flèches haut / bas et «entrer» pour naviguer dans un menu, vous rechercheriez des événements spécifiques dans la zone de jeu, comme marcher sur un pavé de téléportation, marcher du côté droit de l'écran, etc.
D'un point de vue administrateur, demandez-vous si vous pourriez ou non bénéficier de la création d'un outil d'administration qui vous permettrait de créer la machine d'état. Ajoutez des pièces à une carte, créez des liens entre elles, attribuez des ressources comme des images d'arrière-plan, etc. C'est probablement exagéré pour votre première tentative; il est trop facile d'être absorbé par la création d'outils d'administration et de ne jamais terminer le jeu. N'oubliez pas - vous n'écrivez pas de middleware, mais un jeu.
J'espère que cela t'aides.