Parser de fichier + Consignes de base
This commit is contained in:
parent
c9342c0fe5
commit
4387e6dc3c
Binary file not shown.
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user