## morpion.py ## ------------- ## Réalisé par ROMMY.P le 17/01/2009 ## Pour le tutoriel du site ROMMY Production "http://rommyprod.com" import string # place le symbole du joueur sur la case demandée et retourne # la valeur de tour (inchangée sauf si la case demandée # est remplie) def placer(tour, nom_j1, nom_j2): global A, B, C, case_remplie # on regarde c'est le tour de quel joueur. if tour%2 == 0: symbole = "X" nom = nom_j1 else : symbole = "O" nom = nom_j2 texte = nom + ", où voulez vous placer (ex: A1) : " case = input(texte) case = case.upper() # on place le symbole à la case demandée if case == "A1" and A[0] == " ": A[0] = symbole case_remplie += 1 elif case == "A2" and A[1] == " ": A[1] = symbole case_remplie += 1 elif case == "A3" and A[2] == " ": A[2] = symbole case_remplie += 1 elif case == "B1" and B[0] == " ": B[0] = symbole case_remplie += 1 elif case == "B2" and B[1] == " ": B[1] = symbole case_remplie += 1 elif case == "B3" and B[2] == " ": B[2] = symbole case_remplie += 1 elif case == "C1" and C[0] == " ": C[0] = symbole case_remplie += 1 elif case == "C2" and C[1] == " ": C[1] = symbole case_remplie += 1 elif case == "C3" and C[2] == " ": C[2] = symbole case_remplie += 1 else : print ("la case est déjà remplie, ou vous n'avez pas tapez une case valide.") tour -= 1 return tour # affiche le morpion def affichage(A, B, C): print ("\n A B C") print ("#############") print ("#",A[0],"|",B[0],"|",C[0],"# 1") print ("#---+---+---#") print ("#",A[1],"|",B[1],"|",C[1],"# 2") print ("#---+---+---#") print ("#",A[2],"|",B[2],"|",C[2],"# 3") print ("#############\n") # vérifie si 3 symboles identiques sont alignés # et modifie "fini" si c'est le cas. def verification(A, B, C, nom_j1, nom_j2): global fini if ((A[0] == A[1] and A[0] == A[2]) or (A[0] == B[0] and A[0] == C[0]) or (A[0] == B[1] and A[0] == C[2])) and A[0] != " ": if A[0] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True elif ((B[0] == B[1] and B[1] == B[2]) or (A[1] == B[1] and B[1] == C[1]) or (A[2] == B[1] and B[1] == C[0])) and B[1] != " ": if B[1] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True elif ((C[0] == C[2] and C[1] == C[2]) or (A[2] == C[2] and B[2] == C[2])) and C[2] != " ": if C[2] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True tour_joueur = 0 fini = False A = [" ", " ", " "] B = [" ", " ", " "] C = [" ", " ", " "] case_remplie = 0 nom_joueur1 = input("entrez le nom du 1er joueur, vous aurez les X: ") nom_joueur2 = input("entrez le nom du 2eme joueur, vous aurez les O: ") affichage(A, B, C) while not fini : tour_joueur = placer(tour_joueur, nom_joueur1, nom_joueur2) tour_joueur += 1 affichage(A, B, C) verification(A, B, C, nom_joueur1, nom_joueur2) if case_remplie == 9 and not fini: print ("match nul") fini = True