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.
\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 toujours compilable et que les tests ne soient pas ratés sans que nous nous en rendions compte.}
\item{Javafx, comme recommandé par nos enseignants.}
Pour la rétention des niveaux, plusieurs possibilités s'offraient à nous. Nous avons alors décidés d'accomplir une série d'objectifs propre à notre projet avec un parser de fichiers dédié.
\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[Header/Footer]{ Les données du niveau commencent par les 3 \emph{caractères} 'S', 'M', 'S' (ou \verb|0x534D53|) et se terminent par les 3 \emph{caractères} 'S', 'M', 'E' (ou \verb|0x534D45|)}
\item[Taille de carte]{ Le premier octet des données représente la largeur de la carte, le second sa hauteur.}
\item[Forme de la carte]{ Chaques cellules de la carte est représenté par un 1 ou un 0. le 1 représente un emplacement libre, un 0 une cellule vide.
La forme de la carte peut alors être répartie sur un nombre indéterminé d'octets.
Nous pouvons déterminer ce nombre grace à
$$\frac{\text{largeur}*\text{hauteur }(+1\text{ si multiple de }8)}{8}$$
\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é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 }
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}
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).
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.
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 0 (false) à l'endroit en question) si pas l'espace est rajouté sur la pièce.
{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.
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.
En conclusion nous pouvons séparer notre travail en trois parties différentes :
\begin{enumerate}
\item Le parser de fichier (gestion sauvegarder/charger partie)
\item Instanciation du jeu (Map,Vec2,Shapes)
\item Liaison au graphisme (Javafx)
\end{enumerate}
Malgré notre travail fourni au bon fonctionnement du jeu avec un parser des plus efficace, une utilisation de la P.O.O de manière très efficace,
ainsi qu'une approche correct avec Javafx, d'autre amélioration sont toujours possible !
En effet une idée de rajouter une histoir, des trophées, un easter egg(plus particulierement un tetris) ou un encore un table de score basé sur le temps reste possible afin de rendre notre