Bonjour,
En codant en python pour faire un morpion à l'aide de la console.
J'ai dû programmer une fonction qui doit savoir si trois éléments (ronds ou croix) sont alignés, j'ai donc coder 8 "if" différents.
Les croix et ronds sont associés à une coordonné dans un dictionnaire (clé = coordonné, valeur="X" ou "O")
Voici ma fonction :
def test_winner():
global flag
if dico["A1"] == dico["B1"] == dico["C1"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["A2"] == dico["B2"] == dico["C2"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["A3"] == dico["B3"] == dico["C3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["A1"] == dico["A2"] == dico["A3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["B1"] == dico["B2"] == dico["B3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["C1"] == dico["C2"] == dico["C3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["A1"] == dico["B2"] == dico["C3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
if dico["C1"] == dico["B2"] == dico["A3"] == flag:
win()
print("Joueur ",flag, "a gagné ;) ")
flag = "fin"
"""
Je trouve que mon code se répète beaucoup et en informatique tout code qui se répète devrait pouvoir être factorisé...
J'ai remarqué que si les cases s'alignent , c'est soit A_,A_,A_ ou _1, _1, _1 ou encore _1,_2_3 ou A_,B_,C_ (pour les diagonales).
Je me demande donc si vous verriez d'autres moyens de l'écrire à l'aide de cette information ?
Merci pour votre aide.