Bonjour j'ai un problème avec mon jeu, il ne fonctionne pas correctement. Pourriez vous m'aider ?

voici le code :

############################################################################
# DM Jeu de mémoire #
############################################################################

from tkinter import *
import random
from tkinter import messagebox

fen=Tk()
fen.title("jeu de mémoire")
fen.geometry("800x800")
ecriture=("comic",12,"bold")

cadre=Frame (fen)
cadre.pack()

cadre2=Frame (fen)
cadre2.pack()

#variables gobales
nb= 8 # nombre de cases par ligne (grille carree)
c= 50 # dimension d'une case supposée carrée
x0,y0=20,20 #coordonnées du point en haut à gauche
current_color = 0 # index du tuple actuel
varChoix=StringVar()
colors = [("lavender blush", "lavender")]
### DEFINITION DES FONCTIONS ###

def quitter():
fen.quit()
fen.destroy()

def NewPart():
global current_color
np.config(state=DISABLED) # désactiver le bouton "Nouvelle partie"
for i in range(nb):
for j in range(nb):
can.create_rectangle(x0+c*j,y0+c*i,x0+c*(j+1),y0+c*(i+1),fill="lavender blush",width=4,outline="lavender")
fen.after(1000, computer_play) # appel de la fonction computer_play() après 1 seconde

def RDJ():
# Création de la fenêtre pop-up
popup = Toplevel()
popup.title("Règles du jeu")
popup.geometry("800x200")
# Création de l'étiquette avec le texte à afficher
label = Label(popup, text="\n\n Mémorisez les cases noires aparraisant sur la grille. Retrouvez les toutes sans vous tromper en cliquant dessus.\n Si vous retrouver toutes les cases, alors votre score augmentera de 1.\n Continuez à jouer jusqu'à ce que vous commettiez une erreur.\n Si vous faites une erreur, le jeu sera terminé.\n Pour jouer à nouveau, appuyez sur le bouton 'Nouvelle partie''.", justify="left")
label.pack(pady=10)
# Bouton pour fermer la fenêtre pop-up
close_button = Button(popup, text="Retour", command=popup.destroy)
close_button.pack(pady=10)

def computer_play():
global current_color
fill_color, outline_color = colors[current_color]
current_color = (current_color + 1) % len(colors)
message['text']=" Le PC joue..."
positions = random.sample(range(nb*nb), nb) # choix aléatoire de nb positions dans la grille
for p in positions:
i = p // nb
j = p % nb
can.create_rectangle(x0+c*j, y0+c*i, x0+c*(j+1), y0+c*(i+1), fill="black", width=4, outline="white")
if varChoix.get()=="Norm":
fen.after(5000, clear_board)
elif varChoix.get()=="Rap":
fen.after(3000, clear_board)
else :
fen.after(7000, clear_board)

def clear_board():
global current_color
message['text']=""
items = can.find_all() # récupérer tous les éléments de la grille
for item in items:
fill_color, outline_color = colors[current_color-1]
if can.itemcget(item, "fill") == "black":
can.itemconfigure(item, fill=fill_color, outline=outline_color, state='hidden')
else:
can.itemconfigure(item, fill="lavender blush", outline="lavender", state='normal')
current_color = (current_color + 1) % len(colors)

def click_handler(event):
global current_color
message['text']="A votre tour..."
fill_color, outline_color = colors[current_color]
item = can.find_closest(event.x, event.y)[0]
if "revealed" not in can.gettags(item):
can.itemconfigure(item, fill=fill_color, outline=outline_color)
can.addtag_withtag("revealed", item)
black_items = can.find_withtag("black")
if len(black_items) == 0 and len(can.find_withtag("black")) == len(black_items):
messagebox.showinfo("Gagné", "Bravo, vous avez gagné !")
else:
# Création de la fenêtre pop-up2
popup2 = Toplevel()
popup2.title("Perdu !")
popup2.geometry("400x100")
# Création de l'étiquette avec le texte à afficher
label = Label(popup2, text=f"Dommage, c'est perdu !", justify="left")
label.pack(pady=10)


### FIN DEFINITION DES FONCTIONS ###








### DEFINITION DES WIDGETS ET AFFICHAGE ###






## Création de la 2eme frame ##



# Création du canvas
can = Canvas(fen, width=600, height=600)
can.bind("<Button-1>", click_handler)
can.pack(side=RIGHT)

# Quitter
q=Button(cadre2,text="Quitter",command=quitter,font=ecriture)
q.pack(side=BOTTOM)

# Règles du jeu
rdj=Button(cadre2,text="Règles",command=RDJ,font=ecriture)
rdj.pack(side=BOTTOM)

# Nouvelle partie
np=Button(cadre2,text="Nouvelle partie",command=NewPart,font=ecriture)
np.pack(side=BOTTOM)

# Boutons de difficulté
boutFacile = Radiobutton(cadre,text = "Facile",variable =varChoix,value = "fac")
boutFacile.pack(side=LEFT)
boutFacile.select() # Bouton choisi par défault
boutNormal = Radiobutton(cadre,text = "Normal",variable =varChoix,value = "Norm")
boutNormal.pack(side=LEFT)
boutDiff = Radiobutton(cadre,text = "Difficile",variable =varChoix,value = "Rap")
boutDiff.pack(side=LEFT)

# Message jeu
message = Label(fen,text="Veuillez choisir un niveau.")
message.pack(side = TOP)

### FIN DEFINITION DES WIDGETS ET AFFICHAGE ###

fen.mainloop()