1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
| from tkinter import *
import tkinter as tk
from random import randint
import pygame
import time
from timeit import default_timer
def updateTime():
now = default_timer() - start
minutes, seconds = divmod(now, 60)
hours, minutes = divmod(minutes, 60)
str_time = "%d:%02d:%02d" % (hours, minutes, seconds)
canvas.itemconfigure(text_clock, text=str_time)
canvas.after(1000, updateTime)
# nombre de nuages
COUNT = 5
pygame.mixer.init()
mon_audio=pygame.mixer.Sound("son3.wav")
mon_audio.set_volume(1)
mon_audio.play()
canvas = tk.Canvas(width=1000, height=600, bd=0, bg='skyblue')
canvas.pack()
#canvas.resisable(width=False,height=False)
start = default_timer()
text_clock = canvas.create_text(930, 20,font="Arial 30 italic", fill="red",)
# création de listes
nuages = []
nuages_differe = []
# création des images
imgfile1 = 'nuage1.gif'
imgfile2 = 'nuage2.gif'
imgfile3 = 'nuage3.gif'
imgfile4 = 'nuage4.gif'
imgfile5 = 'nuage5.gif'
# Utilisation d'un dictionnaire pour conserver une reference:
gifsdict={}
#Creation des images:
img1 = PhotoImage(file = imgfile1)
gifsdict[imgfile1] = img1
img2 = PhotoImage(file = imgfile2)
gifsdict[imgfile2] = img2
img3 = PhotoImage(file = imgfile3)
gifsdict[imgfile3] = img3
img4 = PhotoImage(file = imgfile4)
gifsdict[imgfile4] = img4
img5 = PhotoImage(file = imgfile5)
gifsdict[imgfile5] = img5
liste =[img1,img2,img3,img4,img5]
# Boucle création nuages
for i in range(COUNT):
index = randint(0,4)
g = liste[index]
y = randint(0,600)
nuage = canvas.create_image(1200,y,anchor=NE,image=g)
nuages.append(nuage)
def positionavion():
canvas.bbox(cadreavion)
return cadreavion
def collision():
global x1,y1,x2,y2
if len(canvas.find_overlapping(x1,y1,x2,y2))>1:
print("coordonnées collision:",x1,y1,x2,y2)
def cancel_delayed(nuage):
nuages_differe.remove(nuage)
nuages.append(nuage)
def nuages_move(delay=50):
for nuage in nuages[:]:
if canvas.coords(nuage)[0]<=0:
nuages.remove(nuage)
nuages_differe.append(nuage)
y = randint(0,600)
canvas.coords(nuage,randint(1550,2300),y)
canvas.after(500, lambda nuage=nuage: cancel_delayed(nuage))
else:
canvas.move(nuage, -20, 0)
canvas.coords(cadreavion)
collision()
canvas.after(delay, nuages_move)
#creation de l'avion
aviongrand=PhotoImage(file='avion29.gif')
#reduction de l'image initiale par 2:
avion = aviongrand.subsample(2, 2)
cadreavion = canvas.create_image(20,20,anchor=NW,image=avion)
#détermination des coordonnées de l'avion
coordavion = canvas.bbox(cadreavion)
x1 = coordavion[0]
y1 = coordavion[1]
x2 = coordavion[2]
y2 = coordavion[3]
#fonctions de déplacement de l'avion
def haut(event):
if canvas.coords(cadreavion)[1]<=0:
canvas.move(cadreavion,0,0)
else:
canvas.move(cadreavion,0,-15)
print(canvas.coords(cadreavion))
def bas(event):
if canvas.coords(cadreavion)[1]>=500:
canvas.move(cadreavion,0,0)
else:
canvas.move(cadreavion,0,15)
print(canvas.coords(cadreavion))
canvas.focus_set()
canvas.bind('<Up>',haut)
canvas.bind('<Down>',bas)
nuages_move()
updateTime()
canvas.mainloop() |
Partager