From d311f8fe485f77a10351d1d968648961e894c657 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 12 Jan 2024 01:48:34 +0100 Subject: [PATCH] rapport --- report/explications.tex | 96 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 6 deletions(-) diff --git a/report/explications.tex b/report/explications.tex index b9204ba..a5bc50b 100644 --- a/report/explications.tex +++ b/report/explications.tex @@ -23,18 +23,101 @@ \tableofcontents \clearpage +% Alias +\newcommand{\separator}{\vspace{1em}} \section{Ce qui a été traité} -TODO +Le projet a été réalisé en binôme. -\section{Aspects les plus significatifs} -TODO +\subsection{Jeux implémentés} +Les jeux suivants ont étés implémentés : +\begin{itemize} + \item Butin + \item Dames + \item Safari +\end{itemize} -\section{Quelques problèmes connus} -TODO +\subsection{Affichage} +L'affichage est géré via une classe \texttt{Ecran} qui utilises \texttt{SFML}. +\begin{itemize} + \item \texttt{afficher} est la méthode principale de la classe, car elle prend + en argument deux fonctions qui permettent de gérer l'affichage et le + clic-gauche de la souris +\end{itemize} + +\subsection{Héritage} +De l'héritage a été utilisé pour décrire des jeux "\textit{conceptuellement + proches}". +\begin{itemize} + \item classe \texttt{Jeu} est dérivée en \texttt{Butin}, \texttt{Dames} et + \texttt{Safari} + \item classe \texttt{Piece} est dérivée en \texttt{PieceButin}, + \texttt{PieceDames} et \texttt{PieceSafari} + \item classe \texttt{Plateau} est dérivée en \texttt{PlateauButin}, + \texttt{PlateauDames} et \texttt{PlateauSafari} +\end{itemize} + +\subsection{Généricité} +La généricité a majoritairement été utilisée pour le débogage, pour exemple +une fonction qui affiche le contenu de n'importe quel \texttt{vector}. + +\subsection{Compilation} +Un \texttt{Makefile} a été écrit pour faciliter la compilation du projet. +\begin{itemize} + \item \texttt{make} permet la compilation du projet + \item \texttt{make dev} permet la compilation avec des flag utile au débogage + \item Les jeux ont étés séparés dans des sous-dossiers pour une meilleure + lisibilité des fichiers headers et source. +\end{itemize} + +\section{Aspects significatifs} +\subsection{Modularité} +Les classes \texttt{Jeu} et \texttt{Piece} sont abstraites, car elles n'ont pas +de sens sans certaines méthodes uniques aux jeux. En revanche la classe +\texttt{Plateau} peut exister seule, mais ne sert à rien sans jeu, elle +possède des méthodes virtuelles pour permettre des plus grandes flexibilités +sur certains aspects de l'affichage. La couleur des cases peut également être +personnalisée. La classe \texttt{Joueur} est une finale, car elle reste +la même parmi tous les jeux et un joueur possède les mêmes actions. + +\subsection{Environnement d'accueil} +L'environnement d'accueil se fait via les arguments du programme, le terminal +n'est utilisé que pour choisir le nombre de joueurs pour le jeu "Safari", tout +le reste ce fait via interaction avec l'écran de jeu. + +\subsection{Indications} +Les indications se font via une ligne de texte situé en dessous du plateau +de jeu. + +\subsection{Collaboration} +Nous avons utilisé +\href{https://gaufre.informatique.univ-paris-diderot.fr/Anri/projet-cpp}{Git} +pour développeur le projet avec des commits poussés régulièrement ($\approx$~200). + +\subsection{Affichage} +L'affichage (méthode \texttt{play}) est séparé de la logique du jeu +(méthode \texttt{event}). + +\section{Problèmes rencontrés} +L'affichage SFML n'était pas facile à prendre en main pour faire une classe +pratique à utiliser parmi une multitude de jeux. On a opté pour une classe +\texttt{Ecran} qui prend en argument des fonctions qui seront appelés à chaque +dessin d'une image. Ces fonctions sont personnalisées pour chaque jeu et sont +les méthodes principales des jeux en question. \section{Ce qui n'a pas été implémenté} -TODO +% \subsection*{Global} +Les joueurs ne se voient pas affichés d'indications sur où placer leurs pièces. + +\separator +Les parties se font joueur contre joueur uniquement. + +% \subsection*{Dames} +% Le jeu de Dames n'est pas complètement terminé sur certains aspects : +% \begin{itemize} +% \item Prise des pièces +% \item Force le joueur à prendre quand c'est possible +% \end{itemize} \newpage \section{Diagramme UML} % ou plusieurs ? @@ -42,6 +125,7 @@ TODO \centering \includegraphics[width=1.3\textwidth]{imgs/diagrammeUML.png} \caption{Diagramme UML} + \label{uml} \end{figure}