Intelligence Artificielle : TP 4 Contexte : Jeu Puissance 3

publicité
école d’ingénieurs du littoral
Intelligence Artificielle : TP 4
Contexte : Jeu Puissance 3
Le but de ce TP est de programmer une intelligence artificielle permettant à 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
Début du jeu
2
2
Situation intermédiare du jeu
1
2
1
1
1
1
2
2
Situation finale du jeu :
Le joueur 1 a gagné
L’algorithme devra étre basé sur l’algorithme Alpha-Beta vu en cours.
Implémentation
Votre projet sera constitué de 3 principales classes :
1. la classe Noeud qui correspond à un état donné du jeu, ses successeurs et son
évaluation.
2. la classe Puissance3 contenant les méthodes du jeu.
3. la classe Main pour simuler une partie du jeu ”humain/machine”.
Voici une proposition d’un diagramme de classes pour implémenter le jeu
1
Puissance3
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()
-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éthodes de classe Puissance3
— jouer(typeJoueur : boolean, colonne : int) : boolean : jouer le coup d’un
joueur (humain ou ordinateur) à une colonne donnée. la méthode 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) à une colonne donnée sur la
matrice passée en paramètre. la méthode retrourne false si le coup n’est pas
faisable sinon elle retourne true
— estFinJeu(typeJoueur : boolean) : boolean : la méthode retourne true si la
partie du jeu s’est terminée (grille remplie ou bien le joueur passé en paramètre
a gagné)
— creerArbre(n :Noeud, profondeur :int) crée un arbre à une certaine profondeur à partir de la situation du jeu courant. A l’initialisation du jeu, on prend
une profondeur égale à 4.
— resolution(n : Noeud , alpha : int, beta : int) :int : retourne l’évaluation du
meilleur coup possible pour l’ordinateur. Ce coût est calculé grâce à l’algorithme
Alpha-Beta.
3
Téléchargement