Evitement
Vidéo
Nuages
html5 video player by EasyHtml5Video.com v3.9.1
smart
html5 video player by EasyHtml5Video.com v3.9.1

Objectif du tutoriel :
OBJECTIF

Construire

  • Afficher une fenêtre, avec un titre .
  • Inclure dans la fenêtre un canevas (Canvas) pour afficher des images qui peuvent se déplacer .
  • Utiliser les listes pour stocker des données.
_images/smartphone.PNG

Télécharger les images téléchager images EVITER .

.

Le code du programme:

Affichage du code du module image:

Le code du programme:

Affichage du code du module image:

#image.py
#module pour les images
#Fabrique une liste d'images
from tkinter import*
def creer_item(tim):
	"creation d'un item "
	#tim+'.png' ="inombre.png" (nombre =1;2; 
	#ou 9 ou 10 ...
	p1=PhotoImage(file=tim+'.png')
	return p1

def liste_image(nombre,dossier):
	# Fonction qui permet de creer un liste qui
	# comporte un nombre de photos
	items=nombre*['']
	for i in range(nombre):
	# le symbole / permet d'aller 
	#chercher les images 
	# dans le dossier images/
	tim=dossier+'/'+str(i+1)
	items[i]=creer_item(tim)
	return items 
 
def taille_photo(photo):
	#Détermine la taille de la photo
	largeur=photo.width()
	hauteur=photo.height()
	return largeur,hauteur 
	 

Affichage du code nuage :

#2018ISN animation.py
from tkinter import *
from image import*
import time, threading
from math import * 
def avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,bouge):
 
	liste_nombre=[2,3,2,4]
	tourne=[12,19,18,17,16,15,14,13,12]
	liste_bouge=[8,9,10,11]
	b=k//200
	a=b%len(liste_bouge)
	nombre=a+1
	st=(k//20)%3-6
	if k%200==0:
	liste_bouge=[8,9,10,11]
	for i in range(nombre):can.itemconfigure(bouge[i],image=images[liste_bouge[a]])
	fin=390+(nombre+1)*102

	if ka>1050:ka=00
	if kb>1000:kb=0
	if kc>1000:kc=0 
	if kd>1000:kd=0
	if ke>1000:ke=0
	if kf>1000:kf=0
	if kg<0:kg=1000
	if m%1000==0:m=1000
	haut=500
	if m<fin and m>400:
	distance=abs(fin-400)
	tours=int((a+1)*distance/(len(tourne)))
	haut=440
	tourne=[12,13,14,15,16,17,18,19,12]
	t=(k)%(len(tourne))
	can.itemconfigure(item3,image=images[tourne[t]])
	if m<400:can.itemconfigure(item3,image=images[12]) 
	if m>fin-1 :can.itemconfigure(item3,image=images[12])
	saut=m

	if n%1000==0:n=0
	can.coords(nuage1,1000-(ka),100)
	can.coords(nuage2,1000-(kb),150)
	can.coords(nuage3,1000-(kc),130)
	can.coords(nuage4,1000-(kd),230)
	can.coords(poisson5,(kf),570+st)
	can.coords(poisson6,(kf+500)%1000,580-2*st)
	can.coords(poisson7,(kf+300)%1000,570+st)
	can.coords(poisson8,(kg+800)%1000,580-3*st)
	can.coords(fond,(500-k%1000),320)
	can.coords(fonda,(1500-k%1000),320)
	v,p,p2,p3,p4=5,-4,-6,-5,-8
	for i in range(nombre): can.coords(bouge[i],m-i*50,500)
	can.coords(item3,500,haut)
fenetre.after(10,lambda:avancer(k+1,m-v,n+v,ka+v,kb+v,kc+v,kd+v,ke+v,kf+p,kg+p2,kh+p3,kj+p4,bouge))         
#------ Programme principal -------
fenetre=Tk()
images=liste_image(21,smart)
bouge=[]
fenetre.geometry("1000x640")
fenetre.title('EVITEMENT')
can = Canvas(fenetre,height=640,width=1000,bg="steel blue")
m,n,k,ka,kb,kc,kd,ke,kf,kg,kh,kj=1000,0,0,0,250,600,500,100,790,850,200,450# coordonnées initiales
can.grid(row =0, column =0, rowspan =3, padx =0, pady =0)
fond=can.create_image(500,320,image=images[0])
fonda=can.create_image(1500,320,image=images[0])
nuage1=can.create_image(1000,100,image=images[4])
nuage2=can.create_image(1200,150,image=images[5])
nuage3=can.create_image(500,130,image=images[6])
nuage4=can.create_image(400,230,image=images[7])
poisson5=can.create_image(100,570,image=images[3])
poisson6=can.create_image(500,580,image=images[3])
poisson7=can.create_image(300,570,image=images[3])
poisson8=can.create_image(800,580,image=images[3])
item3=can.create_image(0,500,image=images[12])
item4=can.create_image(1000,500,image=images[8])
bouge.append(item4)
item5=can.create_image(1050,500,image=images[9])
bouge.append(item5)
item6=can.create_image(1100,500,image=images[10])
bouge.append(item6)
item7=can.create_image(1150,500,image=images[11])
bouge.append(item7)
avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,bouge)
fenetre.mainloop()  

