Je travaille sur le jeu 2d topdown dans SFML 2, et j'ai besoin de trouver une manière élégante dont tout fonctionnera et s'emboîtera.
Permettez-moi de vous expliquer. J'ai un certain nombre de classes qui héritent d'une base abstraite qui fournit une méthode de dessin et une méthode de mise à jour à toutes les classes.
Dans la boucle du jeu, j'appelle update et puis dessine sur chaque classe, j'imagine que c'est une approche assez courante. J'ai des classes pour les tuiles, les collisions, le joueur et un gestionnaire de ressources qui contient toutes les tuiles / images / textures. En raison de la façon dont l'entrée fonctionne dans SFML, j'ai décidé que chaque classe gère l'entrée (si nécessaire) dans son appel de mise à jour.
Jusqu'à présent, je passais dans les dépendances au besoin, par exemple, dans la classe de joueur quand une touche de mouvement est enfoncée, j'appelle une méthode sur la classe de collision pour vérifier si la position vers laquelle le joueur veut se déplacer sera une collision, et ne déplacez le joueur que s'il n'y a pas de collision.
Cela fonctionne très bien pour la plupart, mais je crois que cela peut être mieux fait, je ne sais pas comment.
J'ai maintenant des choses plus complexes à mettre en œuvre, par exemple: un joueur peut marcher jusqu'à un objet au sol, appuyer sur une touche pour le ramasser / le piller et il apparaîtra ensuite dans l'inventaire. Cela signifie que certaines choses doivent se produire:
- Vérifiez si le joueur est à portée d'un objet lootable sur la touche, sinon ne continuez pas.
- Trouvez l'article.
- Mettez à jour la texture de l'image-objet sur l'élément de sa texture par défaut à une texture "pillée".
- Mettez à jour la collision de l'élément: il a peut-être changé de forme ou a été complètement supprimé.
- L'inventaire doit être mis à jour avec l'article ajouté.
Comment puis-je tout faire communiquer? Avec mon système actuel, je vais finir avec mes classes hors de portée et les appels de méthode les uns aux autres partout. Je pourrais lier toutes les classes dans un seul grand manager et donner à chacune une référence à la classe des parents managers, mais cela ne semble que légèrement mieux.
Toute aide / conseil serait grandement apprécié! Si quelque chose n'est pas clair, je suis heureux de développer les choses.