Rapport de soutenance finale .pdf



Nom original: Rapport_de_soutenance_finale.pdf

Ce document au format PDF 1.5 a été généré par TeX / pdfTeX-1.40.18, et a été envoyé sur fichier-pdf.fr le 22/05/2018 à 01:32, depuis l'adresse IP 80.215.x.x. La présente page de téléchargement du fichier a été vue 270 fois.
Taille du document: 5.7 Mo (40 pages).
Confidentialité: fichier public


Aperçu du document


tAItris
Projet du 4ème semestre à l’epita

Rapport de projet

S4MasterRace
Thomas Michelot michel_k
Julien Papini papini_n
Nicolas Loyau loyau_n
Sevan Murriguian–Watrin murrig_s

Info-spé S4 2021
21 mai 2018

TABLE DES MATIÈRES

tAItris

Table des matières
1 Introduction

3

2 État de l’art
2.1 Minmax . . . . . . . .
2.2 Alpha-Beta . . . . . .
2.3 Algorithme Génétique
2.4 Deep learning . . . . .

.
.
.
.

5
5
6
7
8

.
.
.
.

9
9
10
11
12

tâches
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
13
13
13

.
.
.
.

.
.
.
.

3 Présentation des membres
3.1 Thomas Michelot . . . . .
3.2 Julien Papini . . . . . . .
3.3 Nicolas Loyau . . . . . . .
3.4 Sevan Murriguian-Watrin .
4 Répartition des
4.1 Tetris . . .
4.2 I.A. . . . . .
4.3 Site Web . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

5 Structure du projet

14

6 Moteur de jeu
6.1 Une boîte noire . . .
6.2 La logique du moteur
6.3 L’état . . . . . . . .
6.4 Les actions . . . . . .

15
16
17
18
19

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

7 Interface du jeu

20

8 Intelligence artificielle

21

9 Documentation
9.1 Doxygen . . . . . . . . . . . . .
9.2 Préparation du code source . .
9.3 Documentation d’un fichier . . .
9.4 Documentation d’une structure
9.5 Documentation d’une fonction .
9.6 Génération de la documentation

22
22
23
24
25
26
27

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
avec Doxygen

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

10 Site internet
29
10.1 Hébergement du site . . . . . . . . . . . . . . . . . . . . . . . . 29
10.2 Conception du site . . . . . . . . . . . . . . . . . . . . . . . . . 30
11 Bilan personnel
32
11.1 Thomas Michelot . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1

EPITA Info-spé S4 2021

tAItris

TABLE DES MATIÈRES

11.2 Julien Papini . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11.3 Nicolas Loyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.4 Sevan Murriguian-Watrin . . . . . . . . . . . . . . . . . . . . . . 35
12 Conclusion

36

Annexe

37

Références

38

Table des figures

39

EPITA Info-spé S4 2021

2

1 INTRODUCTION

1

tAItris

Introduction

Nous sommes le groupe S4MasterRace et le rapport qui suit aura pour but
de recenser l’avancée et l’évolution de notre projet, de son commencement à
son aboutissement en passant par sa réalisation.

Notre projet se nomme « tAItris » étant un jeu de mot entre le célèbre
jeu d’Alekseï Pajitnov « Tetris » et « AI » signifiant intelligence artificielle
en anglais. Il s’agit donc en effet d’un projet dont le but est de créer une
intelligence artificielle dont le but va être de réaliser le score le plus haut
possible dans une partie de Tetris classique.

Le sujet du projet à été choisi d’un commun accord avec tous les membres
de notre groupe après une longue réflexion afin d’obtenir un projet qui puisse
nous plaire à tous et dans lequel on puisse s’investir. Ce sujet à pour avantage
de relier deux thèmes qui nous tiennent à coeur et qui sont le jeu vidéo et
l’intelligence artificielle.

Pour rappel Tetris est un jeu qui se déroule dans une grille de 10x20 dans
laquelle le joueur va devoir réaliser un maximum de ligne à l’aide de forme
géométriques qui vont tomber dans un ordre aléatoire et de plus en plus rapidement.