Affichage du code smart :

#2018ISN smart.py
from tkinter import *
from image import*
import time, threading
from math import * 
def avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,bouge):
 
	liste_nombre=[2,3,2,4]
	tourne=[12,19,18,17,16,15,14,13,12]
	liste_bouge=[8,9,10,11]
	b=k//200
	a=b%len(liste_bouge)
	nombre=a+1
	st=(k//20)%3-6
	if k%200==0:
	liste_bouge=[8,9,10,11]
	for i in range(nombre):can.itemconfigure(bouge[i],image=images[liste_bouge[a]])
	fin=390+(nombre+1)*102

	if ka>1000:ka=00
	if kb>1000:kb=0
	if kc>1000:kc=0 
	if kd>1000:kd=0
	if ke>1000:ke=0
	if kf>1000:kf=0
	if kg<0:kg=1000
	if m%1000==0:m=1000
	haut=500
	if m<fin and m>400:
	distance=abs(fin-400)
	tours=int((a+1)*distance/(len(tourne)))
	haut=440
	tourne=[12,13,14,15,16,17,18,19,12]
	t=(k)%(len(tourne))
	can.itemconfigure(item3,image=images[tourne[t]])
	if m<400:can.itemconfigure(item3,image=images[12]) 
	if m>fin-1 :can.itemconfigure(item3,image=images[12])
	saut=m

	if n%1000==0:n=0
	can.coords(poisson5,500-ka,580)
	can.coords(poisson6,1500-ka,580)
	can.coords(fond,(500-k%1000),320)
	can.coords(fonda,(1500-k%1000),320)
	v,p,p2,p3,p4=5,-4,-6,-5,-8
	for i in range(nombre): can.coords(bouge[i],m-i*50,500)
	can.coords(item3,500,haut)
fenetre.after(10,lambda:avancer(k+1,m-v,n+v,ka+v,kb+v,kc+v,kd+v,ke+v,kf+p,kg+p2,kh+p3,kj+p4,bouge))         
#------ Programme principal -------
fenetre=Tk()
images=liste_image(25,smart)
bouge=[]
fenetre.geometry("1000x640")
fenetre.title('EVITEMENT')
can = Canvas(fenetre,height=640,width=1000,bg="steel blue")
m,n,k,ka,kb,kc,kd,ke,kf,kg,kh,kj=1000,0,0,0,250,600,500,100,790,850,200,450# coordonnées initiales
can.grid(row =0, column =0, rowspan =3, padx =0, pady =0)
stable=can.create_image(500,320,image=images[21])
fond=can.create_image(500,250,image=images[23])
fonda=can.create_image(1500,250,image=images[23])
poisson5=can.create_image(500,580,image=images[24])
poisson6=can.create_image(1500,580,image=images[24])

item3=can.create_image(0,500,image=images[12])
item4=can.create_image(1000,500,image=images[8])
bouge.append(item4)
item5=can.create_image(1050,500,image=images[9])
bouge.append(item5)
item6=can.create_image(1100,500,image=images[10])
bouge.append(item6)
item7=can.create_image(1150,500,image=images[11])
bouge.append(item7)
avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,bouge)
fenetre.mainloop()  

Affichage du code smartphone :

