School_Project/JournalDeBord/rapport/rapport.tex
2023-05-17 20:23:31 +02:00

107 lines
4.6 KiB
TeX

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{tikz}
\begin{document}
\title{Rapport du projet informatique 2023 \\ "Road to Master"}
\author{Debucquoy Anthony \and Matteo Di Leto}
\date{May 2023}
\maketitle
\newpage
\tableofcontents
\newpage
\section*{Introduction}
Lors de ce deuxième quadrimèstre, le projet Informatique proposé par l'université fut une partie intégrante de notre emploi du temps.
Régulièrement nous nous sommes rasemblé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.
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.
\newpage
\section{Organisation}
\subsection{Choix}
\subsection{Difficultés}
\section{Points Forts}
\subsection{Parser de fichiers}
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é.
Nous voulons que ce parser accomplisse les objectifs suivants:
\begin{itemize}
\item{Les données du niveau seront encapsulées dans un header/footer pour laisser la possibilité d'enregisterer 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{Il sera possible d'enregistrer l'état d'une partie en cours.}
\end{itemize}
\subsubsection*{spécification}
\begin{description}
\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}$$
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]{
\
\begin{description}
\item[Taille de la piece]{La taille est représentée sur un seul octet sous forme de 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 }
\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:
\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.
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}
}
\end{description}
\subsubsection*{Exemple}
Voici le 'hexdump' du niveau 11
\begin{verbatim}
53 4d 53 05 05 e7 ff ff 80 06 33 ff 80 22 f0 22 |SMS.......3.."."|
b0 22 70 22 b0 11 80 53 4d 45 |."p"...SME|
\end{verbatim}
représente une carte de la forme
\begin{tikzpicture}
\filldraw[blue] (0,0) -- (0,5) -- (3,5) -- (3,4) -- (5,4) -- (5,0) -- cycle;
\draw[step=1cm,gray] (0, 0) grid (5,5);
\end{tikzpicture}
avec les pieces
\begin{tikzpicture}
\fill[red] (1,1) rectangle (4,4);
\fill[red] (5,1) rectangle (7,3);
\fill[red] (8,1) -- (8,3) -- (9,3) -- (9,2) -- (10,2) -- (10,1) -- cycle;
\fill[red] (11,1) -- (11,2) -- (12,2) -- (12,3) -- (13,3) -- (13,1) -- cycle;
\fill[red] (1,-2) -- (1,0) -- (2,0) -- (2,-1) -- (3,-1) -- (3,-2) -- cycle;
\fill[red] (4, -2) rectangle (5, -1);
\draw[step=1cm,gray] (0.5, -2.5) grid (13.5, 4.5);
\end{tikzpicture}
\section{Points Faibles}
\section{Apports Positifs et négatifs}
\section{conclusion}
\end{document}