# -*- coding: cp1252 -*- ## morpion.py ## ------------- ## Réaliser par ROMMY.P le 18/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 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 = raw_input(texte) case = string.upper(case) # 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 "#############" print "#",morpion[0][0],"|",morpion[0][1],"|",morpion[0][2],"# 1" print "#---+---+---#" print "#",morpion[1][0],"|",morpion[1][1],"|",morpion[1][2],"# 2" print "#---+---+---#" print "#",morpion[2][0],"|",morpion[2][1],"|",morpion[2][2],"# 3" 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 if ((morpion[0][0] == morpion[1][0] and morpion[0][0] == morpion[2][0]) or (morpion[0][0] == morpion[0][1] and morpion[0][0] == morpion[0][2]) or (morpion[0][0] == morpion[1][1] and morpion[0][0] == morpion[2][2])) and morpion[0][0] != " ": if morpion[0][0] == "X": print "Bravo", nom_j1, "vous avez gagné" else : print "Bravo", nom_j2, "vous avez gagné" fini = True elif ((morpion[0][1] == morpion[1][1] and morpion[1][1] == morpion[2][1]) or (morpion[1][0] == morpion[1][1] and morpion[1][1] == morpion[1][2]) or (morpion[2][0] == morpion[1][1] and morpion[1][1] == morpion[0][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 elif ((morpion[0][2] == morpion[2][2] and morpion[1][2] == morpion[2][2]) or (morpion[2][0] == morpion[2][2] and morpion[2][1] == morpion[2][2])) and morpion[2][2] != " ": if morpion[2][2] == "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 = 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(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