add imgs and some info in the report

This commit is contained in:
Mylloon 2022-12-01 16:33:24 +01:00
parent ef015aea80
commit 7f20ceb46e
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
4 changed files with 83 additions and 27 deletions

2
.gitignore vendored
View file

@ -3,3 +3,5 @@ othello
report/*
!report/*.tex
!report/imgs
report/imgs/*.png

View file

@ -1,29 +1,27 @@
\documentclass{article}
\renewcommand{\familydefault}{\sfdefault} % police en "sans-serif"
\usepackage[T1]{fontenc} % encodage
\renewcommand{\familydefault}{\sfdefault} % police en sans-serif
\usepackage[french]{babel} % langue
\frenchsetup{SmallCapsFigTabCaptions=false}
\usepackage[hidelinks]{hyperref} % liens cliquable dans la table des matières
\usepackage{graphicx} % image
\usepackage{graphicx} % images
\usepackage{caption}
% Donné un label au code
\usepackage[figurename=Code\ Source]{caption} % nom des images
\usepackage{geometry} % change les dimensions de la page
\geometry{ % définition taille pages
a4paper,
left=20mm,
top=20mm
}
\usepackage[a4paper, left=20mm, top=20mm]{geometry} % dimensions de la page
\usepackage{minted} % intégration code
\usemintedstyle{emacs}
\title{Projet - IA pour le jeu d'Othello\thanks{Sujet 35}}
\author{\href{mailto:anri.kennel@etud.univ-paris8.fr}{Anri Kennel}\thanks{Numéro d'étudiant : 20010664}\, (L3-A)\\Algorithmique avancée $\cdot$ Université Paris 8}
\title{Projet - IA pour le jeu d'Othello
\thanks{\href{https://jj.up8.site/AA/ProjetsAA.pdf}{Sujet 35}}}
\author{\href{mailto:anri.kennel@etud.univ-paris8.fr}{Anri Kennel}
\thanks{Numéro d'étudiant : 20010664}\, (L3-A)
\\Algorithmique avancée $\cdot$ Université Paris 8}
\date{Année universitaire 2022-2023}
\begin{document}
@ -31,24 +29,73 @@
\tableofcontents
\clearpage
\section{Choix faits}
Ce projet présente une implémentation d'un jeu dOthello et d'une intelligence
artificielle jouant selon un algorithme minimax et d'un élagage alpha-beta.
Il y a aussi une comparaison d'efficacité des IAs à différentes profondeurs de jeu.
\section{Projet}
Ce projet présente une implémentation d'un jeu dOthello ainsi que deux
intelligences artificielles jouant; l'une selon un algorithme minimax et l'autre
via élagage alpha-bêta. Il y a aussi une comparaison d'efficacité des IA à
différentes profondeurs de jeu.
\section{Implémentation}
\subsection{Othello}
\subsubsection{Mode d'emploi}
% TODO expliquer règles du jeu
\subsubsection{Règles du jeu}
L'Othello est un jeu qui se joue sur un plateau de 8x8 où deux couleurs, les noirs
et les blancs s'affrontent. Les noirs commencent la partie. Quand aucun joueur
ne peut jouer, la partie s'arrête.
\subsubsection{Exemple d'utilisation}
% TODO expliquer comment jouer
Au début d'une partie le plateau ressemble à la \autoref{fig:init}.
\begin{figure}[h]
\centering
\includegraphics[width=0.35\textwidth]{imgs/othello_init.png}
\caption{Début d'une partie}
\label{fig:init}
\end{figure}
\subsubsection{Exemple d'une partie}
Chaque joueur doit poser un pion de sa couleur sur une case vide de lothellier,
il faut prendre en sandwich les pions ennemis, peu importe la direction. Une fois
posé, les pions prient en sandwich sont récupérés par le joueur qui vient de jouer.
Dans la configuration du début, les cases pouvant être joué par les noirs sont
indiqués en rouge dans la \autoref{fig:prem}.
\begin{figure}[h]
\centering
\includegraphics[width=0.35\textwidth]{imgs/othello_premiercoup.png}
\caption{Possibilités au premier coup}
\label{fig:prem}
\end{figure}
Mon implémentation du jeu indique au joueur les coups possibles (c'est-à-dire les
cases rouges). Le joueur doit indiquer les coordonnées où il veut poser son jeton
et les changements se font automatiquement. Chaque joueur joue chacun son tour et
passe son tour si aucun coup lui est possible. La partie s'arrête si le plateau
est plein ou si aucun joueur ne peut jouer, cf. \autoref{fig:human}. Les jetons
blancs sont notés \texttt{B} et les jetons noirs \texttt{N}.
\begin{figure}[h]
\centering
\includegraphics[width=0.35\textwidth]{imgs/othello_impl_player.jpg}
\caption{Demande au joueur de jouer}
\label{fig:human}
\end{figure}
Si un coup illégale est joué, le jeu refuse le coup et demande au joueur de
choisir un autre coup.
\subsubsection{Problèmes rencontrés}
% TODO avec code d'illustration
Mon enjeu numéro 1 était d'éviter tout problème de mémoire. Pour cela dans le
Makefile il y a un label \texttt{dev} qui permet d'ajouter plein de flags pour
\texttt{gcc}, notamment \texttt{fanalyzer} et \texttt{fsanitize=undefined} qui
permettent de trouver plein de problèmes relatifs à la mémoire. Aussi j'ai utilisé
\texttt{Valgrind} (avec les flags \texttt{g} et \texttt{Og} pour \texttt{gcc} et
les flags \texttt{leak-check=full} \texttt{show-leak-kinds=all}
\texttt{track-origins=yes} \texttt{s} pour \texttt{Valgrind}) me permettant
d'avoir un maximum d'avertissements et d'informations me permettant de débugger
tous les problèmes.
\subsection{Minimax}
\subsubsection{Mode d'emploi}
\subsection[Minimax]{Algorithme minimax}
\subsubsection{Algorithme}
% TODO expliquer fonctionnement minimax
\subsubsection{Exemple d'utilisation}
@ -57,8 +104,8 @@ Il y a aussi une comparaison d'efficacité des IAs à différentes profondeurs d
\subsubsection{Problèmes rencontrés}
% TODO avec code d'illustration
\subsection{Alpha-Beta}
\subsubsection{Mode d'emploi}
\subsection[Alpha-Bêta]{Élagage alpha-bêta}
\subsubsection{Algorithme}
% TODO expliquer fonctionnement alphabeta
\subsubsection{Exemple d'utilisation}

7
report/imgs/SOURCES.md Normal file
View file

@ -0,0 +1,7 @@
Certains fichiers (.png) ne sont pas dans le dépôt git, il faut les récupérer
via les liens suivants :
| Fichier | Lien Excalidraw |
| ------------------: | :------------------------------------------------------------------------ |
| othello_init | https://excalidraw.com/#json=G8K82bcDU0fjclbaAS7Zj,O0OXSinCBSLMexO4Lo-V5w |
| othello_premiercoup | https://excalidraw.com/#json=foL0ohpx5orP46eKro8a8,bv_ao6n9RhB7vJP41HjaOQ |

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB