@@ -150,7 +150,15 @@ Le \textit{bitboard} des obstacles (un 1 dans les cases où il y a soit de l'eau
\subsection{L'interface graphique}
TODO: gui
L'IA nécessite d'avoir le coups qu'on veut jouer exprimés comme numéro par rapport aux coups totaux disponibles pour un joueur: cette partie de conversion nécessaire était la raison principale pour le développement d'une interface graphique, vu que c'était un travail fastidieux et très difficile à faire à la main à chaque fois qu'on veut jouer un coup.
Le choix du langage pour implémenter l'interface graphique est tombé vers un langage qu'on maîtrise mieux que le C++: le Java. elle est donc développée avec la bibliothèque \textit{javafx} qui permet d'avoir un modèle \textit{Modèle, Vue, Contrôleur} qui va faciliter la reprise dans le futur. \\
L'interface devait être facile à l'utilisation et "jolie". On n'avait pas de bases ni d'indications particulières, on a donc commencé de zéro pour cette partie.
\paragraph{Communication avec l'IA}Les deux programmes étant indépendant, il faut une façon pour que les données du jeu passent du programme en C++, qui gère le jeu et l'IA, à l'interface en Java. Pour ce faire on a décidé d'utiliser une représentation en \href{https://fr.wikipedia.org/wiki/JavaScript_Object_Notation}{JSON}, et de transmettre l'état entier du jeu après chaque coup.
L'interface graphique fait le travail inverse de l'IA: elle convertit les différentes valeurs des \textit{bitboards} de l'état en tableaux et objets qui sont ensuite utilisés pour l'affichage.
\paragraph{Difficultés}La principale difficulté dans le développement de l'interface graphique a été la mise en place du plateau et de l'architecture MVC: une période de recherche d'informations sur le javafx a été nécessaire. Une fois les bases mises en place l’implémentation des différentes fonctionnalités (comme le fait que les mouvements possibles apparaissent en une couleur différente) a été plus rapide.