# -*- coding: cp1252 -*- ## morpion.py ## ------------- ## Réalisé par ROMMY.P le 13/08/2007 ## Pour le tutoriel du site ROMMY Production "http://rommyprod.redby.info" 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 = raw_input(texte) case = string.upper(case) # 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 = raw_input("entrez le nom du 1er joueur, vous aurez les X: ") nom_joueur2 = raw_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