Informatique – MP Faidherbe TP4 : Le Jeu du Morpion
Transcription
Informatique – MP Faidherbe TP4 : Le Jeu du Morpion
Informatique – MP Faidherbe TP4 : Le Jeu du Morpion Alix Goguey - [email protected] année 2012-2013 1 Introduction Aujourd’hui nous implémenterons... TADAA... le jeu du Morpion ! Je doute qu’un rappel des règles soit utile alors on va commencer tout de suite ! Dans un premier temps nous ferons toutes les fonctions de base en mode console. Par la suite, nous implémenterons une interface graphique. 2 La grille Le jeu du morpion se situe sur une grille de 3 par 3. Sur chacune des cases, on peut placer une croix ou un rond (si la case n’est pas vide). Mettons-nous d’accord sur un type case. type c a s e = Croix | Rond | Vide ; ; Figure 1: Une grille de morpion Exercice 1 : Définissez une représentation de grille avec la structure de données que vous souhaitez. 1 Exercice 2 : Implémentez la fonction affiche qui prend en argument une grille g et affiche votre plateau de jeu (affichage en mode console pour le moment). 3 Configuration gagnante Exercice 3 : Implémentez la fonction test_ligne qui prend en argument une grille g et un indice de ligne i et qui renvoie un booléen true si la ligne i est gagnante, un booléen false sinon. Exercice 4 : De même, implémentez la fonction test_colonne qui prend en argument une grille g et un indice de colonne j et qui renvoie un booléen. Exercice 5 : De même, implémentez la fonction test_diag qui prend en argument une grille g et qui teste directement les 2 diagonales de la grille et qui renvoie un booléen. Exercice 6 : Implémentez la fonction test_grille qui prend en argument une grille g et renvoie un booléen true si la configuration de la grille courante est gagnante. 4 Placer un pion et jouer Exercice 7 : Implémentez la fonction placePion qui prend en argument une grille g, une case c et des indices de ligne et de colonne i et j. Cette fonction modifiera la case de la grille g par la case c si celle-ci est modifiable (i.e. si celle-ci est Vide). Pour indiquer que la grille a été modifiée la fonction renverra un booléen true et un booléen false sinon. Exercice 8 : Implémentez la fonction initGrille qui renvoie une grille de morpion initialisée (i.e. toutes les cases sont vides). Exercice 9 : Implémentez la fonction finJeu qui prend en paramètre une grille g et renvoie un booléen true si la grille est pleine et false sinon. Exercice 10 : Implémentez la fonction jouerHvsH qui prend en paramètre 2 noms et qui déroule une partie entre 2 utilisateurs humains. l e t x = read_int ( ) ; ; (∗ demande un e n t i e r a l ’ u t i l i s a t e u r ∗) (∗ l ’ e n t i e r e s t s t o c k e dans x ∗) 5 Interface graphique Exercice 11 : Implémentez la fonction affiche_graph qui prend en argument une grille g et affiche votre plateau de jeu. 2 #l o a d " g r a p h i c s . cma " ; ; open Graphics ; ; open_graph " 640 x600 " ; ; (∗ q u e l q u e s f o n c t i o n s u t i l e s ∗) clear_graph ( ) ; ; (∗ t r a c e r une l i g n e e n t r e ( x1 , y1 ) e t ( x2 , y2 ) ∗) moveto x1 y1 ; ; l i n e t o x2 y2 ; ; (∗ t r a c e r un c e r c l e de c e n t r e ( x , y ) e t de rayon r ∗) draw_circle x y r ; ; Exercice 12 : Adaptez votre fonction jouerHvsH pour que le jeu puisse se faire en cliquant directement sur le graphique. (∗ q u e l q u e s f o n c t i o n s u t i l e s ∗) (∗ v o i r l a page s u r l e Module Graphics ∗) button_down ( ) ; ; mouse_pos ( ) ; ; (∗ exemple ∗) w h i l e ( not ( button_down ( ) ) ) do pos := mouse_pos ( ) ; done ; 3