add imgs and some info in the report
This commit is contained in:
parent
ef015aea80
commit
7f20ceb46e
4 changed files with 83 additions and 27 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -3,3 +3,5 @@ othello
|
||||||
|
|
||||||
report/*
|
report/*
|
||||||
!report/*.tex
|
!report/*.tex
|
||||||
|
!report/imgs
|
||||||
|
report/imgs/*.png
|
||||||
|
|
|
@ -1,29 +1,27 @@
|
||||||
\documentclass{article}
|
\documentclass{article}
|
||||||
|
|
||||||
\renewcommand{\familydefault}{\sfdefault} % police en "sans-serif"
|
|
||||||
|
|
||||||
\usepackage[T1]{fontenc} % encodage
|
\usepackage[T1]{fontenc} % encodage
|
||||||
|
\renewcommand{\familydefault}{\sfdefault} % police en sans-serif
|
||||||
|
|
||||||
\usepackage[french]{babel} % langue
|
\usepackage[french]{babel} % langue
|
||||||
|
\frenchsetup{SmallCapsFigTabCaptions=false}
|
||||||
|
|
||||||
\usepackage[hidelinks]{hyperref} % liens cliquable dans la table des matières
|
\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[a4paper, left=20mm, top=20mm]{geometry} % dimensions de la page
|
||||||
\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{minted} % intégration code
|
\usepackage{minted} % intégration code
|
||||||
\usemintedstyle{emacs}
|
\usemintedstyle{emacs}
|
||||||
|
|
||||||
\title{Projet - IA pour le jeu d'Othello\thanks{Sujet 35}}
|
\title{Projet - IA pour le jeu d'Othello
|
||||||
\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}
|
\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}
|
\date{Année universitaire 2022-2023}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
@ -31,24 +29,73 @@
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
||||||
\section{Choix faits}
|
\section{Projet}
|
||||||
Ce projet présente une implémentation d'un jeu d’Othello et d'une intelligence
|
Ce projet présente une implémentation d'un jeu d’Othello ainsi que deux
|
||||||
artificielle jouant selon un algorithme minimax et d'un élagage alpha-beta.
|
intelligences artificielles jouant; l'une selon un algorithme minimax et l'autre
|
||||||
Il y a aussi une comparaison d'efficacité des IAs à différentes profondeurs de jeu.
|
via élagage alpha-bêta. Il y a aussi une comparaison d'efficacité des IA à
|
||||||
|
différentes profondeurs de jeu.
|
||||||
|
|
||||||
\section{Implémentation}
|
\section{Implémentation}
|
||||||
\subsection{Othello}
|
\subsection{Othello}
|
||||||
\subsubsection{Mode d'emploi}
|
\subsubsection{Règles du jeu}
|
||||||
% TODO expliquer 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}
|
Au début d'une partie le plateau ressemble à la \autoref{fig:init}.
|
||||||
% TODO expliquer comment jouer
|
|
||||||
|
\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 l’othellier,
|
||||||
|
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}
|
\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}
|
\subsection[Minimax]{Algorithme minimax}
|
||||||
\subsubsection{Mode d'emploi}
|
\subsubsection{Algorithme}
|
||||||
% TODO expliquer fonctionnement minimax
|
% TODO expliquer fonctionnement minimax
|
||||||
|
|
||||||
\subsubsection{Exemple d'utilisation}
|
\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}
|
\subsubsection{Problèmes rencontrés}
|
||||||
% TODO avec code d'illustration
|
% TODO avec code d'illustration
|
||||||
|
|
||||||
\subsection{Alpha-Beta}
|
\subsection[Alpha-Bêta]{Élagage alpha-bêta}
|
||||||
\subsubsection{Mode d'emploi}
|
\subsubsection{Algorithme}
|
||||||
% TODO expliquer fonctionnement alphabeta
|
% TODO expliquer fonctionnement alphabeta
|
||||||
|
|
||||||
\subsubsection{Exemple d'utilisation}
|
\subsubsection{Exemple d'utilisation}
|
||||||
|
|
7
report/imgs/SOURCES.md
Normal file
7
report/imgs/SOURCES.md
Normal 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 |
|
BIN
report/imgs/othello_impl_player.jpg
Normal file
BIN
report/imgs/othello_impl_player.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Reference in a new issue