#2018ISN smartphone.py
from tkinter import *
from image import*
import time, threading
from random import randrange
from math import *
def eleve():
        global haut,bleu,vert
        haut=haut-20
        bleu=True
        vert=False
        return haut  
def stabler():
	global haut,bleu,vert
	bleu=False
	vert=False 
def baisse():
	global haut,vert,bleu
	haut=haut+20
	vert=True
	bleu=False
	return haut        
def avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,surprise,elever,baisser,stabilise,bouge):
	global haut
	liste_nombre=[2,3,2,4]
	tourne=[12,19,18,17,16,15,14,13,12]
	liste_bouge=[8,9,10,11]
	b=k//200
	a=b%len(liste_bouge)
	nombre=a+1
	st=(k//20)%3-6
	if k%200==0:
		liste_bouge=[8,9,10,11]
		for i in range(nombre):can.itemconfigure(bouge[i],image=images[liste_bouge[a]])
	fin=390+(nombre+1)*102 
	if ka>1000:ka=00
	if kb>1000:kb=0
	if kc>1000:kc=0 
	if kd>1000:kd=0
	if ke>1000:ke=0
	if kf>1000:kf=0
	if kg<0:kg=1000
	if m%1000==0:
		surprise=randrange(100,420)
		m=1000
	if n%1000==0:n=0
	can.coords(poisson5,500-ka,580)
	can.coords(poisson6,1500-ka,580)
	can.coords(fond,(500-k%1000),320)
	can.coords(fonda,(1500-k%1000),320)
	v,p,p2,p3,p4=5,-4,-6,-5,-8
	for i in range(nombre): can.coords(bouge[i],m-i*50,surprise)
	can.tag_bind("TROIS","<Button-1>",lambda utile:stabler())
	can.tag_bind("UN","<Button-1>",lambda utile:eleve())
	if bleu==True: haut=haut-2 
	can.tag_bind("DEUX","<Button-1>",lambda utile:baisse())
	if vert==True:haut=haut+2 
	can.coords(evite[0],500,haut)
	if m<fin and m>400:
	distance=abs(fin-400)
	tours=int((a+1)*distance/(len(tourne)))  
	tourne=[12,13,14,15,16,17,18,19,12]
	t=(k)%(len(tourne))
	can.itemconfigure(item3,image=images[tourne[t]])
	if m<400:can.itemconfigure(item3,image=images[12]) 
	fenetre.after(10,lambda:avancer(k+1,m-v,n+v,ka+v,kb+v,kc+v,kd+v,ke+v,kf+p,kg+p2,kh+p3,kj+p4,surprise,elever,baisser,stabilise,bouge))         
#------ Programme principal -------
fenetre=Tk()
plus,haut,vert,bleu=0,500,False,False
images=liste_image(28,"smart")
bouge,evite=[],[]
fenetre.geometry("1000x640")
fenetre.title('EVITEMENT')
can = Canvas(fenetre,height=640,width=1000,bg="steel blue")
m,n,k,ka,kb,kc,kd,ke,kf,kg,kh,kj=1000,0,0,0,250,600,500,100,790,850,200,450# coordonnées initiales
can.grid(row =0, column =0, rowspan =6, columnspan=15,padx =0, pady =0)
stable=can.create_image(500,320,image=images[21])
fond=can.create_image(500,250,image=images[23])
fonda=can.create_image(1500,250,image=images[23])
poisson5=can.create_image(500,580,image=images[24])
poisson6=can.create_image(1500,580,image=images[24])
item3=can.create_image(0,500,image=images[12])
evite.append(item3)
item4=can.create_image(1000,500,image=images[8])
bouge.append(item4)
item5=can.create_image(1050,500,image=images[9])
bouge.append(item5)
item6=can.create_image(1100,500,image=images[10])
bouge.append(item6)
item7=can.create_image(1150,500,image=images[11])
elever=can.create_image(50,100,image=images[25],tag="UN")
stabilise=elever=can.create_image(50,250,image=images[27],tag="TROIS")
baisser=can.create_image(50,400,image=images[26],tag="DEUX")
bouge.append(item7)
avancer(k,m,n,ka,kb,kc,kd,ke,kf,kg,kh,kj,500,elever,baisser,stabilise,bouge)
fenetre.mainloop()