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 155
| from tkinter import *
import tkinter as tk
from random import randint
import pygame
import time
from timeit import default_timer
# horloge
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 à déterminer ici
COUNT = 2
# module sonore faudra mettre en boucle...
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)
#en attente car impossible a activer.
# mise a zero du compteur et affichage.
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 référence:
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
#création d'une liste des images
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 collision():
if len(canvas.find_overlapping(x1,y1,x2,y2))>1:
print("COLLISION !")
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)
collision()
canvas.after(delay, nuages_move)
#creation de l'avion
aviongrand=PhotoImage(file='avion29.gif')
#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)
def bas(event):
if canvas.coords(cadreavion)[1]>=500:
canvas.move(cadreavion,0,0)
else:
canvas.move(cadreavion,0,15)
#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 via le tuple renvoyé
coordavion = canvas.bbox(cadreavion)
x1 = coordavion[0]
y1 = coordavion[1]
x2 = coordavion[2]
y2 = coordavion[3]
#les 4 coordonnées du rectangle au cas ou mais semble inutile ...
#a=(x1,y1)
#b=(x1+153,y1)
#c=(x2,y2)
#d=(x2-153,y2)
canvas.focus_set()
canvas.bind('<Up>',haut)
canvas.bind('<Down>',bas)
nuages_move()
updateTime()
canvas.mainloop() |
Partager