´
ecole d’ing´
enieurs du littoral
Intelligence Artificielle : TP 4
Contexte : Jeu Puissance 3
Le but de ce TP est de programmer une intelligence artificielle permettant `a un joueur
d’affronter une machine. Il s’agira d’aligner 3 pions en horizontal ou en vertical (pas en
diagonal) sur une grille de 5 5.
1
1 2 2
1 2
1 1 1
1 2 2
Début du jeu Situation intermédiare du jeu
Situation finale du jeu :
Le joueur 1 a gagné
L’algorithme devra ´etre bas´e sur l’algorithme Alpha-Beta vu en cours.
Impl´ementation
Votre projet sera constitu´e de 3 principales classes :
1. la classe Noeud qui correspond `a un ´etat donn´e du jeu, ses successeurs et son
´evaluation.
2. la classe Puissance3 contenant les m´ethodes du jeu.
3. la classe Main pour simuler une partie du jeu ”humain/machine”.
Voici une proposition d’un diagramme de classes pour impl´ementer le jeu
1
Noeud
-matrice: int[][]
-successeurs: ArrayList<Noeud>
-max: boolean
-noColonne: int
-feuille: boolean
-h: int
+Noeud()
+Noeud(max:boolean,matrice:int[][])
+Noeud(max:boolean,matrice:int[][],nColonne:int)
+getSuccesseurs(): ArrayList<Noeud>
+setSuccesseurs(successeurs:ArrayList<Noeud>)
+getSuccesseur(i:int): Noeud
+addSuccesseur(n:Noeud)
+getH(): int
+setH(h:int)
+getMatrice(): int[][]
+setMatrice(matriceJeu:int[][])
+isMax(): boolean
+setMax(max:boolean)
+isFeuille(): boolean
+setFeuille(feuille:boolean)
+getNoColonne(): int
+setNoColonne(noColonne:int)
+print()
+evaluer()
Puissance3
-matriceJeu: int[][]
-WIDTH: int = 5
-HEIGHT: int = 5
+Puissance3()
+jouer(typeJoueur:boolean,colonne:int): boolean
+jouer(typeJoueur:boolean,colonne:int,matriceJeu:int[][]): boolean
+estFinJeu(typeJoueur:boolean): boolean
+creerArbreSituation(n:Noeud,profondeur:int)
+resolution(n:Noeud,alpha:int,beta:int)
+print()
+copieMatrice(mSource:int[][],mDest:int[][])
Main
+static main(args:String[] )
M´ethodes de classe Puissance3
jouer(typeJoueur : boolean, colonne : int) : boolean : jouer le coup d’un
joueur (humain ou ordinateur) `a une colonne donn´ee. la m´ethode retrourne false
si le coup n’est pas faisable sinon elle retourne true
jouer(typeJoueur : boolean, colonne : int, matrice : int[][]) : boolean :
jouer le coup d’un joueur (humain ou ordinateur) `a une colonne donn´ee sur la
matrice pass´ee en param`etre. la m´ethode retrourne false si le coup n’est pas
faisable sinon elle retourne true
estFinJeu(typeJoueur : boolean) : boolean : la m´ethode retourne true si la
partie du jeu s’est termin´ee (grille remplie ou bien le joueur pass´e en param`etre
a gagn´e)
creerArbre(n :Noeud, profondeur :int) cr´ee un arbre `a une certaine profon-
deur `a partir de la situation du jeu courant. A l’initialisation du jeu, on prend
une profondeur ´egale `a 4.
resolution(n : Noeud , alpha : int, beta : int) :int : retourne l’´evaluation du
meilleur coup possible pour l’ordinateur. Ce coˆut est calcul´e grˆace `a l’algorithme
Alpha-Beta.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !