diff --git a/Jeux/Morpion/morpion_edba.py b/Jeux/Morpion/morpion_edba.py
new file mode 100644
index 0000000000000000000000000000000000000000..da914f5ebc70b3bfaaa2d14aaf611f937dc7186c
--- /dev/null
+++ b/Jeux/Morpion/morpion_edba.py
@@ -0,0 +1,146 @@
+''' Auteur(s)   : Enseignants informatique Collège Sismondi
+    Contact     : edu-basilicoe@eduge.ch
+    License     : "CC-BY-NC-SA"
+    Date        : 09 mars 2025
+    Version     : 1.0
+                  - Reste à tracer le trait de la victoire. 
+    Description : Dessine un morpion et gère les dessins X et O dans les bonnes cases.
+    
+          case_1|case_2|case_3
+          --------------------
+          case_4|case_5|case_6
+          --------------------        
+          case_7|case_8|case_9
+ 
+'''
+
+from tkinter import Tk, Canvas, Button, Label
+
+# Variables pour suivre l'état des cases
+case_1 = " "
+case_2 = " "
+case_3 = " "
+case_4 = " "
+case_5 = " "
+case_6 = " "
+case_7 = " "
+case_8 = " "
+case_9 = " "
+
+joueur_actuel = "X"
+nb_coup_joue = 0
+jeu_termine = False
+
+# Création de la fenêtre et du canevas
+fenetre = Tk()
+fenetre.title("Morpion")
+canvas = Canvas(fenetre, width=300, height=300)
+canvas.pack()
+
+label_info = Label(fenetre, text="Joueur-se X, à toi de jouer !", font=("Arial", 14))
+label_info.pack()
+
+
+# Dessiner la grille
+canvas.create_line(100, 0, 100, 300, width=5)
+canvas.create_line(200, 0, 200, 300, width=5)
+canvas.create_line(0, 100, 300, 100, width=5)
+canvas.create_line(0, 200, 300, 200, width=5)
+
+def dessine(joueur, x, y):
+    global nb_coup_joue
+    
+    padding = 30
+    nb_coup_joue = nb_coup_joue + 1
+    if joueur == "X":
+        canvas.create_line(x+padding, y+padding, x+100-padding, y+100-padding, width=5, fill="blue")
+        canvas.create_line(x+100-padding, y+padding, x+padding, y+100-padding, width=5, fill="blue")
+    else:
+        canvas.create_oval(x+padding, y+padding, x+100-padding, y+100-padding, width=5, outline="red")
+
+def verifier_victoire(joueur):
+    #global case_1, case_2, case_3, case_4, case_5, case_6, case_7, case_8, case_9
+    combinaison = joueur + joueur + joueur
+    if case_1 + case_2 + case_3 == combinaison or \
+       case_4 + case_5 + case_6 == combinaison or \
+       case_7 + case_8 + case_9 == combinaison or \
+       case_1 + case_4 + case_7 == combinaison or \
+       case_2 + case_5 + case_8 == combinaison or \
+       case_3 + case_6 + case_9 == combinaison or \
+       case_1 + case_5 + case_9 == combinaison or \
+       case_3 + case_5 + case_7 == combinaison :
+        return True
+    else:
+        return False
+
+
+# Fonction pour détecter la case cliquée et jouer
+def clic(event):
+    global nb_coup_joue, joueur_actuel, jeu_termine, case_1, case_2, case_3, case_4, case_5, case_6, case_7, case_8, case_9
+
+    if jeu_termine:
+        return  # Arrêter si le jeu est terminé
+    
+    x = event.x
+    y = event.y
+    colonne = x // 100
+    ligne = y // 100
+    case_numero = ligne * 3 + colonne + 1
+
+    if case_numero == 1 and case_1 == " ":
+        case_1 = joueur_actuel
+        dessine(joueur_actuel, 0, 0)
+    elif case_numero == 2 and case_2 == " ":
+        case_2 = joueur_actuel
+        dessine(joueur_actuel, 100, 0)
+    elif case_numero == 3 and case_3 == " ":
+        case_3 = joueur_actuel
+        dessine(joueur_actuel, 200, 0)
+    elif case_numero == 4 and case_4 == " ":
+        case_4 = joueur_actuel
+        dessine(joueur_actuel, 0, 100)
+    elif case_numero == 5 and case_5 == " ":
+        case_5 = joueur_actuel
+        dessine(joueur_actuel, 100, 100)
+    elif case_numero == 6 and case_6 == " ":
+        case_6 = joueur_actuel
+        dessine(joueur_actuel, 200, 100)
+    elif case_numero == 7 and case_7 == " ":
+        case_7 = joueur_actuel
+        dessine(joueur_actuel, 0, 200)
+    elif case_numero == 8 and case_8 == " ":
+        case_8 = joueur_actuel
+        dessine(joueur_actuel, 100, 200)
+    elif case_numero == 9 and case_9 == " ":
+        case_9 = joueur_actuel
+        dessine(joueur_actuel, 200, 200)
+    else:
+        return  # La case est déjà occupée
+
+
+    jeu_termine = verifier_victoire(joueur_actuel)
+    
+    if jeu_termine:
+        label_info.config(text=f"🎉 {joueur_actuel} a gagné ! 🎉")
+        
+        return # Arrêter si le jeu est terminé
+    else:
+        if nb_coup_joue == 9:
+            label_info.config(text=f"Match nul !")
+            jeu_termine = True
+            return
+
+        # Changer de joueur
+        if joueur_actuel == "X":
+            joueur_actuel = "O"
+        else:
+            joueur_actuel = "X"
+        label_info.config(text=f"Joueur-se {joueur_actuel}, à toi de jouer !")
+
+# Lier le clic à la fonction
+# On lie l'évenement clic gauche (Button-1) à l'appel de la fonction clic
+canvas.bind("<Button-1>", clic)
+
+# Lancer la boucle de la fenêtre
+fenetre.mainloop()
+