@@ -72,15 +72,21 @@ La fonction \verb|move_to_string| est importante car c'est la représentation qu
...
@@ -72,15 +72,21 @@ La fonction \verb|move_to_string| est importante car c'est la représentation qu
\paragraph*{} Il ne faut pas oublier d'ajouter les nouveaux fichiers dans le makefile!
\paragraph*{} Il ne faut pas oublier d'ajouter les nouveaux fichiers dans le makefile!
\subsection{Notre implémentation: le Jeu du Pingouin}
\subsection{Notre implémentation: le Jeu du Pingouin}
\paragraph*{}
Pour plus d'informations sur les structures et méthodes utilisées pour modéliser le Jeu du Pingouin, regarder le rapport du projet, qui se trouve dans le dossier \verb|Doc/fr/Rapport|.
Le fichier \verb|penguin.hpp| définit la structure \verb|penguin_state| (qui décrit définit les bitboards des poissons, les positions des pingouins des 2 joueurs, les scores, le joueur courant, le nombre de coups de chaque joueur...) et la class \verb|penguin| qui implémente les méthodes suivantes dans \verb|penguin.cpp| (En plus des autres méthodes citées ci-dessus).
\paragraph*{} Le fichier \verb|penguin.hpp| définit la structure \verb|penguin_state|, qui décrit un état du jeu. Cette structure définit les bitboards des poissons,
les bitboards des pingouins des 2 joueurs, les scores, le joueur courant et le nombre de coups de chaque joueur.
Les fichiers \verb|penguin.hpp| et \verb|penguin.cpp| définissent la classe \verb|penguin|, implémentant l'interface \verb|game|, qui décrit un jeu.
En plus des méthodes de l'interface, cette classe implémente les méthodes suivantes:
\begin{itemize}
\begin{itemize}
\item\verb|penguin_state get_state()| Retourne l'état du jeu
\item\verb|penguin_state get_state()| Retourne l'état du jeu
\item\verb|void move_penguin(uint32_t* p, uint16_t rel_move)| Déplace le pingouin lui faisant faire son coup numéro \verb|rel_move|. A la fin de la fonction, le pingouin n'est plus composé que de sa nouvelle position (tous les autres bits sont à 0).
\item\verb|void move_penguin(uint32_t* p, uint16_t rel_move)| Déplace le pingouin \verb|p|lui faisant faire son coup numéro \verb|rel_move|. À la fin de la fonction, le pingouin n'est plus composé que de sa nouvelle position (tous les autres bits sont à 0).
\item\verb|uint64_t create_obstacles_bitboard()| Crée le bitboard des obstacles : Pour chaque case, 1 s'il y a un obstacle, 0 sinon.
\item\verb|uint64_t create_obstacles_bitboard()| Crée le bitboard des obstacles : pour chaque case, le bit correspondant est à 1 s'il y a un obstacle, 0 sinon.
\item\verb|int update_penguin_moves(uint32_t* p, uint64_t obstacles)| Met à jour tous les coups d'un pingouin donné en fonction de sa position et du bitboard des obstacles. Retourne le nombre total de coups du pingouin.
\item\verb|int update_penguin_moves(uint32_t* p, uint64_t obstacles)| Met à jour tous les coups du pingouin \verb|p| en fonction de sa position et du bitboard des obstacles. Retourne le nombre total de coups du pingouin.
\end{itemize}
\end{itemize}
Par ailleurs, le début du code gère le chargement d'un état au lancement via l'entrée standard du programme.
Par ailleurs, le constructeur de la classe \verb|penguin| gère le chargement d'un état via l'entrée standard du programme.