diff --git a/JournalDeBord/rapport/rapport.pdf b/JournalDeBord/rapport/rapport.pdf index 4a0e7ec..70c07c5 100644 Binary files a/JournalDeBord/rapport/rapport.pdf and b/JournalDeBord/rapport/rapport.pdf differ diff --git a/JournalDeBord/rapport/rapport.tex b/JournalDeBord/rapport/rapport.tex index c4409a8..a972ae3 100644 --- a/JournalDeBord/rapport/rapport.tex +++ b/JournalDeBord/rapport/rapport.tex @@ -3,6 +3,7 @@ \usepackage{amsmath} \usepackage{listings} \usepackage{tikz} +\usepackage{csquotes} \begin{document} @@ -25,30 +26,48 @@ Grace aux objectifs fixés par nos enseignants, nous sommes - je le pense - main Il va sans dire que comme pour tout projets, notre chemin a été semé d'embuches. En l'occurence, nous souhaitons faire part de l'abandon d'un de nos membre. Eddy Jiofak qui souhaite se réorienter. Nous lui souhaitons une bonne reconversion. +\section*{Objectifs} + +Voici l'objectif fixé par nos enseignants. (document de consignes) + +\begin{displayquote} + +Le but final de ce projet est de réaliser une application graphique en Java permettant de +jouer au jeu "Cats Organized Neatly". Ce jeu est un jeu de type "puzzle" où le joueur doit +placer des pièces de formes différentes pour combler l'aire de jeu. L'application devra permettre +de sauvegarder et charger une partie et de créer des niveaux automatiquement. + +\end{displayquote} + \newpage \section{Organisation} -Nous nous sommes régulièrement réunis pour savoir la direction que prendrait le projet. -Durant ces réunions, nous prenions note des idées émises. Puis celles-ci ont été mise au propre sur un blog auquel nous avons accés dans le but de retrouver facilement les informations voulues. +Lors de nos rasemblement pour le projet, toutes les idées émises se sont retrouvés sur un blog afin de pouvoir y accéder de manière efficace. +Ce blog nous sert également à garder une trace de l'évolution du projet. \subsection{Choix} \begin{itemize} - \item{Nous utiliserons le VCS git pour garder une trace de l'avancement du projet.} + \item{le VCS git pour garder une trace de l'avancement du projet. Avec comme remote une instance privée de gitea nous permettant de vérifier les MR/PR plus efficacement.} + \item{Une instance de DroneCI permettant de vérifier que le projet serait toujour compilable et que les tests ne seraient pas raté sans que nous nous en rendions compte.} + \item{Javafx, comme recommendé par nos enseignants.} + \item{Pieces les Niveaux sont stockées sous forme de matrice de booléen} + \item{Un parser de fichiers efficace et donnant des fichier légers.} \end{itemize} \subsubsection*{Shapes} -Les pieces comme le tableau sont représentés par une matrice de boolean \verb|boolean[][]|. +Les pieces comme le tableau sont représentés par une matrice de booléen \verb|boolean[][]|. Nous avons donc une classe \verb|shape|, parent de \verb|Map| et de \verb|Piece| dans lequel nous stockons notre matrice. -Ensuite, \verb|Map| Contient une liste de \verb|Piece| et ces pièces contiennent une position représentée par un \verb|Vec2|. -Cette position est la position du caré supérieur gauche +Ensuite, \verb|Map| Contient une liste de \verb|Piece|. Ces pièces contiennent une position représentée par la classe\verb|Vec2|. +Cette position est la position du caré supérieur gauche dans la \verb|Map|. +Avec toutes ces informations nous avons le nécéssaire pour le moteur du jeu. -Avec cette infrastructure, il est facilement possible de manipuler la carte et les pièces à notre guise dans le code. Il nous suffit de faire corespondre l'affichage avec +Il est facilement possible de manipuler la carte et les pièces. Il nous suffit alors de faire corespondre l'affichage avec ces différentes classe. Ce qui est entrepris par la classe \verb|GameUI|. -Le tout est géré par la classe Controller qui permet de choisir entre l'affichage d'un menu ou d'une partie en cours. +Le tout est géré par la classe \verb|Controller| qui permet de choisir entre l'affichage d'un menu ou d'une partie en cours. \subsection{Difficultés} @@ -64,6 +83,8 @@ Nous voulions que ce parser accomplisse les objectifs suivants: \item{Il sera possible d'enregistrer l'état d'une partie en cours.} \end{itemize} +Ce parser est implémenté par la classe \verb|BinaryParser|. + \subsubsection*{spécification} \begin{description} @@ -116,6 +137,24 @@ avec les pieces \draw[step=1cm,gray] (0.5, -2.5) grid (13.5, 4.5); \end{tikzpicture} +En plus de ce parser, et dans le cas où ce premier parser ne serait pas capable de stocker certaine carte (par exemple si une piece mesure plus de 15x15). +Nous avons également implémenté un parser trés simple en utilisant l'interface \verb|Serialize| de java. Ce parser est implémenté et fonctionnel, +mais n'est pas utilisé dans le projet à l'heure actuelle. + +ces deux parseurs implémentent l'interface \verb|FileParser| affin de pouvoir utiliser l'un où l'autre parser. + +Finalement, La classe \verb|FileParserFactory| permet une utilisation simple des parseurs. Celle-ci contient deux fonction statique. +\begin{itemize} + \item{Map loadMapFromFile(File)} + permet de retourner la Map d'un fichier chargé. + \item{void saveFileFromMap(File, Map)} + permet de sauvegarder une map dans un fichier. +\end{itemize} + +Dans le cas d'une sauvegarde ou d'un chargement, le parser est choisi en fonction de l'extension de fichier ('.level', '.slevel', .'serialized', '.sserialized'). + +L'avantage de ce system est que nous pouvons facilement ajouter d'autres parser de fichier dans le futurs. + \subsection{generateur de niveaux} Le generateur de niveau permet 3 niveaux de difficultés différents.