morpion = [[" . ", " . ", " . "],[" . ", " . ", " . "],[" . ", " . ", " . "]] def tableau_morpion(): # Permet de créer un tableau en 3 lignes et 3 colonnes avec des "." sur chaque case du tableau " ligne=[1,2,3] colonne=[1,2,3] print'' print' ', for i in range(0,3): print colonne[i], print for i in range(0,3): print ligne[i],' ', for j in range(0,3): print morpion[i][j], print def fin(morpion): compteur=0 for i in range(0,3): for j in range (0,3): if morpion[i][j] !=' . ': compteur=compteur+1 return compteur def verif_diag1(morpion,joueur,diag): # Vérifie la victoire du morpion lorsque la 1ère diagonale allant de gauche à droite est remplie par le même joueur # ligne=[1,2,3] colonne=[1,2,3] compteur=0 for i in range(0,3): if morpion[i][i]==joueur: compteur=compteur+1 if compteur==3: print "le joueur : ",joueur," gagne !" return True else: return False def verif_diag2(morpion,joueur,diag): # Vérifie la victoire du morpion lorsque la 2ème diagonale allant de droite à gauche est remplie par le même joueur # ligne=[1,2,3] colonne=[1,2,3] compteur=0 for i in range(0,3): if morpion[i][2-i]==joueur: compteur=compteur+1 if compteur==3: print "le joueur : ",joueur," gagne !" return True else: return False def verif_horiz(morpion,joueur,x): # Vérifie la victoire du morpion lorsque l'une des trois lignes horizontales sont remplies par le même joueur # colonne=[1,2,3] compteur=0 print x #correction : ( IL faut supprimer le print x )# #explication : car il est en trop # x=x-1 if x in range(0,3): for i in range(0,3): if morpion[x][i]==joueur: compteur=compteur+1 if compteur==3: print "le joueur : ",joueur," gagne !" return True else: return False def verif_vert(morpion,joueur,y): # Vérifie la victoire du morpion lorsque l'une des trois lignes verticales sont remplies par le même joueur # ligne=[1,2,3] compteur=0 y=y-1 if y in range(0,3): for i in range(0,3): if morpion[i][y]==joueur: compteur=compteur+1 if compteur==3: print "le joueur : ",joueur," gagne !" return True else: return False def point(morpion,joueur): # Vérifie les Matchs nuls du morpions lorsque toutes les cases du tableau sont remplies par les deux joueurs mais que les conditions de victoire ne sont pas remplies # # Vérifie aussi la défaite du joueur lorsque l'adversaire remplie les conditions de victoire avant le joueur # print 'ligne = ', x=input() #correction : il faut faire : x=int(input())# #explication : on ne peux rentré une valeur approché# print 'colonne = ', y=input() #correction : y=int(input())# #explication : car sinon une valeur approcher ne marche pas# if morpion[x-1][y-1]==' . ': morpion[x-1][y-1]=joueur else: if fin(morpion)<9: print'IMPOSSIBLE ===> Rejouer' else: print ('GAME OVER !') point(morpion,joueur) if verif_diag1(morpion,joueur,x) or verif_diag2(morpion,joueur,y) or verif_vert(morpion,joueur,y) or verif_vert(morpion,joueur,y): #correction : if verif_diag1(morpion,joueur,x) or verif_diag2(morpion,joueur,y) or verif_vert(morpion,joueur,y) or * verif_horiz(morpion,joueur,y): # #explication : il y avait deux verif_vert(morpion,joueur,y) donc dans la ligne verif_vert(morpion,joueur,y) on a remplacer vert par horiz# return True else: return False essai=0 tableau_morpion() while essai<9: print 'essai : ',essai if not(point(morpion,'X')): tableau_morpion() if not(point(morpion,'O')): essai=essai+2 else: essai=10 else: essai=10 tableau_morpion()