Rapport #53
@ -52,13 +52,13 @@ Ce blog nous sert également à garder une trace de l'évolution 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 soit toujour 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{Les pieces 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.}
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection*{Shapes}
|
||||
|
||||
tonitch marked this conversation as resolved
|
||||
Les pieces 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.
|
||||
tonitch marked this conversation as resolved
Mat_02
commented
enregistrer* enregistrer*
|
||||
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|.
|
||||
@ -96,15 +96,15 @@ Ce parser est implémenté par la classe \verb|BinaryParser|.
|
||||
$$\frac{\text{largeur} * \text{hauteur } (+1 \text{ si multiple de } 8)}{8}$$
|
||||
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[Pour chaques pieces]{
|
||||
\item[Pour chaques pièces]{
|
||||
\
|
||||
\begin{description}
|
||||
\item[Taille de la piece]{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 piece 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[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 }
|
||||
\end{description}
|
||||
Dans le cas où le fichier sauvegarde l'état de la partie, à la fin, et pour chaques pieces 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}
|
||||
\item[Position de la pièce]{2 octets par pieces, 1 octet pour sa position en x et 1 octet pour sa position en y.
|
||||
\item[Position de la pièce]{2 octets par pièces, 1 octet pour sa position en x et 1 octet pour sa position en y.
|
||||
Dans le cas où la pièce est flotante (n'est pas placée dans la carte.), les octets contenant les caractères F puis L (0x464C) remplacent les coordonées}
|
||||
\end{description}
|
||||
}
|
||||
@ -126,7 +126,7 @@ représente une carte de la forme
|
||||
\draw[step=1cm,gray] (0, 0) grid (5,5);
|
||||
\end{tikzpicture}
|
||||
|
||||
avec les pieces
|
||||
avec les pièces
|
||||
|
||||
\begin{tikzpicture}
|
||||
\fill[red] (1,1) rectangle (4,4);
|
||||
@ -138,7 +138,7 @@ 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).
|
||||
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,
|
||||
mais n'est pas utilisé dans le projet à l'heure actuelle.
|
||||
|
||||
@ -156,9 +156,34 @@ Dans le cas d'une sauvegarde ou d'un chargement, le parser est choisi en fonctio
|
||||
|
||||
L'avantage de ce system est que nous pouvons facilement ajouter d'autres parser de fichier dans le futurs.
|
||||
|
||||
\subsection{generateur de niveaux}
|
||||
\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 :
|
||||
\item{Niveau Facile}
|
||||
\item{Niveau Moyen}
|
||||
\item{Niveau Difficile}
|
||||
|
||||
L'algorithme derrière est le même en voici le principe :
|
||||
|
||||
\item{Gestion du plateau :}
|
||||
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.
|
||||
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
|
||||
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
|
||||
supprimer toutes les cases isolées.
|
||||
|
||||
tonitch marked this conversation as resolved
Mat_02
commented
cellules cellules
|
||||
\item{Gestion des pièces : }
|
||||
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
|
||||
Le generateur de niveau permet 3 niveaux de difficultés différents.
|
||||
|
||||
\subsection{Fluidité et Simplicité de l'interface grahique}
|
||||
En effet, tout l'affichage du jeu tient sur 4 fichiers différents
|
||||
tonitch marked this conversation as resolved
Mat_02
commented
correspondre correspondre
|
||||
@ -173,8 +198,8 @@ De plus un dernier boutons "Load Game" permet de récupérer directement le nive
|
||||
{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
|
||||
tonitch marked this conversation as resolved
Mat_02
commented
tient tient
|
||||
et les niveaux disponibles.
|
||||
\item
|
||||
{Le GameUI} qui s'occupe de placer le plateau de jeu au milieu de l'écran ainsi que d'afficher les pieces à sa droite, mais aussi
|
||||
de gerer le depassement pour ne pas que les pieces soient affichées en dehors de l'écran
|
||||
{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
|
||||
de gerer le depassement pour ne pas que les pièces soient affichées en dehors de l'écran
|
||||
|
||||
|
||||
\section{Points Faibles}
|
||||
@ -184,7 +209,7 @@ Bien que l'interface graphique permet de naviguer de manière fluide dans le jeu
|
||||
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.
|
||||
\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 pieces ainsi que l'histoire jeu préparer en amont.
|
||||
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.
|
||||
|
||||
\section{Apports Positifs et négatifs}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
voulions* ?