Un programme fonctionnel Python contient les blocs suivants dans l’ordre :
Remarques
Il est important de respecter l’indentation dans les boucles et dans la définition des fonctions locales.
Le nom des variables doit être explicite.
L’utilisateur doit être guidé de façon précise.

Programme fonctionnel
|
|
|
|
# 1101 programme fonctionnel.py
# ----------Importation des modules-----#
from tkinter import *
from math import *
import time
#--------Définition des fonctions----------#
def creer_fenetre(fenetre,taille,titre):
#construit la fenêtre
fenetre.geometry(taille)
fenetre.title(titre)
#fenetre.iconbitmap(icone)
return fenetre
def nettoie_canevas(donnees):
#nettoie le canevas
donnees[1].delete(ALL)
def dessine_canevas(donnees,a):
#dessine dans le canevas
nettoie_canevas(donnees)
ft="arial 40 bold"
f,c,l,h=donnees[0],donnees[1],donnees[2],donnees[3]
liste1=[15,15,30,50,l-50,h/2-80,l-10,20,35,h-30,35,h-50,l-70,h/2-30]
liste=[10,10,10,h/2,l-10,h-40,l-10,10,l-30,10,l-30,h-45,50,h/2,20,10]
if a==1:
c.create_rectangle(10,10,l-10,h-10,fill="khaki")
c.create_polygon(liste,fill="red",outline="gold",smooth=1)
t_menu=c.create_text(l/2,3*h/4,text="MENU",fill="red",tag="ZERO",font=ft)
c.tag_bind("ZERO", "<Button-1>",lambda utile:affiche_exemple(donnees))
if a==2:
c.create_rectangle(10,10,l-10,h-10,fill="pale green")
c.create_polygon(liste1,fill="blue",outline="gold",smooth=1)
t_menu=c.create_text(l/2,3*h/4,text="MENU",fill="red",tag="ZERO",font=ft)
c.tag_bind("ZERO", "<Button-1>",lambda inutile:affiche_exemple(donnees))
def quitter(donnees):
#fermeture de la fenêtre
donnees[0].destroy()
def affiche_exemple(donnes):
#Exemple de menu où il suffit de cliquer sur le texte
#donnees=[fenetre,can,largeur,hauteur]
f,c,l,h=donnees[0],donnees[1],donnees[2],donnees[3]
nettoie_canevas(donnees)
cl,ft,ta,tn="yellow","arial 40 bold","Affiche dessin 1!","Affiche dessin 2!"
me="MENU"
t_nettoie=c.create_text(l/2,2*h/4,text=tn,fill=cl,tag='DEUX' ,font=ft)
t_dessin=c.create_text(l/2,h/4,text=ta,fill="yellow",tag='UN' ,font=ft)
t_quitter=c.create_text(l/2,3*h/4,text="Quitter",fill="red",tag="TROIS",font=ft)
c.tag_bind("UN", "<Button-1>",lambda inutile:dessine_canevas(donnees,1))
c.tag_bind("DEUX", "<Button-1>",lambda inutile:dessine_canevas(donnees,2))
c.tag_bind("TROIS", "<Button-1>", lambda utile:quitter(donnees))
#----------Programme Principal-------------#
fenetre=Tk()
fenetre.title('Programme type')
largeur=int(fenetre.winfo_screenwidth()/4)
hauteur=int(fenetre.winfo_screenheight()/3)
taille=str(largeur)+"x"+str(hauteur)
creer_fenetre(fenetre,taille,"Programme fonctionnel")
can=Canvas(fenetre,width=largeur,height=hauteur,bg='light blue')
can.grid(row=0,column=0)
donnees=[fenetre,can,largeur,hauteur]
f,c,l,h=donnees[0],donnees[1],donnees[2],donnees[3]
ft="arial 40 bold"
t_menu=c.create_text(l/2,3*h/4,text="MENU",fill="red",tag="ZERO",font=ft)
c.tag_bind("ZERO", "<Button-1>",lambda utile :affiche_exemple(donnees))
fenetre.mainloop()
|
DEPLACEMENT BALLE :
Pour déplacer un objet dans un canevas, il faut tenir compte du repère dans lequel évolue l’objet.
1202 deplacement balle.py
Voici l’exemple d’une balle de diamètre 30 qui se déplace du point \(\mathbf{(0,300)}\) au point \(\mathbf{(1000,300)}\).
La balle se déplace horizontalement ou verticalement et change de direction à chaque point.
Premier point : (0 ; 300 ), abscisse = 0 , ordonnée = 300. Deuxième point : (270 ;300), abscisse = 270 , ordonnée = 300. Troisième point : (270 ;300), abscisse =270 , ordonnée = 300 Quatrième point : ((530 ;170), abscisse =530 , ordonnée = 170 Cinquième point : (530 ;300), abscisse = 530 , ordonnée = 300. Sixième point : (1000 ; 300), abscisse = 0 , ordonnée = 300. |
Le code :
Pour déplacer un objet dans un canevas, il faut tenir compte du repère dans lequel évolue l’objet.
1202 deplacement balle.py
Voici l’exemple d’une balle de diamètre 30 qui se déplace du point \(\mathbf{(0,300)}\) au point \(\mathbf{(1000,300)}\).
La balle se déplace horizontalement ou verticalement et change de direction à chaque point.
Premier point : (0 ; 300 ), abscisse = 0 , ordonnée = 300. Deuxième point : (270 ;300), abscisse = 270 , ordonnée = 300. Troisième point : (270 ;300), abscisse =270 , ordonnée = 300 Quatrième point : ((530 ;170), abscisse =530 , ordonnée = 170 Cinquième point : (530 ;300), abscisse = 530 , ordonnée = 300. Sixième point : (1000 ; 300), abscisse = 0 , ordonnée = 300. |
DEPLACEMENT BALLE ET PLATEAU:
video mp4 by EasyHtml5Video.com v3.9.1
Le code :
#1405 deplacement balle.py
from tkinter import *
from math import*
from fenetre import*
def avance(balle,x,y,parametres,dx,dy,largeur,hauteur):
""fait déplacer la balle horizontalement ou verticalement""
avancer=0
rayon=parametres[6]
x1,y1=parametres[0],parametres[1]
x2,y2=parametres[2],parametres[3]
x,y=x+dx,y+dy
if x+rayon+dx > largeur:
avancer=1# arret à la largeur
if x<x1 :
y= y
if x==x1:# deuxième point vertical haut
dx,dy=0,-5
if y==y1:dx,dy=5,0
if x>x1 and x<x2:y=y1# horizontal vers troisième point
if x==x2:# quatrième point point vertical bas
dx,dy=0,5
if y==y2:dx,dy=5,0# cinquième point
if x>x2:y=y2# horizontal
can.coords(balle,x-rayon,y-rayon,x+rayon,y+rayon)
if avancer ==0:
fenetre.after(20,lambda:avance(balle,x,y,parametres,dx,dy,largeur,hauteur))
def lancer_balle(x,y,parametres,dx,dy,largeur,hauteur,couleur):
""création de la balle et lancement ""
rayon=parametres[6]
if x<500:
balle=can.create_oval(x,y,x+rayon,y+rayon,fill=couleur)
avance(balle,x,y,parametres,dx,dy,largeur,hauteur)
def creer_fenetre(fenetre,taille,titre,couleur):
#construit la fenêtre
fenetre.geometry(taille)
fenetre.title(titre)
fenetre.configure(bg=couleur)
fenetre.resizable(height=False,width=False)
#fenetre.iconbitmap(icone)
return fenetre
# -------------programme principal --------------------------#
titre="Déplacement Balle"
largeur,hauteur=1000,500
taille=str(largeur)+'x'+str(hauteur+80)
couleur='light blue'
#------------------------------------------------------------#
fenetre = Tk()
fenetre=creer_fenetre(fenetre,taille,titre,couleur)
couleur='red'
x,y,x1,y1,x2,y2,dx,dy,rayon=0,300,270,170,530,300,5,0,30
parametres=[x1,y1,x2,y2,dx,dy,rayon]
can=Canvas(fenetre,width=largeur,height=hauteur,bg='ivory')
can.grid(row=0,column=0,columnspan=2)
mur=can.create_rectangle(300,200,500,330,width=5,fill='green',outline='black')
sol=can.create_rectangle(0,330,largeur,330,fill='green',width=5)
b=Button(fenetre,text='Balle rouge',font='verdana 12 bold',fg='red')
b.config(command=lambda:lancer_balle(x,y,parametres,dx,dy,largeur,hauteur,couleur) )
b.grid(row=1,column=0)
fenetre.mainloop()
|
Exemple de pacman
1404 animation pacman.py