Plus le joueur complète de ligne en même temps et plus il recevra de points
en retour. Le joueur devra donc user de ruse et de stratégie afin d’atteindre
le plus haut score possible avant que les pièces n’atteignent le haut de l’écran,
auquel cas cela entraînerait la fin de la partie pour lui.

3

EPITA Info-spé S4 2021

tAItris

1 INTRODUCTION

L’objectif principal du projet était donc de réaliser une intelligence artificielle qui réalise le plus haut score possible sur une partie qui se déroulerait
comme décrit plus haut.

Pour cela il nous a d’abord fallu créer notre propre version du jeu Tetris
pour servir de base de fonctionnement et de test à notre l’intelligence artificielle. Pour tout le procédé de création de l’IA, du site internet ainsi que du
jeu, nous nous sommes équitablement reparti les tâches afin d’avoir un projet
qui avance de manière uniforme et pour éviter qu’une personne travaillant sur
une partie ne soit ralentie par les problèmes qui sont rencontrés sur une autre
partie. Vous pouvez trouver le détail de la répartition des tâches dans la partie
adéquate plus loin dans le rapport.

La structure de ce rapport se présentera comme suit :
Tout d’abord nous présenterons l’état de l’art en terme d’algorithmes d’intelligence artificielle utilisables et viables pour notre projet.
Viendra ensuite la présentation des membres du groupe qui sera suivi de la
répartition des tâches tel que nous les avons attribuées au début du projet.
Ensuite nous développerons sur les différentes parties plus techniques de notre
projet à commencer par la structure, puis la structure du jeu et l’interface du
jeu, l’intelligence artificielle, la documentation et enfin le site internet.
Le rapport comportera également un bilan personnel pour chaque membre,
contenant le resenti du projet et ce qu’il a apporté à chaque membre du groupe.
Enfin nous terminerons le rapport par une conclusion sur le projet et toutes
les annexes seront disponibles à la fin de celui-ci.

EPITA Info-spé S4 2021

4

2 ÉTAT DE L’ART

2

tAItris

État de l’art

Le problème que l’on se pose ici est de permettre à une machine d’apprendre
R d’y devenir bon et pourquoi pas meilleur que l’homme ? Ce
à jouer à Tetris ,
problème se rattache à une partie de l’informatique connue comme le “Machine
learning”, qui donne la capacité à une machine d’apprendre par elle même
certaines choses qui au premier abord peuvent paraitre dur à traduire en code.

Les méthodes de machine learning que nous avons rencontré durant nos
recherches s’appliques a d’autres domaines que la réussite à un jeu vidéo, il y a
parmi ces domaines la médecine, la finance, le traitement du signal ou encore
la reconnaissance d’objets dans une image.

2.1

Minmax

Minmax est un algorithme de décision utilisé dans la théorie du jeu, ou la
prise de décisions. Le principe de cet algorithme repose sur un arbre qui tiens
compte du score du joueur au tour par tour et choisi le chemin qui minimise
la perte de points.

Partant du principe que l’on veut que notre intelligence artificielle se comporte comme un humain elle n’auras accès qu’as 3 pièces (celle en cours, celle
sauvegardée, et la prochaine pièce) et on suppose que le peu de coup a prévoir
ne donnera pas de bon résultats.

C’est pour cela que l’on a pas retenu cette méthode de résolution pour
notre projet.

5

EPITA Info-spé S4 2021

tAItris

2.2

2 ÉTAT DE L’ART

Alpha-Beta

Alpha-Beta est une version légèrement améliorée de Minmax, elle aussi
utilise dans la prédiction des meilleurs coups pour les jeux a deux joueurs.

Au lieu d’explorer tout l’arbre des coups possibles pour trouver le meilleur,
Alpha-Beta ignore les branches qui comportent des coups trop mauvais pour
mériter être exploré et met a jour les bornes inférieur et supérieur de recherche.

Bien que cette solution soit un meilleur choix que Minmax, nous pensons
qu’il ne vaut pas la peine de tenter de l’utiliser car elle donnerait de trop
mauvais résultats.

EPITA Info-spé S4 2021

6

2 ÉTAT DE L’ART

2.3

tAItris

Algorithme Génétique

L’algorithme génétique appartient à la famille des algorithmes évolutionnistes. Son but est d’obtenir une solution approchée à un problème d’optimisation (ici le placement d’une pièce d’un tetromino). Les algorithmes génétiques
se basent sur le principe de sélection naturelle que l’on a emprunté à la biologie, ce qui explique que l’on partage une certaine partie du vocabulaire de la
discipline du vivant.

Cet algorithme a pour but de minimiser ou maximiser une fonction d’évaluation ce qui à terme, permet de choisir le meilleur élément dans une population pour répondre à notre problème.

Nous avons une intuitions qui nous laisse penser que cet algorithme donnera
de bon résultats assez tôt.

Figure 1 – Diagramme de fonctionnement de l’algorithme génétique

7

EPITA Info-spé S4 2021

tAItris

2.4

2 ÉTAT DE L’ART

Deep learning

Le deep learning est une branche du machine learning. C’est un algorithme
qui se base sur des réseaux de neurones.

Des calculs matriciels sont réalisés afin de simuler des couches au comportement similaire à celui observé dans le cerveau : les neurones sont répartis en
couches, et chaque unité de calcul émet un signal en fonction des sorties des
couches précédentes.

Pour effectuer une tâche, les neurones doivent être au préalable entraînés.
Ces étape s’effectue par un ajustement des pondérations des entrées de chaque
neurone, de manière à obtenir une sortie correspondante avec le caractère désiré.

Par exemple, dans le cadre de la reconnaissance d’image, la première couche
est mise directement en relation avec le fichier d’entraînement, et les poids sont
adaptés de manière à obtenir un "1" en sortie si un chat est détecté, "0" sinon.

L’avantage du deep learning par rapport à notre projet est la possibilité
d’avoir plus de paramètres en entrée (état de la grille, pièces en attente, etc).
Le deep learning est largement utilisé dans les domaines de la prédiction et
c’est le cas pour notre jeu. Nous pensons donc obtenir de meilleurs résultats.

EPITA Info-spé S4 2021

8

3 PRÉSENTATION DES MEMBRES

3

3.1

tAItris

Présentation des membres

Thomas Michelot

Dotty aussi connu sous le nom de Thomas Michelot. Je suis maintenant
un élevé habitue de la classe préparatoire de l’EPITA. Durant ces années j’ai
pu acquérir, je pense, d’assez bonnes capacités d’adaptation a de nouveaux
camarades de travail. Aussi bien a l’EPITA que dans le milieu professionnel
que j’ai pu explorer durant mon stage. C’est avec un entrain que je commence
ce projet, qui je l’espère va m’apporter ne nouvelles connaissances et beaucoup
de plaisir.

9

EPITA Info-spé S4 2021

tAItris

3.2

3 PRÉSENTATION DES MEMBRES

Julien Papini

Je m’appelle Julien Papini et en cette année 2018, je vais sur mes 21 ans.
Je suis passionné d’informatique, sans doute comme la plupart des étudiants
de l’EPITA. Mais je suis également passionné d’art et de mécanique.

Mes perspectives d’avenir sont multiples : la sécurité des systèmes et l’auto
entrepreneuriat en font partie.

Cela va faire maintenant deux ans et demi que je fréquente l’établissement.
Et durant ces années, j’ai eu plusieurs occasions d’enrichir mes expériences professionnelles. En effet, les métiers de manutentionnaire, vendeur et également
développeur sont déjà présents sur mon CV.

Comme chaque semestre, j’attends du projet un enrichissement de mes
compétences techniques, mais aussi une amélioration de mes méthodes de travail en équipe. Qui me fait sans doute encore défaut aujourd’hui. Ce projet
du quatrième semestre est donc encore une chance pour moi d’appréhender les
enjeux d’un travail de groupe pour arriver à un but commun, comme dans le
milieu professionnel.

EPITA Info-spé S4 2021

10

3 PRÉSENTATION DES MEMBRES

3.3

tAItris

Nicolas Loyau

Je suis Nicolas Loyau, bientôt agé de 21 ans et j’ai toujours été attiré par
le numérique au sens large, allant par exemple de l’informatique à la musique.

J’ai déjà pu acquérir quelques expériences en travaillant au sein de projets
lors de mes années précédentes à EPITA ainsi que dans le milieu professionnel
grâce à un stage réalisé cette année que j’aimerai renforcer avec ce projet et
qui j’espère me serviront pour le mener à bien.

Je suis quelqu’un d’assez polyvalent et je m’adapte au mieux pour être
utile aux projets auxquels je participe malgré certains domaines dans lesquels
je suis moins bon.

Ce projet est une opportunitée pour moi de pouvoir mettre en avant les
capacitées que je maîtrise le mieux pour les mettre au profit de mon groupe
mais également d’en apprendre plus sur les domaines que je maîtrise moins et
combler certaines lacunes.

J’espère donc que réaliser au cours de ce semestre un projet avec mes
camarades nous permettra tous ensemble d’acquérir de nouvelles connaissances
et compétence en travaillant autour d’un domaine qui nous rapproche et qui
nous intéresse tous.

11

EPITA Info-spé S4 2021

tAItris

3.4

3 PRÉSENTATION DES MEMBRES

Sevan Murriguian-Watrin

Je m’appelle Sevan Murriguian–Watrin et je vais avoir 21 ans cette année.
Ce projet libre est belle oportunitée afin d’en apprendre plus sur certain domaine qui ne sont pas forcément abordés en cours. Je vais avoir l’occasion de
mettre à profit l’expérience que j’ai acquise durant mon stage réalisé en entreprise. Nous avons déjà fait un jeu vidéo pendant la SUP, c’est maintenant
l’occasion d’approfondir le jeu avec une IA. De plus la réalisation de ce jeu sera
beaucoup moins assisté étant donné que nous n’allons pas avoir de moteur de
jeu comme Unity.

J’ai hâte de commencer à travailler sur ce projet qui me permettra d’aborder d’autre type d’algorithme que celui que nous avions utilisé pendant le S3
pour l’OCR.

EPITA Info-spé S4 2021

12

4 RÉPARTITION DES TÂCHES

4

tAItris

Répartition des tâches

Comme tout groupe qui se respecte, nous avons décidé de diviser la charge
de travail globale en plusieurs tâches, afin de les assigner à différents membres
de notre groupe pour pouvoir avancer en parallèle.

Napoléon disait « Divide et impera », « Diviser pour mieux régner », et nos
faibles aptitudes en politique nous forcent à agréer.

Après moultes délibérations, la répartition des charges s’est donc composée
comme suit :

4.1

Tetris
Julien

Nicolas

Sevan

X

X

Interface
X

Moteur

X
X

Controlleur

4.2

Thomas

X

I.A.
Julien

Nicolas

X

X

Réseau de neuronne

Sevan

Thomas

X

X

Algorithme génétique

4.3

Site Web
Julien
Hébergement

Nicolas

13

Thomas

X
X

Design
Rédaction

Sevan

X

X

EPITA Info-spé S4 2021

tAItris

5

5 STRUCTURE DU PROJET

Structure du projet

Figure 2 – Meuble

EPITA Info-spé S4 2021

14

6 MOTEUR DE JEU

6

tAItris

Moteur de jeu

Un moteur de jeu est par définition un ensemble de composants logiciels
qui effectuent des calculs de géométrie et de physique utilisés dans les jeux
vidéo. L’ensemble forme un simulateur en temps réel souple qui reproduit les
caractéristiques des mondes imaginaires dans lesquels se déroulent les jeux.
Dans le cas d’un Tetris, le moteur sera donc la partie qui gérera toute la logique
du jeu. C’est-à-dire le déplacement des pièces, la gestion du score, la gestion
du plateau, etc...

Lors de la première soutenance, notre moteur de jeu était étroitement lié
à l’interface. Mais pour rendre le développement de l’intelligence artificielle
plus simple et rendre le code plus propre, il a donc fallu le rendre totalement
indépendant.
Et nous avons donc tout repris depuis le début pour repartir sur de bonne
base.
Pour parvenir à un code maintenable et cohérent, nous avons utilisé beaucoup de notions de la programmation orientée objet comme l’encapsulation,
les constructeurs et destructeurs, les attributs et les méthodes. Cela permet
également de faciliter la compréhension du code par les différents membres du
projet.

Figure 3 – Fonctions inspirées de la programmation orientée objet
15

EPITA Info-spé S4 2021

tAItris

6.1

6 MOTEUR DE JEU

Une boîte noire

On peut représenter notre moteur de jeu par une boîte noire. L’utilisateur
ne peut que voir l’extérieur de cette boîte. C’est-à-dire qu’il ne peut que voir le
contenu du plateau de jeu, le score et le niveau, le nombre de lignes complétées,
etc... L’utilisateur peut également appliquer des actions sur cette boîte comme
"Bouger la pièce vers la droite", "Tourner la pièce", "Descendre la pièce", etc...
Mais nous ne pouvons pas voir ce qu’il s’y passe à l’intérieur. La logique du
jeu est donc totalement invisible pour l’utilisateur. Et cela est très important
car nous ne voulons pas que celui-ci puisse intervenir et modifier la logique de
notre moteur.
Cette encapsulation permet également de s’assurer que l’intelligence artificielle
ne va pas avoir accès à des données et des actions supplémentaires par rapport
à un joueur normal. Les actions mises à disposition pour manipuler le moteur
sont donc les mêmes pour le joueur et pour l’intelligence artificielle.

Figure 4 – Encapsulation du moteur de jeu

EPITA Info-spé S4 2021

16

6 MOTEUR DE JEU

6.2

tAItris

La logique du moteur

Nous allons maintenant expliquer l’idée principale de notre moteur de jeu.
Une partie de Tetris se déroule dans le temps, tant que l’on peut faire apparaître des pièces au dessus du plateau. La pièce courante descend d’une case à
intervalle régulier selon le niveau de difficulté la partie. Le joueur peut également positionner la pièce courante grâce aux touches de son clavier.

Figure 5 – Déroulement d’une partie de Tetris

On peut donc représenter une partie de Tetris par un état qui va évoluer
dans le temps.

17

EPITA Info-spé S4 2021

tAItris

6.3

6 MOTEUR DE JEU

L’état

Nous avons donc créé un objet "État" qui contient les états des différents
éléments qui décrivent une partie de Tetris comme la plateau de jeu, le type,
la position et l’angle de la pièce courante, la pièce suivante, le score, le niveau
et le nombre de lignes complétées.

Figure 6 – L’état

EPITA Info-spé S4 2021

18

6 MOTEUR DE JEU

6.4

tAItris

Les actions

Un état peut muter ou se transformer uniquement grâce à une liste d’actions
prédéfinies. Il n’est pas possible par exemple de déplacer une pièce en modifiant
ses coordonnées. La seule manière de déplacer une pièce, c’est d’envoyer à cet
objet "État" l’action "Déplacer la pièce vers la droite" par exemple. Cette
encapsulation permet également de réduire le nombre de bugs et de fuites
mémoires et d’augmenter la maintenance du code.

Figure 7 – Transition d’un état

19

EPITA Info-spé S4 2021

tAItris

7

7 INTERFACE DU JEU

Interface du jeu

Afin d’avoir un retour sur les actions réalisées en jeu et afin de pouvoir
envoyer des commandes au jeu, la création d’une interface est nécessaire pour
établir la connexion entre le moteur de jeu et l’intelligence artificielle ou le
joueur derrière l’écran.

Figure 8 – Meuble

EPITA Info-spé S4 2021

20

8 INTELLIGENCE ARTIFICIELLE

8

tAItris

Intelligence artificielle

Figure 9 – Meuble

21

EPITA Info-spé S4 2021

tAItris

9

9 DOCUMENTATION

Documentation

La documentation est une ressource incontournable dans le monde informatique. Ce texte écrit qui accompagne le logiciel, explique comment il fonctionne et comment on doit l’employer. Le terme peut avoir des significations
différentes pour des personnes de différents profils. En effet, la documentation utilisateur décrivent comment employer le logiciel, cela permet donc aux
différents utilisateurs de notre programme de savoir comment l’utiliser à bon
escient. La documentation technique accompagne généralement le code source
du programme. Il aide le développeur dans sa tâche de conception. Cela permet
également une meilleure compréhension du projet et donc la reprise de celui-ci
par un nouveau groupe de développeur par exemple.

