## morpion.py ## ------------- ## Réaliser 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 morpion, 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 morpion[0][0] == " ": morpion[0][0] = symbole case_remplie += 1 elif case == "A2" and morpion[1][0] == " ": morpion[1][0] = symbole case_remplie += 1 elif case == "A3" and morpion[2][0] == " ": morpion[2][0] = symbole case_remplie += 1 elif case == "B1" and morpion[0][1] == " ": morpion[0][1] = symbole case_remplie += 1 elif case == "B2" and morpion[1][1] == " ": morpion[1][1] = symbole case_remplie += 1 elif case == "B3" and morpion[2][1] == " ": morpion[2][1] = symbole case_remplie += 1 elif case == "C1" and morpion[0][2] == " ": morpion[0][2] = symbole case_remplie += 1 elif case == "C2" and morpion[1][2] == " ": morpion[1][2] = symbole case_remplie += 1 elif case == "C3" and morpion[2][2] == " ": morpion[2][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(morpion): print ("\n A B C") print ("#############") for i in range(0,3): print ("#",morpion[i][0],"|",morpion[i][1],"|",morpion[i][2],"#", i+1) if i != 2 : print ("#---+---+---#") print ("#############\n") # vérifie si 3 symboles identiques sont alignés # et modifie "fini" si c'est le cas. def verification(morpion, nom_j1, nom_j2): global fini #on teste les colonnes for i in range(0,3): if (morpion[0][i] == morpion[1][i] and morpion[0][i] == morpion[2][i]) and morpion[0][i] != " " : if morpion[0][i] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True #on teste les lignes for i in range(0,3): if (morpion[i][0] == morpion[i][1] and morpion[i][0] == morpion[i][2]) and morpion[i][0] != " " : if morpion[i][0] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True #on teste les diagonales if ((morpion[0][2] == morpion[1][1] and morpion[1][1] == morpion[2][0]) or (morpion[0][0] == morpion[1][1] and morpion[1][1] == morpion[2][2])) and morpion[1][1] != " ": if morpion[1][1] == "X": print ("Bravo", nom_j1, "vous avez gagné") else : print ("Bravo", nom_j2, "vous avez gagné") fini = True tour_joueur = 0 fini = False morpion = [[" ", " ", " "],[" ", " ", " "],[" ", " ", " "]] 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(morpion) while not fini : tour_joueur = placer(tour_joueur, nom_joueur1, nom_joueur2) tour_joueur += 1 affichage(morpion) verification(morpion, nom_joueur1, nom_joueur2) if case_remplie == 9 and not fini: print ("match nul") fini = True