Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème de conception  (Lu 1082 fois)

0 Membres et 1 Invité sur ce sujet

Storaz

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Problème de conception
« le: Juillet 28, 2015, 11:44:35 am »
Bonjour,

Je suis entrain de réaliser un jeu avec SFML et j'ai du mal à me décider sur comment organiser mes classes.

Voici ce à quoi je pensais :

- classe Game dans laquelle tourne la boucle du jeu (ça, c'est la base)
      - classe World qui va gérer la map, le joueur ...
            - classe Level qui va contenir un array de Room et draw/update la Room actuelle
                  - classe Room qui correspond à une salle, qui va load et générer le tableau de vertices de la salle,                puis la draw / update
                         (- classe Mobs)
             (- classe Player)

J'aurais également une classe Player, qui va mouvoir le personnage en fonction de l'input, gérer les collisions et faire bouger le sprite... et également une classe Entity de laquelle hériteront des Mobs.

Mon problème est que je ne sais pas comment gérer ces classes Player et Mob.

A la base, je pensais stocker une liste de Mobs dans la classe Room, ainsi chaque Room pourrait générer ses propres mobs en connaissant les coordonnées et le type de chaque bloc etc, rendant la génération plus aisée.

Mais où devrait alors se situer le Player ? Probablement dans World, mais le plus gros problème est alors que je n'ai aucune idée de comment je pourrais communiquer entre les Mobs et le Player, pour gérer les collisions.
Par exemple, si un Mob attaque en lançant une boule de feu puis une deuxième, comment puis-je savoir s'il y a collision entre le player et une des boules de feu, les mobs étant stockés dans Room et le player dans World ?

Je pourrais certes faire une chaîne de Get pour récupérer la liste dans le update de World, mais je ne sais pas si c'est le plus optimisé à faire.. De plus, admettons que le Player attaque (avec une épée), j’appellerais donc une méthode attack dans Player et je récupérerais une bouding box de la zone où des dégats seront infligés, mais comment vérifier si elle match avec un Mob, à partir de l'architecture de mes classes ? Je ne peux pas accéder aux mobs depuis la classe Player ...

De plus, dans le update de World, est-ce que la bonne marche à suivre est d'abord de déplacer le Player en fonction de l'input et des collisions ainsi que de déplacer le mob en fonction de l'aléatoire et aussi des collisions, puis de vérifier toutes les collisions entre par ex les boules de feu et le joueur, ou alors l'inverse ?

Merci beaucoup !

PaulOf64

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Problème de conception
« Réponse #1 le: Août 17, 2015, 08:07:19 pm »
Je pense déjà que tu pourrai faire hériter les mobs ET le joueur de Entity, voire même les "boules de feu" et autres, mais ça dépendra de ce que tu fais dans Entity.
Ensuite, je serai d'avis de mettre les Entity dans World et de gérer les collisions dans Entity. Par exemple :
Boucle qui parcours les Mob+Projectiles :
----joueur.collision(objetQuiFaitMal);
----Boucle qui parcours les projectiles du joueur:
--------mobs.collision(projectilesDuJoueur);

Evidemment c'est très schématique, mais ça donne une idée de ce que tu pourrai faire.
Si je n'ai pas été claire, n'hésite pas à poser d'autres question ou à me demander de développer certains points.