Dans le cadre de ce projet, nous allons nous intéresser à la création d’une
documentation technique au format PDF et au format HTML. Nous allons
voir qu’il existe des méthodes qui nous facilitent la tâche et qui permettent
une génération tout automatisée. Ce gain de temps considérable permet aux
développeurs de se concentrer sur la conception et donc de gagner en productivité.

9.1

Doxygen

Doxygen est la contraction de « dox » (« docs », abréviation anglaise de «
documents ») et de « gen » (« generator »), « générateur de documentation».
Doxygen est donc un générateur de documentation sous licence libre capable de
produire une documentation logicielle à partir du code source d’un programme.
Pour cela, il tient compte de la grammaire du langage dans lequel est écrit
le code source, ainsi que des commentaires s’ils sont écrits dans un format
particulier. La documentation peut être générée dans l’un ou plusieurs formats
suivants : HTML, LATEX, RTF, PostScript, et PDF.

Figure 10 – Logo du programme Doxygen.
EPITA Info-spé S4 2021

22

9 DOCUMENTATION

tAItris

L’intérêt d’utiliser un tel logiciel, est d’intégrer la documentation directement dans le code source et permet donc de favoriser la cohérence entre la documentation et le code et de systématiser le comportement des développeurs
afin qu’ils documentent le code qu’ils produisent. Il est également possible
d’extraire de la documentation à partir d’un code source non documenté au
préalable, ce qui permet de faciliter la compréhension d’un programme dont le
code est compliqué.

Les informations suivantes peuvent être extraites du code source :
— prototype et documentation des fonctions ;
— liste des fichiers inclus ;
— liste des modules ;
— documentation des structures de données ;
— prototype et documentation des classes et leur hiérarchie ;
— différents types de graphes ;
— des fichiers sources annotés.

9.2

Préparation du code source

Nous allons donc utiliser le logiciel Doxygen pour la génération de la documentation technique de notre projet. Cependant, avant de lancer le programme
de génération, nous allons devoir préparer notre code source afin de donner des
directives à Doxygen. Dans le langage C, c’est l’utilisation des commentaires
à des endroits bien précis qui va nous permettre de donner de telles directives.
Nous allons maintenant donner des exemples de documentation du code source
et de leurs résultats associés suite à l’interprétation par Doxygen.

23

EPITA Info-spé S4 2021

tAItris

9.3

9 DOCUMENTATION

Documentation d’un fichier

Pour documenter un fichier, nous insérons simplement le code ci-dessous à
la première ligne du fichier que nous voulons documenter dans Doxygen.

1 /∗ ∗
2 ∗ @file
3 ∗ @author
4 ∗ @version
5 ∗ @brief
6 ∗/

matrix . h
S4MasterRace
1.0
Matrix implement

Listing 1 – Documentation d’un fichier

La directive « @file » précise le nom du fichier, ici « matrix.h ». « @author
» permet de spécifier l’auteur du fichier, nous avons indiquer ici le nom du
groupe de projet, « S4MasterRace». « @version » permet d’indiquer la version
du fichier. Et enfin « @brief » permet de donner une courte description du
fichier.

Figure 11 – Résultat de la documentation d’un fichier.

Il existe d’autres directives qui ajoutent plus d’informations à la documentation d’un fichier. Cependant, nous les avions jugées inutiles dans le cadre de
ce projet.

EPITA Info-spé S4 2021

24

9 DOCUMENTATION

9.4

tAItris

Documentation d’une structure

Pour documenter une structure, nous insérons le code suivant dans la structure à documenter.

1 /∗ ∗ Matrix s t r u c t u r e ∗/
2 s t r u c t matrix {
3
s i z e _ t rows ; /∗∗< Rows ∗/
4
s i z e _ t c o l s ; /∗∗< Columns ∗/
5
double ∗ data ; /∗∗< Values ∗/
6 };
Listing 2 – Documentation d’une structure

Le premier commentaire permet de donner une description à la structure.
Par la suite, pour chaque champs, nous ajoutons des commentaires pour expliquer leurs buts.

Figure 12 – Résultat de la documentation d’une structure.

25

EPITA Info-spé S4 2021

tAItris

9.5

9 DOCUMENTATION

Documentation d’une fonction

