rapport
This commit is contained in:
parent
524e034e7c
commit
d311f8fe48
1 changed files with 90 additions and 6 deletions
|
@ -23,18 +23,101 @@
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
||||||
|
% Alias
|
||||||
|
\newcommand{\separator}{\vspace{1em}}
|
||||||
|
|
||||||
\section{Ce qui a été traité}
|
\section{Ce qui a été traité}
|
||||||
TODO
|
Le projet a été réalisé en binôme.
|
||||||
|
|
||||||
\section{Aspects les plus significatifs}
|
\subsection{Jeux implémentés}
|
||||||
TODO
|
Les jeux suivants ont étés implémentés :
|
||||||
|
\begin{itemize}
|
||||||
|
\item Butin
|
||||||
|
\item Dames
|
||||||
|
\item Safari
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
\section{Quelques problèmes connus}
|
\subsection{Affichage}
|
||||||
TODO
|
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é}
|
\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
|
\newpage
|
||||||
\section{Diagramme UML} % ou plusieurs ?
|
\section{Diagramme UML} % ou plusieurs ?
|
||||||
|
@ -42,6 +125,7 @@ TODO
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=1.3\textwidth]{imgs/diagrammeUML.png}
|
\includegraphics[width=1.3\textwidth]{imgs/diagrammeUML.png}
|
||||||
\caption{Diagramme UML}
|
\caption{Diagramme UML}
|
||||||
|
\label{uml}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in a new issue