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
| from tkinter import *
from random import randrange
SIDE = 600
niv = 0
dx = 4
dy = 5
dx2 = 5
dy2 = 0
root = Tk()
cnv = Canvas(root, width=SIDE, height=SIDE)
cnv.pack()
def deplacement():
global dx, dy, dx2, dy2, SIDE, plafond, niv
# changement de direction eau bord du canvas
if cnv.coords(balle)[3] > SIDE:
dy = -dy
elif cnv.coords(balle)[1] < 10:
dy = abs(dy)
if cnv.coords(balle)[0] > SIDE-20:
dx = -dx
elif cnv.coords(balle)[2] < 30:
dx = abs(dx)
# détection de la raquette
if len(cnv.find_overlapping(cnv.coords(raquette)[0], cnv.coords(raquette)[1], cnv.coords(raquette)[2], cnv.coords(raquette)[3])) > 1:
dy = -dy
# Arret du script en fonction de la hauteur du plafond
if niv >= 500:
cnv.move(balle, 0, 0)
else:
cnv.move(balle, dx, dy)
# gestion de la vitesse de déplacement
cnv.after(5, deplacement)
# descente du plafond si on loupe la balle
if cnv.coords(balle)[3] == SIDE+5:
# print(cnv.coords(balle)[3])
niv += 100
cnv.delete(plafond)
plafond = cnv.create_rectangle(
0, niv-5, SIDE, niv, outline="black", fill="red")
# detection colision plafond
if len(cnv.find_overlapping(cnv.coords(plafond)[0], cnv.coords(plafond)[1], cnv.coords(plafond)[2], cnv.coords(plafond)[3])) > 1:
dy = abs(dy)
# mouvement raquette en fonction de souris
def survol(event):
global X, dy2, raquette
X = event.x
Y = event.y
if X < 25:
X = 25
elif X > SIDE-25:
X = SIDE-25
# on dessine la raquette avec un deplacement gauche droite uniquement
cnv.move(raquette, X, dy2)
cnv.delete(raquette)
raquette = cnv.create_rectangle(
X-25, SIDE-25, X+25, SIDE-30, outline="black", fill="green")
cnv.after(20, survol)
# On dessine le plafond
plafond = cnv.create_rectangle(
0, 0, SIDE, 5, outline="black", fill="red")
balle = cnv.create_oval(SIDE/2-30, SIDE/2-10, SIDE /
2-10, SIDE/2+10, fill="orange")
raquette = cnv.create_rectangle(
SIDE/2-25, SIDE-25, SIDE/2+25, SIDE-30, fill="black")
# Detection de la souris au survol du canvas
cnv.bind("<Motion>", survol)
# Appel de la fonction deplacement
deplacement()
root.update()
root.mainloop() |
Partager