La documentation d’une fonction est plus laborieux. Il est important de
spécifier le maximum d’information sur celle-ci pour permettre une meilleure
compréhension. Dans l’exemple ci-dessous, nous verrons comment documenter
une fonction qui permet de créer une matrice.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

/∗ ∗
∗ Cr eate a matrix o f s i z e ‘ rows ‘ rows and ‘ c o l s ‘
columns

∗ @param rows number o f rows
∗ @param c o l s number o f columns

∗ @return th e i n i t i a l i z e d matrix o f s i z e ‘ rows ‘ rows
and ‘ c o l s ‘ columns

∗ @pre ‘ rows ‘ must be g r e a t e r than z e r o
∗ @pre ‘ c o l s ‘ must be g r e a t e r than z e r o

∗ @remarks Complexity : O( 1 )
∗/
extern i n l i n e
s t r u c t matrix ∗ m a t r i x _ c r e a t e ( s i z e _ t rows , s i z e _ t c o l s ) ;

Listing 3 – Documentation d’une fonction

Le principe est le même, on utilise les commentaires avec un formattage
spécifique pour déclarer une documentation. La première phrase permet d’expliquer ce que fait la fonction. Par la suite, nous utilisons les directives « @param » pour expliquer les paramètres de la fonction. La directive « @return
» explique également ce que retourne notre fonction. Et enfin les directives «
@pre » et « @remarks » permettent d’ajouter des informations supplémentaire
sur notre fonction comme les prédicats d’entrées et sa complexité. Toutes ces
directives associées entre elles donnent le résultat ci-dessous.
EPITA Info-spé S4 2021

26

9 DOCUMENTATION

tAItris

Figure 13 – Résultat de la documentation d’une fonction.

9.6

Génération de la documentation avec Doxygen

Le plus dur du travail est fait. En effet, la génération de la documentation
avec Doxygen est assez simple et entièrement automatisée. Il suffit simplement
d’installer le paquet Doxygen sur Linux et de ses dépendances comme LATEX,
par la suite nous devons créer un fichier de configuration et enfin exécuter la
commande :

1 doxygen <F i c h i e r de c o n f i g u r a t i o n >

Doxygen génère automatiquement les fichiers HTML, les fichiers LATEX,
ainsi que le fichier PDF. Notre documentation est également disponible le site
internet du projet.

Les captures d’écrans ci-dessous montre des exemples de la documentation
généré avec Doxygen.
27

EPITA Info-spé S4 2021

tAItris

9 DOCUMENTATION

Figure 14 – Exemple de documentation no 1

Figure 15 – Exemple de documentation no 2

Figure 16 – Exemple de documentation no 3

EPITA Info-spé S4 2021

28

10 SITE INTERNET

10

tAItris

Site internet

La création d’un site internet était une étape importante dans le développement de notre projet. En effet, il permet de mettre en avant celui-ci. Il devait
être beau et simple d’utilisation. On devait pouvoir accéder rapidement aux informations recherchées. Un tel site devait nous permettre d’expliquer la raison
d’être de notre projet, laisser à disposition un exécutable de notre programme,
accompagner de différentes informations comme la documentation technique
du projet, les rapports rendus lors des différentes soutenances, l’historique de
développement et enfin le code source de notre jeu.

La mise en place du site internet du projet s’est déroulé en plusieurs étapes.
Premièrement, il a fallu trouver un nom de domaine. Pour cela, nous avons
simplement créé un sous-domaine sur un nom de domaine existant loué par l’un
de nos membres. Par la suite, nous devions mettre en place un hébergement
pour rendre accessible le site au monde entier. Et la dernière étape consistait
à la création du site et de son contenu.

10.1

Hébergement du site

Après avoir rapidement résolu le problème sur le choix du nom de domaine,
nous devions trouvé un moyen pour héberger notre site sur la toile. Plusieurs
solutions s’offraient à nous : acheter un hébergement chez un hébergeur ou
utiliser nos ressources personnelles. Nous avons choisis la dernière solution car
c’était la plus économique. En effet, l’un de nos membres possédait un serveur
dédié déjà configuré avec le célèbre hyperviseur bare-metal VMware. Il a fallu
créer par la suite une machine virtuelle dédiée au projet avec son adresse IP et
un nom de domaine pointant vers celui-ci. Le site internet sera donc héberger
à l’adresse suivante : https ://taitris.papini.fr/

