Salut à tous,
Vu que je ne fête pas Noel, j'en ai profité pour continuer à bosser ,mon livre sur les patterns et à refactorer mon code (ouais je sais je suis un gros Geek y'a pas 2 débiles qui font de la programmation le jour de Noel...)
J'utilise maintenant Doxygen pour générer de la doc....... en anglais ! Et vu mon niveau d'anglais ca craint ^^ Enfin, j'espère que vous comprendrez quand même !
Elle se trouve dans le répertoire doc à la racine.
J'ai aussi mis un MakeFile pour linux (celui de LittleWhite Merci), et j'ai mis la lib Allegro (version 4.2.3) dans le dossier lib, espérons que cette fois ci je n'ai pas fais de bêtise et que ca compilera du premier coup sous Linux.
Voilà la nouvelle hiérarchie des classes dans le répertoire src :
Afin de simplifier les écritures, j'ai défini des macros pour les classes Singletons :+ api/Allegro => gère l'init et le deinit de la lib Allegro, c'est un singleton
+ api/ImageManager => Charge et décharge les ressources en mémoire (Bitmaps), c'est un singleton
+ api/AllegroRenderer => Se charge de dessiner les sprites à l'écran et gère le double buffer. Hérite de la classe abtraite IRenderer
+ core/Game => Gère le jeu en lui même
+ core/GameEngine => Gère le moteur de jeu (fps, et cie...)
+ core/InputJoystick => Gère le joystick. Hérite de l'interface Input.
+ core/InputKeyboard => de même pour le clavier
+ core/InputManager => Se charge de loader/delete les différentes I/O possibles (clavier et joystick dans mon cas)
+ core/IRenderer => Interface qui gère l'affichage des sprites
+ core/ISprite => Interface qui gère un Sprite de base (position, taille, image...)
+ core/Input => Interface qui gère les I/O
+ game/AnimatedSprite => Gère un Sprite animé
+ game/ClassicalSprite => Gère un Sprite classique
+ game/World => Gère la zone de jeu. Une zone de jeu est composé de sprites qui sont tous issus d'interface ISprite.
+ tools/Logger => le logger de LittleWhite (il va finir par me dire que je lui vole tout )
+ tools/Color => Gère la couleur avec le rgba
+ tools/Functor => Foncteurs utilisés pour libérer les ressources des conteneurs de la STL
+ tools/Rect => Gère un rectangle simple
+ tools/Vect2D => Gère un vecteur 2D
+ tools/Size2D => Gère une taille en 2D
---> AL pour la classe Allegro
---> IM pour la classe ImageManager.
De plus, afin de séparer au maximum Allegro du moteur de jeu, j'utilise des identifiants pour les images qui sont stockés dans une map de la classe ImageManager. J'ai donc créé des méthodes permettant de récupérer la vraie image en fonction de son ID.
Niveau fonctionnalités :
Pas d'inquiétude pour l'instant, le jeu ne déplace qu'un personne dans les 8 directions possibles sans controles des bords, c'est rustique je sais ^^
Maintenant, le fameux lien :
http://www.tutoworld.com/temp/zelda_version_2.zip
Voilà, comme d'habitude, j'espère avoir des retours sur cette nouvelle conception, j'essaye au maximum de mettre en œuvre ce que j'ai appris mais c'est loin d'être facile. J'ai bien envie d'utiliser le pattern stratégie pour gérer les Behaviours possibles des entités mais je ne sais pas si c'est une bonne idée.
Difficile quand on est seul de se donner une idée sur la qualité de sa vision de la conception, surtout quand on est nul en Uml et cie
PS : Pour ceux qui arrivent en cours de route, je rappelle que le lien de la Démo est disponible ici :
http://www.tutoworld.com/temp/projet_zelda_2011.zip
PPS : Avec le recul, j'en reviens pas d'avoir codé cela avec un design aussi... comment dire.... pourri !
Merci à vous, bon Noël
Partager