Corriger qlq faute vu sur relecture
This commit is contained in:
parent
2d27786e48
commit
229782c772
@ -20,9 +20,9 @@
|
|||||||
|
|
||||||
\section*{Introduction}
|
\section*{Introduction}
|
||||||
|
|
||||||
Lors de ce deuxième quadrimèstre, le projet Informatique proposé par notre université fut une partie intégrante de notre emploi du temps.
|
Lors de ce deuxième quadrimèstre, le projet Informatique proposé par notre université fut partie intégrante de notre emploi du temps.
|
||||||
Régulièrement nous nous sommes rassemblés pour nous organiser et trouver une direction dans laquelle nous voulions voir notre projet évoluer.
|
Régulièrement nous nous sommes rassemblés pour nous organiser et trouver une direction dans laquelle nous voulions voir notre projet évoluer.
|
||||||
Grace aux objectifs fixés par nos enseignants, nous sommes - je le pense - maintenant plus apte à nous confronter à ce genre d'objectifs. Tant au niveau personel qu'en tant que groupe.
|
Grâce aux objectifs fixés par nos enseignants, nous sommes - je le pense - maintenant plus apte à nous confronter à ce genre d'objectifs. Tant au niveau personel qu'en tant que groupe.
|
||||||
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.
|
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.
|
Nous lui souhaitons une bonne reconversion.
|
||||||
|
|
||||||
@ -43,15 +43,15 @@ de sauvegarder et charger une partie et de créer des niveaux automatiquement.
|
|||||||
|
|
||||||
\section{Organisation}
|
\section{Organisation}
|
||||||
|
|
||||||
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.
|
Lors de nos rassemblement 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.
|
Ce blog nous sert également à garder une trace de l'évolution du projet.
|
||||||
|
|
||||||
\subsection{Choix}
|
\subsection{Choix}
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\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{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 soit toujour compilable et que les tests ne soient pas ratés sans que nous nous en rendions compte.}
|
\item{Une instance de DroneCI permettant de vérifier que le projet soit toujours compilable et que les tests ne soient pas ratés sans que nous nous en rendions compte.}
|
||||||
\item{Javafx, comme recommendé par nos enseignants.}
|
\item{Javafx, comme recommandé par nos enseignants.}
|
||||||
\item{Les pièces et niveaux sont stockées sous forme de matrice de booléen}
|
\item{Les pièces et niveaux sont stockées sous forme de matrice de booléen}
|
||||||
\item{Un parser de fichiers efficace et donnant des fichier légers.}
|
\item{Un parser de fichiers efficace et donnant des fichier légers.}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
@ -61,11 +61,11 @@ Ce blog nous sert également à garder une trace de l'évolution du projet.
|
|||||||
Les pièces ainsi que la carte sont représentés par une matrice de booléen \verb|boolean[][]|.
|
Les pièces ainsi que la carte 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.
|
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|. Ces pièces contiennent une position représentée par la classe\verb|Vec2|.
|
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|.
|
Cette position est la position du carré supérieur gauche dans la \verb|Map|.
|
||||||
Avec toutes ces informations nous avons le nécéssaire pour le moteur du jeu.
|
Avec toutes ces informations nous avons le nécessaire pour le moteur du jeu.
|
||||||
|
|
||||||
Il est facilement possible de manipuler la carte et les pièces. Il nous suffit alors de faire corespondre l'affichage avec
|
Il est facilement possible de manipuler la carte et les pièces. Il nous suffit alors de faire correspondre l'affichage avec
|
||||||
ces différentes classe. Ce qui est entrepris par la classe \verb|GameUI|.
|
ces différentes classes. Ce qui est entrepris par la classe \verb|GameUI|.
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ Pour la rétention des niveaux, plusieurs possibilités s'offraient à nous. Nou
|
|||||||
Nous voulions que ce parser accomplisse les objectifs suivants:
|
Nous voulions que ce parser accomplisse les objectifs suivants:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item{Les données du niveau seront encapsulées dans un header/footer pour laisser la possibilité d'enregistrer plus d'informations (images/musiques) dans un seul fichier dans le futur.}
|
\item{Les données du niveau seront encapsulées dans un header/footer pour laisser la possibilité d'enregistrer plus d'informations (images/musiques) dans un seul fichier dans le futur.}
|
||||||
\item{La taille du fichier devra être aussi petite que possible, tout en gardant les informations nécéssaire au bon fonctionnement du jeu.}
|
\item{La taille du fichier devra être aussi petite que possible, tout en gardant les informations nécessaire au bon fonctionnement du jeu.}
|
||||||
\item{Il sera possible d'enregistrer l'état d'une partie en cours.}
|
\item{Il sera possible d'enregistrer l'état d'une partie en cours.}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
@ -95,12 +95,12 @@ Ce parser est implémenté par la classe \verb|BinaryParser|.
|
|||||||
Nous pouvons déterminer ce nombre grace à
|
Nous pouvons déterminer ce nombre grace à
|
||||||
$$\frac{\text{largeur} * \text{hauteur } (+1 \text{ si multiple de } 8)}{8}$$
|
$$\frac{\text{largeur} * \text{hauteur } (+1 \text{ si multiple de } 8)}{8}$$
|
||||||
en division entière.}
|
en division entière.}
|
||||||
\item[Nombre de pièces]{ L'octet suivant l' (les) octet(s) qui forme(nt) la carte represente le nombre de pièces}
|
\item[Nombre de pièce]{ L' (les) octet(s) qui forme(nt) la carte représente le nombre de pièce}
|
||||||
\item[Pour chaques pièces]{
|
\item[Pour chaques pièces]{
|
||||||
\
|
\
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Taille de la pièce]{La taille est représentée sur un seul octet sous forme de nibble\footnote{https://en.wikipedia.org/wiki/Nibble}. La première partie du nibble est la largeur. La seconde partie du nibble est la hauteur }
|
\item[Taille de la pièce]{La taille est représentée sur un seul octet sous forme de nibble\footnote{https://en.wikipedia.org/wiki/Nibble}. La première partie du nibble est la largeur. La seconde partie du nibble est la hauteur }
|
||||||
\item[Forme de la pièce]{ Chaques cellules de la pièce est représenté par un 1 ou un 0. la manière de le représenter et exactement la même que pour la forme de la carte }
|
\item[Forme de la pièce]{ Chaques cellules de la pièce est représentée par un 1 ou un 0. la manière de le représenter et exactement la même que pour la forme de la carte }
|
||||||
\end{description}
|
\end{description}
|
||||||
Dans le cas où le fichier sauvegarde l'état de la partie, à la fin, et pour chaques pièces dans le même ordre que l'apparition des pièces:
|
Dans le cas où le fichier sauvegarde l'état de la partie, à la fin, et pour chaques pièces dans le même ordre que l'apparition des pièces:
|
||||||
\begin{description}
|
\begin{description}
|
||||||
@ -119,14 +119,14 @@ Voici le 'hexdump' du niveau 11
|
|||||||
b0 22 70 22 b0 11 80 53 4d 45 |."p"...SME|
|
b0 22 70 22 b0 11 80 53 4d 45 |."p"...SME|
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
représente une carte de la forme
|
représente une carte de la forme :
|
||||||
|
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\filldraw[blue] (0,0) -- (0,5) -- (3,5) -- (3,4) -- (5,4) -- (5,0) -- cycle;
|
\filldraw[blue] (0,0) -- (0,5) -- (3,5) -- (3,4) -- (5,4) -- (5,0) -- cycle;
|
||||||
\draw[step=1cm,gray] (0, 0) grid (5,5);
|
\draw[step=1cm,gray] (0, 0) grid (5,5);
|
||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
|
|
||||||
avec les pièces
|
avec les pièces :
|
||||||
|
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\fill[red] (1,1) rectangle (4,4);
|
\fill[red] (1,1) rectangle (4,4);
|
||||||
@ -139,12 +139,12 @@ avec les pièces
|
|||||||
\end{tikzpicture}
|
\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 pièce mesure plus de 15x15).
|
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 pièce 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,
|
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.
|
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.
|
Ces deux parseurs implémentent l'interface \verb|FileParser| afin 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.
|
Finalement, La classe \verb|FileParserFactory| permet une utilisation simple des parseurs. Celle-ci contient deux fonctions statiques.
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item{Map loadMapFromFile(File)}
|
\item{Map loadMapFromFile(File)}
|
||||||
permet de retourner la Map d'un fichier chargé.
|
permet de retourner la Map d'un fichier chargé.
|
||||||
@ -158,7 +158,7 @@ L'avantage de ce system est que nous pouvons facilement ajouter d'autres parser
|
|||||||
|
|
||||||
\subsection{Générateur de niveaux aléatoire}
|
\subsection{Générateur de niveaux aléatoire}
|
||||||
|
|
||||||
Le générateur de niveaux a été concue de sorte à proposé trois sorte de niveaux différents :
|
Le générateur de niveaux a été conçue de sorte à proposé trois sorte de niveaux différents :
|
||||||
\item{Niveau Facile}
|
\item{Niveau Facile}
|
||||||
\item{Niveau Moyen}
|
\item{Niveau Moyen}
|
||||||
\item{Niveau Difficile}
|
\item{Niveau Difficile}
|
||||||
@ -168,24 +168,26 @@ L'algorithme derrière est le même en voici le principe :
|
|||||||
\item{Gestion du plateau :}
|
\item{Gestion du plateau :}
|
||||||
Le joueur choisi une difficulté en fonction de la difficulté choisie la grandeur du plateau de jeu sera différente.
|
Le joueur choisi une difficulté en fonction de la difficulté choisie la grandeur du plateau de jeu sera différente.
|
||||||
Si la difficulté est facile l'algorithme s'arrête la.
|
Si la difficulté est facile l'algorithme s'arrête la.
|
||||||
Par contre si la difficulté choisie est moyen alors en plus de générer un map plus grande un curseur parcours les extrémités
|
Par contre si la difficulté choisie est moyen alors en plus de générer un map plus grande, un curseur parcours les extrémités
|
||||||
du niveau et mets de manière aléatoire des trous. Même principe pour le niveau de difficulté difficile mais en plus d'une taille encore plus grandre
|
du niveau et mets de manière aléatoire des trous dedans.
|
||||||
la curseur parcours avec une profondeur de deux afin de mettre des trous de le niveau. Cela à inclus au code une vérifiction afin de
|
Nous nous sommes basé sur le même principe pour le niveau de difficulté difficile mais en plus d'une taille encore plus grande,
|
||||||
|
le curseur parcours avec une profondeur de deux afin de mettre des trous de la map. Cela à inclus au code une vérifiction afin de
|
||||||
supprimer toutes les cases isolées.
|
supprimer toutes les cases isolées.
|
||||||
|
|
||||||
\item{Gestion des pièces : }
|
\item{Gestion des pièces : }
|
||||||
|
|
||||||
Peu importe la difficulté du niveau voici le fonctionnement
|
Peu importe la difficulté du niveau voici le fonctionnement :
|
||||||
|
|
||||||
Une taille maximum des pièces a été fixé au préalable à 3x3, par la suite un curseur parcours le niveau creer en commençant en haut à gauche
|
Une taille maximum des pièces a été fixée au préalable à 3x3, par la suite un curseur parcours le niveau créer en commençant en haut à gauche
|
||||||
puis part dans 8 directions différentes. (en haut à gauche, en haut au centre,en haut à droite, à droite au centre, en bas à droite, en bas au centre,
|
puis part dans 8 directions différentes. (en haut à gauche, en haut au centre,en haut à droite, à droite au centre, en bas à droite, en bas au centre,
|
||||||
en bas à gauche et au centre à gauche) Ce qui explique la taille maximum de la pièce, si le curseur rencontre un obstacle(trou dans le niveau ou
|
en bas à gauche et au centre à gauche) Ce qui explique la taille maximum de la pièce. Si le curseur rencontre un obstacle(trou dans le niveau ou
|
||||||
espace déjà utilisé pour une autre pièce) alors la pièce est modifié (comporte un false à l'endroit en question) si pas l'espace est rajouté sur la pièce.
|
espace déjà utilisé pour une autre pièce) alors la pièce est modifié (comporte un 0 (false) à l'endroit en question) si pas l'espace est rajouté sur la pièce.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\subsection{Fluidité et Simplicité de l'interface grahique}
|
\subsection{Fluidité et Simplicité de l'interface grahique}
|
||||||
|
|
||||||
En effet, tout l'affichage du jeu tient sur 5 fichiers différents
|
En effet, tout l'affichage du jeu tient sur 5 fichiers différents
|
||||||
\item
|
\item
|
||||||
{Le controller} : qui s'occupe d'afficher chaque scènes différentes en fonction des actions du joueur.
|
{Le controller} : qui s'occupe d'afficher chaque scènes différentes en fonction des actions du joueur.
|
||||||
@ -195,30 +197,31 @@ qui permet d'accéder aux niveaux de base proposé par le jeu Cats Organized Nea
|
|||||||
généré aléatoirement en fonction du niveau de difficulté choisi.
|
généré aléatoirement en fonction du niveau de difficulté choisi.
|
||||||
De plus un dernier boutons "Load Game" permet de récupérer directement le niveau lorsque le joueur l'a quitté.
|
De plus un dernier boutons "Load Game" permet de récupérer directement le niveau lorsque le joueur l'a quitté.
|
||||||
\item
|
\item
|
||||||
{Le MenuLevel} : qui s'occupe d'afficher les niveaux proposés dans le jeu et qui en fonction du jour choisir change tout les buttons
|
{Le MenuLevel} : qui s'occupe d'afficher les niveaux proposés dans le jeu et qui en fonction du jour choisir change tout les boutons
|
||||||
et les niveaux disponibles.
|
et les niveaux disponibles.
|
||||||
\item
|
\item
|
||||||
{ScreenLevelFinish} qui s'affiche à l'écran dès que le joueur a fini le niveau celui-ci propose également de réessaye le niveau ou de retourner au menu principal.
|
{ScreenLevelFinish} : qui s'affiche à l'écran dès que le joueur a fini le niveau celui-ci propose également de réessaye le niveau ou de retourner au menu principal.
|
||||||
\item
|
\item
|
||||||
{Le GameUI} qui s'occupe de placer le plateau de jeu au milieu de l'écran ainsi que d'afficher les pièces à sa droite, mais aussi
|
{Le GameUI} : qui s'occupe de placer le plateau de jeu au milieu de l'écran ainsi que d'afficher les pièces à sa gauche, mais aussi
|
||||||
de gerer le depassement pour ne pas que les pièces soient affichées en dehors de l'écran
|
de gérer le dépassement pour ne pas que les pièces soient affichées en dehors de l'écran.
|
||||||
|
|
||||||
|
|
||||||
\section{Points Faibles}
|
\section{Points Faibles}
|
||||||
|
|
||||||
\item {L'interface}
|
\item {L'interface}
|
||||||
Bien que l'interface graphique permet de naviguer de manière fluide dans le jeu il manque clairement un manque d'animation et de dynamysme ie :
|
Bien que l'interface graphique permet de naviguer de manière fluide dans le jeu, il manque clairement un manque d'animation et de dynamysme ie :
|
||||||
transition de page à une autre, apparition des boutons ainsi qu'un manque de musique.
|
transition de page à une autre, apparition des boutons ainsi qu'un manque de musique.
|
||||||
Toujours concernant l'affichage l'adaptation à la taille de l'écran peut être revu.
|
Toujours concernant l'affichage l'adaptation à la taille de l'écran peut être revu.
|
||||||
\item {Le design}
|
\item {Le design}
|
||||||
De plus suite à la perte de notre membre nous n'avons pas su gérer sa partie du projet qui concernait le design/textures des pièces ainsi que l'histoire jeu préparer en amont.
|
|
||||||
|
De plus suite à la perte de notre membre nous n'avons pas su gérer la partie du projet qui concernant le design/textures des pièces ainsi que l'histoire jeu préparer auparavant.
|
||||||
|
|
||||||
\section{Apports Positifs et négatifs}
|
\section{Apports Positifs et négatifs}
|
||||||
|
|
||||||
\subsection{Anthony}
|
\subsection{Anthony}
|
||||||
|
|
||||||
Personellement, Ce projet m'a permis de me plonger dans la conception d'un format de fichier personnalisé.
|
Personellement, ce projet m'a permis de me plonger dans la conception d'un format de fichier personnalisé.
|
||||||
C'est une chôse que je n'avais pas encore fait jusqu'a maintenant.
|
C'est une chôse que je n'avais pas encore fait jusqu'à maintenant.
|
||||||
Et malgré mes efforts pour prévoir un maximum de choses à l'avance afin d'éviter de devoir
|
Et malgré mes efforts pour prévoir un maximum de choses à l'avance afin d'éviter de devoir
|
||||||
modifier ma spécification pendant le dévelopement. Je me suis vite rendu compte que je n'avais pas pensé
|
modifier ma spécification pendant le dévelopement. Je me suis vite rendu compte que je n'avais pas pensé
|
||||||
à tout et que je devrais changer des choses pour pouvoir arriver à mes fins.
|
à tout et que je devrais changer des choses pour pouvoir arriver à mes fins.
|
||||||
@ -229,9 +232,9 @@ J'en prend bonne notes.
|
|||||||
|
|
||||||
\subsection{Matteo}
|
\subsection{Matteo}
|
||||||
|
|
||||||
Il est claire que je peux tirer plusieurs enseignement grâce à la realisation de notre projet.
|
Il est claire que je peux tirer plusieurs enseignement grâce à la réalisation de notre projet.
|
||||||
Tout d'abord, j'ai pu en apprendre beaucoup plus concernant la P.O.O en java, mais à ma grande surprise j'en ai appris
|
Tout d'abord, j'ai pu en apprendre beaucoup plus concernant la P.O.O en java, mais aussi j'en ai appris
|
||||||
aussi sur l'utilisation de la bibliotheque JavaFx.
|
d'avantage sur l'utilisation de la bibliotheque JavaFx.
|
||||||
|
|
||||||
De plus, durant la réalisation du projet, comme dit précédemment nous avons utilisé plusieurs outils et dont la plus grande découverte pour moi :
|
De plus, durant la réalisation du projet, comme dit précédemment nous avons utilisé plusieurs outils et dont la plus grande découverte pour moi :
|
||||||
Git. Qui révèle son intérêt pour les travaux de groupes, et qui selon moi ce révélera tout aussi essentiel pour mes futurs projets
|
Git. Qui révèle son intérêt pour les travaux de groupes, et qui selon moi ce révélera tout aussi essentiel pour mes futurs projets
|
||||||
|
Loading…
Reference in New Issue
Block a user