Figure 17 – Utilisation de LAMP pour héberger le site
29

EPITA Info-spé S4 2021

tAItris

10 SITE INTERNET

Pour résumer, le site est héberger sur une machine virtuelle Debian 9 avec
des paquets permettant son fonctionnement comme Apache 2, MySQL 5.7 et
PHP 7.2. L’utilisation de certificat SSL a été rendu possible grâce à l’utilisation
de Let’s encrypt qui permet de délivrer des certificats gratuitement.

10.2

Conception du site

Afin de concentrer nos efforts sur la conception du projet plutôt qu’à la
création du site internet, nous avons choisi d’utiliser Wordpress. Ce framework est très simple d’utilisation. En effet, son installation et sa configuration
prennent quelques heures environs. L’installation de thèmes et de plugins permettent d’avoir d’assez bon résultat très rapidement.

Figure 18 – Page d’accueil du site

Figure 19 – Présentation des membres du groupe
EPITA Info-spé S4 2021

30

10 SITE INTERNET

tAItris

Figure 20 – Page de téléchargement du projet

Figure 21 – Visualisation de l’historique de développement

31

EPITA Info-spé S4 2021

tAItris

11

11.1

11 BILAN PERSONNEL

Bilan personnel

Thomas Michelot

EPITA Info-spé S4 2021

32

11 BILAN PERSONNEL

11.2

33

tAItris

Julien Papini

EPITA Info-spé S4 2021

tAItris

11.3

11 BILAN PERSONNEL

Nicolas Loyau

EPITA Info-spé S4 2021

34

11 BILAN PERSONNEL

11.4

35

tAItris

Sevan Murriguian-Watrin

EPITA Info-spé S4 2021

tAItris

12

12 CONCLUSION

Conclusion

EPITA Info-spé S4 2021

36

12 CONCLUSION

37

tAItris

EPITA Info-spé S4 2021

tAItris

RÉFÉRENCES

Références

EPITA Info-spé S4 2021

38

TABLE DES FIGURES

tAItris

Table des figures
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

39

Diagramme de fonctionnement de l’algorithme génétique
Meuble . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions inspirées de la programmation orientée objet .
Encapsulation du moteur de jeu . . . . . . . . . . . . . .
Déroulement d’une partie de Tetris . . . . . . . . . . . .
L’état . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transition d’un état . . . . . . . . . . . . . . . . . . . . .
Meuble . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Meuble . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logo du programme Doxygen. . . . . . . . . . . . . . . .
Résultat de la documentation d’un fichier. . . . . . . . .
Résultat de la documentation d’une structure. . . . . . .
Résultat de la documentation d’une fonction. . . . . . . .
Exemple de documentation no 1 . . . . . . . . . . . . . .
Exemple de documentation no 2 . . . . . . . . . . . . . .
Exemple de documentation no 3 . . . . . . . . . . . . . .
Utilisation de LAMP pour héberger le site . . . . . . . .
Page d’accueil du site . . . . . . . . . . . . . . . . . . . .
Présentation des membres du groupe . . . . . . . . . . .
Page de téléchargement du projet . . . . . . . . . . . . .
Visualisation de l’historique de développement . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

7
14
15
16
17
18
19
20
21
22
24
25
27
28
28
28
29
30
30
31
31

EPITA Info-spé S4 2021


Aperçu du document Rapport_de_soutenance_finale.pdf - page 1/40
 
Rapport_de_soutenance_finale.pdf - page 2/40
Rapport_de_soutenance_finale.pdf - page 3/40
Rapport_de_soutenance_finale.pdf - page 4/40
Rapport_de_soutenance_finale.pdf - page 5/40
Rapport_de_soutenance_finale.pdf - page 6/40
 




Télécharger le fichier (PDF)


Rapport_de_soutenance_finale.pdf (PDF, 5.7 Mo)

Télécharger
Formats alternatifs: ZIP



Documents similaires


rapportdesoutenancefinale
rapport de soutenance finale
sujet1 simulationvirus
cdcprojet
dzq
cahier des charges 2