Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
morpion_console [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


morpion_console

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision Les deux révisions suivantes
morpion_console [2008/05/10 06:40]
tyrtamos
morpion_console [2008/05/10 08:49]
tyrtamos
Ligne 19: Ligne 19:
 ===== Utilisation du programme ===== ===== Utilisation du programme =====
  
 +Utilisation très simple: il faut lancer le programme dans une console python, par exemple "idle" (c'est que j'ai utilisé pour développer le jeu).
  
 +Il faut choisir à l'invite:
  
 +  * si on veut 2 joueurs humains, ou 1 joueur humain contre l'ordinateur ou l'ordinateur qui joue contre lui-même.
 +
 +  * si on veut l'affichage d'une aide (=proposition de coups à jouer)
 +
 +  * qui doit commencer: joueur1, joueur2 ou détermination au hasard.
 +
 +Le programme affiche la grille et, selon le cas, demande le coup à jouer au joueur humain, ou dit quel coup joue le joueur ordinateur.
 +
 +A la fin, le programme dit s'il y a un gagnant ou pas, et ferme le jeu.
  
 \\ \\
 ===== Principe du codage ===== ===== Principe du codage =====
 +
 +Pour la trame générale du jeu, j'ai utilisé le modèle du jeu damier du présent site ([[modele_jeu_type_damier]])
 +
 +Pour l'analyse des coups par l'ordinateur, c'est la fonction "ajouer(pion)" qui pilote la sélection et qui renvoie un ou plusieurs coups à jouer. 
 +
 +Cette fonction "ajouer(pion)" fait les choses suivantes:
 +
 +  * calcule s'il y a des coups gagnants. Par exemple avec le pion 'X', si on a une ligne 'X_X', le fait de jouer dans la case du milieu fait gagner le jeu. En principe, s'il y a un coup gagnant, il est inutile de chercher plus loin: il faut seulement le jouer.
 +
 +  * calcule s'il y a des coups perdants, c'est à dire gagnant pour l'adversaire, au sens précédent. Auquel cas, il faudra jouer cela pour éviter que l'adversaire ne gagne au coup suivant. S'il n'y a aucun coup gagnant mais un coup perdant, il est inutile de chercher plus loin: il faut impérativement jouer le coup perdant. Bien entendu, s'il y a 2 coups perdants, c'est cuit, à part si l'adversaire est distrait... (Tiens, comment on simule la distraction chez un joueur ordinateur?)
 +
 +  * calcule tous les coups possibles (=cases vides), leur affecte des coefficients (que vous pouvez changer) qui dépendent de la position de la case, et les présente sous forme d'une liste de coup [ligne,colonne] dans l'ordre décroissant des coefficients.
 +
 +  * en reprenant cette même liste, la fonction "correction()" met en avant la 1ère des solutions, si elle existe, qui a au moins une ligne ou une colonne ou une diagonale qui ne contient pas le pion de l'adversaire. Ceci pour éviter que le coup recommandé à cause d'un coefficient élevé soit inefficace (=on remplit une case sans aucun intérêt pour la suite du jeu).
 +
 +Il y a aussi, bien entendu une fonction qui détecte si il y a une configuration gagnante, et donc un gagnant, ou si la grille est pleine sans gagnant. 
  
  
 +Et voilà!
  
 \\ \\
Ligne 214: Ligne 242:
 ############################################################################### ###############################################################################
 def ajouer(pion): def ajouer(pion):
 +    global aide  # dit si l'affichage de l'aide à chaque coup est demandé
  
     # recherche de qui est en train de jouer     # recherche de qui est en train de jouer
Ligne 223: Ligne 252:
     # recherche des positions gagnantes s'il y en a     # recherche des positions gagnantes s'il y en a
     LG = coupsgagnants(pion)     LG = coupsgagnants(pion)
-    print "coups gagnants: ", LG+    if aide: 
 +        print u"coups gagnants: ", LG
  
     # recherche des positions perdantes (=gagnantes pour l'autre!) s'il y en a     # recherche des positions perdantes (=gagnantes pour l'autre!) s'il y en a
     LP = coupsgagnants(pionautre)     LP = coupsgagnants(pionautre)
-    print "coups perdants: ", LP+    if aide: 
 +        print u"coups perdants: ", LP
  
     # recherche des positions recommandees avec les coefficients     # recherche des positions recommandees avec les coefficients
Ligne 236: Ligne 267:
     # sélectionne tous les coups possibles dans l'ordre décroissant des coefficients     # sélectionne tous les coups possibles dans l'ordre décroissant des coefficients
     LC=coupscoef(c)     LC=coupscoef(c)
-    print u"coups recommandés avant correction: ", LC+    if aide: 
 +        print u"coups recommandés avant correction: ", LC
          
     # met au début de cette liste, si possible, un coup efficace     # met au début de cette liste, si possible, un coup efficace
     LC=correction(LC,pionautre)        LC=correction(LC,pionautre)   
- +    if aide: 
-    print u"coups recommandées: ", LC+        print u"coups recommandées: ", LC
  
     # restituer le meilleur coup     # restituer le meilleur coup
Ligne 304: Ligne 336:
         global premier  # désigne le numéro du joueur qui a joué en premier         global premier  # désigne le numéro du joueur qui a joué en premier
         global nbjoueurs  # nombre de joueurs du jeu         global nbjoueurs  # nombre de joueurs du jeu
 +        global aide  # dit si l'affichage d'une aide est demandé
  
         while not self.stop:  # tant que le jeu n'est pas terminé         while not self.stop:  # tant que le jeu n'est pas terminé
Ligne 329: Ligne 362:
                     else:                     else:
                         pionautre='X'                         pionautre='X'
 +                    print
                     print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"                     print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"
                     self.chx = ajouer(self.pion)                     self.chx = ajouer(self.pion)
Ligne 340: Ligne 374:
                     else:                     else:
                         pionautre='X'                         pionautre='X'
 +                    print
                     print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"                     print self.getName() + " joue ('" + self.pion + "' contre '" + pionautre + "')"
                     self.chx = ajouer(self.pion)                     self.chx = ajouer(self.pion)
-                    self.coup = raw_input(self.getName() + " joue case "+str(self.chx)+": ") +                    ch=self.getName() + " joue case: " 
-                    if self.coup!="": +                    if aide: 
-                        self.chx=eval(self.coup) +                        ch = self.getName() + " joue case " + str(self.chx) + ": " 
-                    grille[self.chx[0]][self.chx[1]]=self.pion +                    else: 
-                    time.sleep(0.1)+                        ch = self.getName() + joue case (ligne,colonne):" 
 +                    while True
 +                        self.coup raw_input(ch) 
 +                        if aide and self.coup=="": 
 +                            # ici, le jour a choisi le coup proposé 
 +                            grille[self.chx[0]][self.chx[1]]=self.pion 
 +                            break 
 +                        try: 
 +                            # ici, le joueur a entré un choix ligne,colonne 
 +                            x = eval(self.coup) 
 +                            if ((type(x)==list or type(x)==tuple) and len(x)==2) \ 
 +                                    and (x[0] in [0,1,2]and (x[1] in [0,1,2]) \ 
 +                                        and grille[x[0]][x[1]]==' ': 
 +                                grille[x[0]][x[1]]=self.pion 
 +                                break 
 +                        except: 
 +                            # ici, le choix entré n'est pas correct 
 +                            pass
            
             ##### => fin du coup du joueur en cours             ##### => fin du coup du joueur en cours
Ligne 373: Ligne 425:
  
 # type de joueurs: 0=ordinateur, 1=humain; on doit avoir: len(typejoueurs)==nbjoueurs # type de joueurs: 0=ordinateur, 1=humain; on doit avoir: len(typejoueurs)==nbjoueurs
-# par défauttous à 0 (=ordinateur joue contre lui-même): +while True: 
-x = raw_input("Voulez-vous jouer vous-meme(O/N) [O]") +    print 
-if x=="O" or x=="o" or x==""+    print u"Type de joueurs:" 
-    typejoueurs=[0,1] +    print u"[1]: 2 joueurs humains jouent ensemble" 
-    print "vous serez joueur2" +    print u"[2]: l'ordinateur contre 1 joueur humain" 
-else+    print u"[3]: l'ordinateur joue contre lui-même" 
-    typejoueurs=[0,0]+    x = raw_input("Quel choix voulez-vous? [2 par defaut]") 
 +    if x=='1': 
 +        typejoueurs=[1,1] 
 +        break 
 +    if x=='2' or x==''
 +        typejoueurs=[0,1] 
 +        break 
 +    if x=='3'
 +        typejoueurs=[0,0] 
 +        break
  
-forme du pion affecté à chaque joueur. On doit avoir: len(pions)==nbjoueurs+savoir si une aide est demandée: 
 +while True: 
 +    print 
 +    x = raw_input(u"L'affichage d'une aide est-il demandé? O/N [O par défaut]: ") 
 +    if x=='O' or x=='o' or x=='': 
 +        aide=True 
 +        break 
 +    elif x=='N' or x=='n': 
 +        aide=False 
 +        break 
 +    else: 
 +        pass 
 + 
 +# type de pion affecté à chaque joueur.
 pions = ['O','X' pions = ['O','X'
 +print
 +print u"=====> le joueur1 a le pion 'O', et l'autre le pion 'X'"
  
 # définir celui qui commence, ou définir au hasard # définir celui qui commence, ou définir au hasard
-if typejoueurs[1]==1: +while True: 
-    premier=1 +    print 
-    x=raw_input("Voulez-vous commencer la partie (O/N) [O]") +    print u"Définir qui va commencer" 
-    if not (x=='Oor x=='o' or x=='')+    print u"[1] le joueur commence" 
-        premier=0 +    print u"[2] le joueur 2 commence" 
-else: +    print u"[3] le joueur qui commence est défini au hasard" 
-    premier = random.randint(0,nbjoueurs-1)+    x = raw_input(u"Quel choix voulez-vous[3 par defaut]") 
 +    if x=='1'
 +        premier = 0 
 +        break 
 +    elif x=='2': 
 +        premier = 1 
 +        break 
 +    elif x=='3' or x=='': 
 +        premier = random.randint(0,nbjoueurs-1) 
 +        break
  
 +print
 print "=====> c'est joueur"+str(premier+1)+" qui commence" print "=====> c'est joueur"+str(premier+1)+" qui commence"
  
Ligne 432: Ligne 518:
         verrou.release()         verrou.release()
  
-    # détection du départ d'un nouveau tour numéro ((cdcoups//nbjoueurs)+1) par (cdcoups%nbjoueurs==0) +    # affichage de la grille après le dernier coup 
-    ch="" +    print
-    if cdcoups%nbjoueurs==0: +
-        print +
-        print u"=====> début du tour " + str((cdcoups//nbjoueurs)+1) +
- +
-    # affichage de la grille+
     for i in xrange(0,imax):     for i in xrange(0,imax):
         print grille[i]         print grille[i]
-    print+
  
     # voir si un gagnant     # voir si un gagnant
-    gagnant = jeugagne() +    = jeugagne() 
-    if gagnant!="":+    if x!="": 
 +        if x==pions[0]: 
 +            gagnant = "joueur1 ('" + pions[0] + "')" 
 +        else: 
 +            gagnant = "joueur2 ('" + pions[1] + "')" 
 +        print
         print "le gagnant est: " + gagnant         print "le gagnant est: " + gagnant
         verrou.release()         verrou.release()
Ligne 452: Ligne 538:
     # condition de fin de jeu     # condition de fin de jeu
     if grillepleine():     if grillepleine():
 +        print
         print "pas de gagnant!"         print "pas de gagnant!"
         verrou.release()         verrou.release()
         break         break
 +
 +    # détection du départ d'un nouveau tour numéro ((cdcoups//nbjoueurs)+1) par (cdcoups%nbjoueurs==0)
 +    ch=""
 +    if cdcoups%nbjoueurs==0:
 +        print
 +        print u"=====> début du tour " + str((cdcoups//nbjoueurs)+1)
  
     # permet au joueur suivant de jouer     # permet au joueur suivant de jouer
Ligne 477: Ligne 570:
     verrou.release()     verrou.release()
    
 +print
 print u"A bientôt pour un prochain jeu!" print u"A bientôt pour un prochain jeu!"
 </code> </code>
  
 \\ \\
-===== Exemple de session avec l'ordinateur qui joue contre lui-même =====+===== Exemple de session avec deux joueurs humains =====
  
 +Exemple pris ici sans aide de l'ordinateur pour le choix des coups.
 +
 +<code>
 +Bonjour! En route pour le jeu de morpion!
 +
 +Type de joueurs:
 +[1]: 2 joueurs humains jouent ensemble
 +[2]: l'ordinateur contre 1 joueur humain
 +[3]: l'ordinateur joue contre lui-même
 +Quel choix voulez-vous? [2 par defaut]: 1
 +
 +L'affichage d'une aide est-il demandé? O/N [O par défaut]: n
 +
 +=====> le joueur1 a le pion 'O', et l'autre le pion 'X'
 +
 +Définir qui va commencer
 +[1] le joueur 1 commence
 +[2] le joueur 2 commence
 +[3] le joueur qui commence est défini au hasard
 +Quel choix voulez-vous? [3 par defaut]: 1
 +
 +=====> c'est joueur1 qui commence
 +
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +
 +=====> début du tour 1
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case (ligne,colonne):0,0
 +
 +['O', ' ', ' ']
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):1,2
 +
 +['O', ' ', ' ']
 +[' ', ' ', 'X']
 +[' ', ' ', ' ']
 +
 +=====> début du tour 2
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case (ligne,colonne):1,1
 +
 +['O', ' ', ' ']
 +[' ', 'O', 'X']
 +[' ', ' ', ' ']
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):2,2
 +
 +['O', ' ', ' ']
 +[' ', 'O', 'X']
 +[' ', ' ', 'X']
 +
 +=====> début du tour 3
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case (ligne,colonne):0,1
 +
 +['O', 'O', ' ']
 +[' ', 'O', 'X']
 +[' ', ' ', 'X']
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):0,2
 +
 +['O', 'O', 'X']
 +[' ', 'O', 'X']
 +[' ', ' ', 'X']
 +
 +le gagnant est: joueur2 ('X')
 +
 +fin du jeu
 +fin du thread joueur1
 +fin du thread joueur2
 +
 +A bientôt pour un prochain jeu!
 +</code>
 +
 +NB: le joueur1 n'est vraiment pas doué, ou alors il est très très distrait :-D
  
 \\ \\
 ===== Exemple de session avec l'ordinateur qui joue contre un joueur humain ===== ===== Exemple de session avec l'ordinateur qui joue contre un joueur humain =====
  
 +Exemple pris ici sans aide de l'ordinateur pour le choix des coups.
 +
 +<code>
 +Bonjour! En route pour le jeu de morpion!
 +
 +Type de joueurs:
 +[1]: 2 joueurs humains jouent ensemble
 +[2]: l'ordinateur contre 1 joueur humain
 +[3]: l'ordinateur joue contre lui-même
 +Quel choix voulez-vous? [2 par defaut]: 
 +
 +L'affichage d'une aide est-il demandé? O/N [O par défaut]: n
 +
 +=====> le joueur1 a le pion 'O', et l'autre le pion 'X'
 +
 +Définir qui va commencer
 +[1] le joueur 1 commence
 +[2] le joueur 2 commence
 +[3] le joueur qui commence est défini au hasard
 +Quel choix voulez-vous? [3 par defaut]: 2
 +
 +=====> c'est joueur2 qui commence
 +
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +
 +=====> début du tour 1
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):1,1
 +
 +[' ', ' ', ' ']
 +[' ', 'X', ' ']
 +[' ', ' ', ' ']
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case:  [2, 0]
 +
 +[' ', ' ', ' ']
 +[' ', 'X', ' ']
 +['O', ' ', ' ']
 +
 +=====> début du tour 2
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):2,2
 +
 +[' ', ' ', ' ']
 +[' ', 'X', ' ']
 +['O', ' ', 'X']
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case:  [0, 0]
 +
 +['O', ' ', ' ']
 +[' ', 'X', ' ']
 +['O', ' ', 'X']
 +
 +=====> début du tour 3
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):1,0
 +
 +['O', ' ', ' ']
 +['X', 'X', ' ']
 +['O', ' ', 'X']
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case:  [1, 2]
 +
 +['O', ' ', ' ']
 +['X', 'X', 'O']
 +['O', ' ', 'X']
 +
 +=====> début du tour 4
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):2,1
 +
 +['O', ' ', ' ']
 +['X', 'X', 'O']
 +['O', 'X', 'X']
 +
 +joueur1 joue ('O' contre 'X')
 +joueur1 joue case:  [0, 1]
 +
 +['O', 'O', ' ']
 +['X', 'X', 'O']
 +['O', 'X', 'X']
 +
 +=====> début du tour 5
 +
 +joueur2 joue ('X' contre 'O')
 +joueur2 joue case (ligne,colonne):0,2
 +
 +['O', 'O', 'X']
 +['X', 'X', 'O']
 +['O', 'X', 'X']
 +
 +pas de gagnant!
 +
 +fin du jeu
 +fin du thread joueur1
 +fin du thread joueur2
 +
 +A bientôt pour un prochain jeu!
 +</code>
 +
 +\\
 +===== Exemple de session avec l'ordinateur qui joue contre lui-même =====
 +
 +Exemple pris ici avec aide de l'ordinateur pour le choix des coups.
 +
 +
 +<code>
 +Bonjour! En route pour le jeu de morpion!
 +
 +Type de joueurs:
 +[1]: 2 joueurs humains jouent ensemble
 +[2]: l'ordinateur contre 1 joueur humain
 +[3]: l'ordinateur joue contre lui-même
 +Quel choix voulez-vous? [2 par defaut]: 3
 +
 +L'affichage d'une aide est-il demandé? O/N [O par défaut]: 
 +
 +=====> le joueur1 a le pion 'O', et l'autre le pion 'X'
 +
 +Définir qui va commencer
 +[1] le joueur 1 commence
 +[2] le joueur 2 commence
 +[3] le joueur qui commence est défini au hasard
 +Quel choix voulez-vous? [3 par defaut]: 
 +
 +=====> c'est joueur1 qui commence
 +
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +[' ', ' ', ' ']
 +
 +=====> début du tour 1
 +
 +joueur1 joue ('O' contre 'X')
 +coups gagnants:  []
 +coups perdants:  []
 +coups recommandés avant correction:  [[1, 1], [2, 2], [2, 0], [0, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[1, 1], [2, 2], [2, 0], [0, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +joueur1 joue case:  [1, 1]
 +
 +[' ', ' ', ' ']
 +[' ', 'O', ' ']
 +[' ', ' ', ' ']
 +
 +joueur2 joue ('X' contre 'O')
 +coups gagnants:  []
 +coups perdants:  []
 +coups recommandés avant correction:  [[2, 0], [2, 2], [0, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[2, 0], [2, 2], [0, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +joueur2 joue case:  [2, 0]
 +
 +[' ', ' ', ' ']
 +[' ', 'O', ' ']
 +['X', ' ', ' ']
 +
 +=====> début du tour 2
 +
 +joueur1 joue ('O' contre 'X')
 +coups gagnants:  []
 +coups perdants:  []
 +coups recommandés avant correction:  [[0, 2], [2, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[0, 2], [2, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +joueur1 joue case:  [0, 2]
 +
 +[' ', ' ', 'O']
 +[' ', 'O', ' ']
 +['X', ' ', ' ']
 +
 +joueur2 joue ('X' contre 'O')
 +coups gagnants:  []
 +coups perdants:  []
 +coups recommandés avant correction:  [[2, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[2, 2], [0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +joueur2 joue case:  [2, 2]
 +
 +[' ', ' ', 'O']
 +[' ', 'O', ' ']
 +['X', ' ', 'X']
 +
 +=====> début du tour 3
 +
 +joueur1 joue ('O' contre 'X')
 +coups gagnants:  []
 +coups perdants:  [[2, 1]]
 +coups recommandés avant correction:  [[0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[0, 0], [2, 1], [1, 2], [1, 0], [0, 1]]
 +joueur1 joue case:  [2, 1]
 +
 +[' ', ' ', 'O']
 +[' ', 'O', ' ']
 +['X', 'O', 'X']
 +
 +joueur2 joue ('X' contre 'O')
 +coups gagnants:  []
 +coups perdants:  [[0, 1]]
 +coups recommandés avant correction:  [[0, 0], [1, 2], [1, 0], [0, 1]]
 +coups recommandées:  [[0, 0], [1, 2], [1, 0], [0, 1]]
 +joueur2 joue case:  [0, 1]
 +
 +[' ', 'X', 'O']
 +[' ', 'O', ' ']
 +['X', 'O', 'X']
 +
 +=====> début du tour 4
 +
 +joueur1 joue ('O' contre 'X')
 +coups gagnants:  []
 +coups perdants:  []
 +coups recommandés avant correction:  [[0, 0], [1, 2], [1, 0]]
 +coups recommandées:  [[1, 2], [0, 0], [1, 0]]
 +joueur1 joue case:  [1, 2]
 +
 +[' ', 'X', 'O']
 +[' ', 'O', 'O']
 +['X', 'O', 'X']
 +
 +joueur2 joue ('X' contre 'O')
 +coups gagnants:  []
 +coups perdants:  [[1, 0]]
 +coups recommandés avant correction:  [[0, 0], [1, 0]]
 +coups recommandées:  [[0, 0], [1, 0]]
 +joueur2 joue case:  [1, 0]
 +
 +[' ', 'X', 'O']
 +['X', 'O', 'O']
 +['X', 'O', 'X']
 +
 +=====> début du tour 5
 +
 +joueur1 joue ('O' contre 'X')
 +coups gagnants:  []
 +coups perdants:  [[0, 0]]
 +coups recommandés avant correction:  [[0, 0]]
 +coups recommandées:  [[0, 0]]
 +joueur1 joue case:  [0, 0]
 +
 +['O', 'X', 'O']
 +['X', 'O', 'O']
 +['X', 'O', 'X']
 +
 +pas de gagnant!
 +
 +fin du jeu
 +fin du thread joueur1
 +fin du thread joueur2
 +
 +A bientôt pour un prochain jeu!
 +</code>
 +
 +\\
 +Amusez-vous bien!
  
 <html> <html>
morpion_console.txt · Dernière modification: 2008/05/10 09:00 de tyrtamos