repl.it
@simon100/

tic tac toe

Python

No description

fork
loading
Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
"""
Jeu «Tic-Tac-Toe» pour la semaine Informatique tous âges.
Auteur: Fermion & Bérillium
"""

# VARIABLES GLOBALES
SYMBOLES = ["X", "O"]   # Symboles possibles
#TODO: Obetnir le nom des joueurs via la console
JOUEUR_1 = input("\nJOUEUR 1 \nENTRE TON NOM\n\n ")  # Nom du joueur 1  # Indice :  On utilise la fontion "input()"
JOUEUR_2 = input("\nJOUEUR 2 \nENTRE TON NOM\n\n ")  # Nom du joueur 2  # Indice :  On utilise la fontion "input()"
JOUEURS = [JOUEUR_1, JOUEUR_2]
QUI_JOUE = False    # Joueur qui joue (False == 0; True == 1)

# DÉFINITIONS DES FONCTIONS
def affiche_grille(grille):

    """Affiche la grille (liste) fournie en argument
    
    Args:
        grille (list): Grille de jeu (3x3)
    """


    print("*---*---*---*")
    # Boucle pour afficher les éléments de la grille
    for i in range(3):
        # Affiche la ie rangée
        print("| {} | {} | {} |".format(grille[3*i], grille[i*3 + 1], grille[i*3 + 2]))
        print("*---*---*---*")
    # Fin de la fonction
    return

def choix_joueur(grille):

    """Obtient la case ou le joueur veut jouer.
    
    Args:
        grille (list): Grille de jeu (3x3)
    """

    # Boucle infinie
    while True:
      # Demande au joueur où il veut jouer
      #TODO: Message pour demander au joueur son choix
      print(f"{JOUEURS[QUI_JOUE]} où voulez-vous jouez?")
      # 2. print(f"{QUI_JOUE} où voulez-vous jouez?")

      #TODO: Message pour préciser au joueur qui joue comment faire un choix valide
      # 3. print("{JOUEURS} où voulez-vous jouez?")
      # Indice : On utilise la fonction print ici
      print("POUR JOUER ENTRER LE NUMERO DE LA CASE OU VOUS VOULEZ JOUER\n\n\n")
      # On obtient le choix du joueur dans la variable "choix"
      
      choix = input()

        # Vérifie si le input n'est pas composé de 1 éléments
      if len(choix) != 1:
            print("Votre choix doit être de la forme suivante: i")
        # Sinon, poursuit la procédure
      else:
            # Essaie de convertir en 'int'
            try:
                choix = int(choix)
                # Vérifie si les nombres entrés sont valides
                
                #TODO: Trouver la condition
                # Choix de réponse:
                # 1. if choix > 0
                # 2. if choix < 8
                # 3. if choix > 8
                if choix > 8 or choix < 0:


                    print("Vous devez entrer des chiffres entre 0 et 8.")
                # Vérifie si la case est libre
                elif (grille[choix] == 'X' or grille[choix] == 'O'):
                    print("La case choisie n'est pas libre!")
                # Sinon, retourne le choix du joueur
                else:
                    return choix
            # Exception
            except ValueError:
                print("Vous devez entrer des nombres!")

def gagnant(grille):

    """Détermine si le joueur présent a gagné la partie.
    
    Args:
        grille (list): Grille de jeu
    """

    # Obtient la chaine gagnanate
    chaine = SYMBOLES[QUI_JOUE] * 3

    # Combinaisons gagnantes possibles
    #TODO: Completer les combinaisons gagnantes
    combinaisons = [[0,4,8], [6,7,8], [2,4,6],
                    [0,1,2,], [2,5,8], [0,3,6],
                    [3,4,5], [1,4,7]]
    # Boucle sur les combinaisons gagnantes
    for comb in combinaisons:
        # Vérifie si une combinaison est gagnante
        
        chaineVerif = grille[comb[0]] + grille[comb[1]] + grille[comb[2]]   
        
        #TODO: Bonne condition d'entrée pour le 'if'
        # 1. if chaine = chaineVerif
        if chaine == chaineVerif:
        # 3. if chaine > chaineVerif
        
          
            
            #TODO: Completer le statement
            return True
            # 2. return False
            
            pass  # Changer et suprimer le "pass"
            
    # Sinon, n'est pas encore gagnant
    return False

# Grille de jeu; initialement vide
grille = ["0", "1", "2", "3", "4", "5", "6", "7", "8"]

# Boucle de jeu
while True:
    # Affihce la grille de jeu
    affiche_grille(grille)
    # Obtient le choix du joueur
    indice = choix_joueur(grille)
    #TODO: Place le symbole du joueur à la position désirée
    grille[indice] = SYMBOLES[QUI_JOUE]
    # Vérifie si le joueur a gagné
    if gagnant(grille):
        #TODO: Message pour féliciter le gagnant
        # Indice :  On doit utiliser la fonction print afin que le message pour
        # félicité le gagnant change selon qui a gagné.
        print(JOUEURS[QUI_JOUE]," a gagné la partie")
        # ...
        break
    QUI_JOUE = not QUI_JOUE