from tkinter import * from math import * from tkinter import ttk def pointsuivant_sansbarriere(*args):#v0 vitesse initiale, x0 et y0 positions initiales, alpha angle initial de lancer if y0>1.05 or y0<0: print("Le paramètre doit être compris entre 0 et 1,05") return([]) x1=x0+v0*sin(alpha)*0.1 #0,1 est l'intervalle de temps entre chaque point y1=y0+v0*cos(alpha)*0.1 x=x1 y=y1 X=[] Y=[] while x<18.29: #18,29m est la longueur de la piste x=N((x+v0*sin(alpha)*0.1),digits=4) y=N((y+v0*cos(alpha)*0.1),digits=4) X.append(x) Y.append(y) return((X,Y)) def sansbarriere(*args): x=x0 y=y0 pos=pointsuivant_sansbarriere(*args) X=pos[0] Y=pos[1] Lx=[] Ly=[] n=len(X) for i in range(n): if 0<=X[i]<=18.29 and 01.05: return((Lx,Ly)) elif X[i]>18.29 or X[i]<0: return((Lx,Ly)) def trajectoire_sansbarriere(*args): sb=sansbarriere(*args) X=sb[0] Y=sb[1] n=len(Y) L=[] for i in range (n): L.append((X[i],Y[i])) return(L) def calcul_pointsuivant(*args):#v0 vitesse initiale, x0 et y0 positions initiales, alpha angle initial de lancer x1=x0+v0*sin(alpha)*0.1 #0,1 est l'intervalle de temps entre chaque point y1=y0+v0*cos(alpha)*0.1 return([v0,x1,y1,alpha]) def calcul_pointsuivant_barriere(*args):#ça ne marche pas avec le randint if x>=18.29 : return([v0,x,y,alpha]) elif (y >= 1.05) : alpha=alpha-pi/2#+randint(0,pi/18) return(calcul_pointsuivant(*args)) elif (y <= 0) : alpha=alpha+pi/2#+randint(0,pi/18) return(calcul_pointsuivant(*args)) return(calcul_pointsuivant(*args)) def trajectoire_barriere(*args) : LX=[] LY=[] v,x,y,alpha=v0,x0,y0,alpha for i in range(0,N) : LX.append(calcul_pointsuivant_barriere(v,x,y,alpha)[1]) LY.append(calcul_pointsuivant_barriere(v,x,y,alpha)[2]) alpha=calcul_pointsuivant_barriere(v,x,y,alpha)[3] x,y=LX[i],LY[i] return(LX,LY) def coordonnees_barriere(*args):#il faudrait trouver un moyen pour qu'on n'ai pas à définir le N sb=trajectoire_barriere(*args) X=sb[0] Y=sb[1] n=len(Y) L=[] for i in range (n): L.append((X[i],Y[i])) return(L) #création de la fenêtre principale fenetre = Tk() fenetre.title('Bowling') #initialisation des variables v0= StringVar() x0= StringVar() y0= StringVar() alpha= StringVar() N= StringVar() #définition de la zone d'entrée v0_entree = ttk.Entry(fenetre, width=7, textvariable = v0) x0_entree = ttk.Entry(fenetre, width=7, textvariable = x0) y0_entree = ttk.Entry(fenetre, width=7, textvariable = y0) alpha_entree = ttk.Entry(fenetre, width=7, textvariable = alpha) N_entree = ttk.Entry(fenetre, width=7, textvariable = N) #Définition des widgets bouton2 = Button(fenetre, text = "Quitter", command = fenetre.destroy) bouton = ttk.Button ( fenetre, text = "Avec barrières", command = coordonnees_barriere) bouton3 = ttk.Button ( fenetre, text = "Sans barrière", command = trajectoire_sansbarriere) message = Label(fenetre, text= "Choisir une option") #Placement des widgets dans le fenêtre principale message.grid() bouton.grid() bouton2.grid() bouton3.grid() N_entree.grid() alpha_entree.grid() x0_entree.grid() y0_entree.grid() v0_entree.grid() #Boucle sur les évènements liés à la fenêtre principale fenetre.mainloop() fenetre.configure(bg = 'yellow') fenetre.geometry("700*700")