#!/usr/bin/python # -*- coding: utf-8 -*- import time from tkinter import * import random import os from tkinter import messagebox if os.name != 'posix': txtHeight=16 else: txtHeight=21 def aide() : messagebox.showinfo(message="Lancement de la partie avec le bouton GO:\n\ - cliquez le plus rapidement sur les chiffres de 25 à 1\n\ - quand le choix est bon le chiffre devient gris clair\n\ - vous pouvez faire varier la couleur ou la hauteur des chiffres\n\ (bouttons Norm/Haut/Coul)\n\ - FIN pour sortir du programme") def souris(event): """ Gestion du click souris """ global ClickNb,nombres #print ("clicked at", event.x, event.y) posX=event.x posY=event.y CaseX=1+int(posX /canvas_espace) CaseY=1+int(posY/canvas_espace) #print("%i %i" %(CaseX,CaseY)) ValClick=nombres[(CaseY-1)*5+CaseX-1] # -1 car index liste début=0 chaine="text"+ str((CaseY-1)*5+CaseX) #print(chaine) if ValClick==ClickNb: w.itemconfigure(chaine,fill="gray") if ValClick==1: #test dernier numéro cliqué si oui stop chrono et souris w.unbind("") #fin de la partie au click sur 1 --> fin gestion souris stopper_chrono() ClickNb=ValClick-1 # pour la fois d'après -1 à la dernière valeur cliquée def lancer_chrono(): global depart,flag,nombres,jeux,ClickNb,txtHeight flag=1 ClickNb=25 #au départ click sur le 25 qui est une variable globale listeCoul=['red','blue','green','pink','yellow','gold','black','purple','brown','white'] w.bind("",souris) depart = time.time() nombres=[ x for x in range(1,26)] # création d'uneliste de chiffres (1 à 25) #print(nombres) random.shuffle(nombres) # je mélange la liste #print(nombres) for lign in range(1,6): for col in range(1,6): chaineA="text" + str((lign-1)*5 + col) if varChoix.get()=='Norm': w.itemconfigure(chaineA,text=str(nombres[(lign-1)*5 + col-1]),fill="black",font=('courier', txtHeight, 'bold')) elif varChoix.get()=='Haut': txtHt=txtHeight - 5*random.randint(0,1) w.itemconfigure(chaineA,text=str(nombres[(lign-1)*5 + col-1]),fill="black",font=('courier', txtHt, 'bold')) else: CoulTxt=listeCoul[random.randint(0,9)] w.itemconfigure(chaineA,text=str(nombres[(lign-1)*5 + col-1]),fill=CoulTxt,font=('courier', txtHeight, 'bold')) top_horloge() def stopper_chrono(): global flag flag=0 def Ctexte(): global txtHeight """ Création des chiffres 1 à 25 dans le canvas (5L*5C) Chaque chiffre à un tags ("text1" "text2" ...) Ce tags permettra de changer la valeur du texte (fonction lancer_chrono()) """ chaine="text" for lign in range(1,6): for col in range(1,6): chaine1=chaine+ str((lign-1)*5 + col) #print(chaine1) w.create_text((canvas_espace/2)+canvas_espace*(col-1), (canvas_espace/2)+canvas_espace*(lign-1), text=str((lign-1)*5 + col), tags=chaine1, font=('courier', txtHeight, 'bold')) def top_horloge(): global depart,flag y=time.time()-depart minutes = time.localtime(y)[4] secondes = time.localtime(y)[5] dix=int(10 * (y -int(y))) #print(dix) if flag : message['text']="%i min %i sec %i d" %(minutes,secondes,dix) #message.configure(text = "%i min %i sec %i dis" %(minutes,secondes,dis)) fenetre.after(100,top_horloge) def trace(canvas, line_distance): """ Tracé des 5 lignes et 5 colonnes """ # vertical lines at an interval of "line_distance" pixel for x in range(line_distance,canvas_width,line_distance): canvas.create_line(x, 0, x, canvas_height, fill="#476042") # horizontal lines at an interval of "line_distance" pixel for y in range(line_distance,canvas_height,line_distance): canvas.create_line(0, y, canvas_width, y, fill="#476042") if __name__=="__main__": flag=0 # gestion horloge #depart = 0 fenetre=Tk() fenetre.geometry("220x290") fenetre.resizable(False,False) canvas_width = 200 canvas_height = 200 canvas_espace=40 w = Canvas(fenetre, width=canvas_width, height=canvas_height, bd="1p", relief="raised") fenetre.title('NUMBERS') message = Label(fenetre,font=('sans', 12, 'bold'),text="Chrono prêt") message.grid(row=0,columnspan=3) w.grid(row=2,columnspan=3,padx=10,pady=5) Button(fenetre,text='GO !',command=lancer_chrono).grid(row=5,column =0,sticky=W,padx=8) Button(fenetre,text='AIDE',command=aide).grid(row=5,column =1,sticky=W,padx=8) Button(fenetre,text='FIN',command=fenetre.destroy).grid(row=5,column =2,sticky=W,padx=12) varChoix=StringVar() boutTxtNormal = Radiobutton(fenetre, text = "Norm", variable =varChoix, value = "Norm" ) boutTxtNormal.select() boutTxtHauteur = Radiobutton(fenetre, text = "Haut", variable =varChoix, value = "Haut" ) boutTxtCouleur = Radiobutton(fenetre, text = "Coul", variable =varChoix, value = "Coul" ) boutTxtNormal.grid(row=3,column =0,sticky=W) boutTxtHauteur.grid(row=3,column =1,sticky=W) boutTxtCouleur.grid(row=3,column =2,sticky=W) trace(w,canvas_espace) Ctexte() fenetre.mainloop()