#!/usr/bin/python # -*- coding: utf-8 -*from Tkinter import* import time #choix sequence def niveau_sequence(event): global n1,n,ofi,fichier n1=entre1.get() if int(n1)<=n: fichier="sequences"+str(n1) ofi=open(fichier,'r') entre_seq.configure(text="Sequence:%s"%(n1)) #identification entre="" n1=n="0" import pygame from pygame.locals import* #initialisation de pygame pygame.init() fen1=pygame.display.set_mode((128,128)) fond=pygame.image.load("hp.png").convert_alpha() fen1.blit(fond,(0,0)) pygame.display.flip() son=pygame.mixer.Sound("jinglesncf.wav") son1=pygame.mixer.Sound("sifflet.wav") #declaration des variables fichier="sequences"+str(n) heu=25 minu=60 a=1000 h=0;m=0;s=0;inter=0 swith=0 ofi=open(fichier,'r') #ouverture fichier cliche="acceuil.gif" #mise en marche du chrono def marche_chrono(): global inter,even,a a=1000 if inter==0: inter=1 chrono() #arret du chrono def stop_chrono(): global inter inter=0 #remise a zero def reset_chrono(): global h,m,s,ofi,swith h=m=s=0 temp.configure(text="%i : %i : %i "%(h,m,s)) ofi=open(fichier,'r') swith=0 #acceleration du chrono def acc(): global a if a>100: a=a/10 #fonction chronometre def chrono(): global h,m,s if inter: #variable marche/arret du chrono if s<=59: temp.configure(text="%i : %i : %i "%(h,m,s)) #base du decompte de secondes,avec affichage fenetre.after(a,chrono) #pause du programme en ms if heu==h and minu==m and s==0: son.play() if heu==h and minu==m and s==59: son1.play() evenement() s+=1 if s>59: #incrementation des minutes et raz des secondes s=0 m+=1 if m>59: #incrementation des heures et raz des minutes h+=1 m=0 chrono() #lecture sequenciel des evenements def sequences(): son.stop() global heu,minu,mess,seq,swith,photo seq=ofi.readline() if seq!="": heu=int(seq[:2]) minu=int(seq[3:5]) cliche=seq[6:14] photo=PhotoImage(file=cliche) #fenetre affichage image fenimage.create_image(320,240,image=photo) mess=seq[15:] even.configure(font=("sans",12),text="%s:%s-%s"%(seq[:2],seq[3:5],mess),fg='green') #prochain evenements marche_chrono() else: even.configure(text="FIN de sequence",fg="red") #arret quand le fichier sequence est fini photo=PhotoImage(file="acceuil.gif") fenimage.create_image(320,240,image=photo) fin_horloge() if swith==0: top_horloge() swith=1 #affiche evenements def evenement(): even.configure(font=("sans",15),text=mess,fg="red") stop_chrono() #affichage de l'heure debut def top_horloge(): global d d=time.time() #recuperation en seconde de l'heure systeme dh=time.localtime(d)[3] dm=time.localtime(d)[4] ds=time.localtime(d)[5] dhorloge.configure(text="debut: %i :%i :%i "%(dh,dm,ds))#affiche l'heure systeme au demarrage #fin de jeu def fin_horloge(): global rm,swith if swith==1: f=time.time() fh=time.localtime(f) [3] fm=time.localtime(f) [4] fs=time.localtime(f) [5] fhorloge.configure(text="Fin: %i :%i :%i "%(fh,fm,fs))#affiche l'heure de fin r=f-d rh=time.localtime(r)[3] rm=time.localtime(r)[4] rs=time.localtime(r)[5] rhorloge.configure(text="temps de jeu=%i :%i :%i "%(rh,rm,rs))#temps de jeu son.stop() stop_chrono() evalue() #evaluation en fin de sequence def evalue(): diff=rm-m if diff>=-1 and diff<=1: evaluer.configure(text="tres bien!passe a une autre sequence") niveau() elif diff>=-3 and diff<-1 or diff>1 and diff<=3: evaluer.configure(text="bien!essaye une autre sequence") niveau() elif diff>=-5 and diff<-3 or diff>3 and diff<=5: evaluer.configure(text="moyen!il faud faire mieux recommence") elif diff>=-10 and diff<-5 or diff>5 and diff<=10: evaluer.configure(text="mauvais! recommence") else: evaluer.configure(text="trop nul!") #incrementation niveau def niveau(): global n,ofi,fichier if int(n1)==n: n=n+1 niv.configure(text="choisit ta sequence max=%s"%(n)) fichier="sequences"+str(n) ofi=open(fichier,'r') entre_seq.configure(text="Sequence:%s"%(n)) #fermeture des fenetres def quitte(): pygame.quit() fenetre.destroy() #fenetre principale fenetre=Tk() fenetre.title("regulateur de trafic") fenetre.geometry("1024x768") entre_part=Label(fenetre,text="Maintenant %s essaye de faire mieux!!"%(entre)) entre_part.grid(row=1,column=0) #fenetre controle chrono fenbouton=Frame(fenetre,bd=2,relief=RIDGE) fenbouton.grid(row=2,column=0) Label(fenbouton,text="controle du chrono").grid() Button(fenbouton,text="ChronoX10",bg="light blue",command=acc).grid(row=1) Button(fenbouton,text="Reset",bg="light blue",command=reset_chrono).grid(row=1,column=1) Button(fenbouton,text="Marche",bg="orange",command=marche_chrono).grid(row=2,column=0) Button(fenbouton,text="Arret",bg="orange",command=stop_chrono).grid(row=2,column=1) #fentre affichage du chrono fentemp=Frame(fenetre,bd=2,relief=RIDGE) fentemp.grid(row=2,column=1) temp=Label(fentemp,font=('sans',30,'bold'),text="Chronometre",bg='white',fg="purple") temp.grid() dhorloge=Label(fentemp) dhorloge.grid(row=1,column=0) fhorloge=Label(fentemp) fhorloge.grid(row=2,column=0) rhorloge=Label(fentemp) rhorloge.grid(row=3,column=0) #fenetre affichage des sequences programme feneven=Frame(fenetre,bd=2,relief=RIDGE) feneven.grid(row=3,column=1) niv=Label(feneven,text="Choisit ta sequence max=%s!"%(n)) niv.grid() entre1=Entry(feneven) entre1.bind("<Return>",niveau_sequence) entre1.grid(row=1,column=0) entre_seq=Label(feneven,font=("sans",20,"bold"),text="Sequences:%s"%(n),fg="blue") entre_seq.grid(row=2) even=Label(feneven) even.grid(row=3,column=0) evaluer=Label(feneven) evaluer.grid(row=4,column=0) Button(feneven,text="Valider",bg="green",command=sequences).grid(row=5,column=0,sticky=W) #Button(feneven,text="Stop",bg="red",command=fin_horloge).grid(row=5,column=1) #fenetre affichage image fenimage=Canvas(fenetre,width=640,height=480,bd=2,relief=RIDGE) photo=PhotoImage(file=cliche) fenimage.create_image(320,240,image=photo) fenimage.grid(row=3,column=0) Button(fenetre,text="Quitter",command=quitte).grid(columnspan=2) fenetre.mainloop()