from tkinter import * W, H, T = 700, 400, 50 pw, ph, pd = 150, 20, 10 px, py = 200, H - ph - 30 p2x, p2y = 50, H - ph - 50 kx, ky, kw, kd = 100, 100, 20, 7 dx, dy = kd, kd cnt = 0 def bum(p): # kp[0] kp[1] kp[2] kp[3] # x1 y1 x2 y2 global dy, cnt kball = can.coords(ball) kp = can.coords(p) if (kball[3] > kp[1]) and \ (kball[0] < kp[2]) and \ (kball[2] > kp[0]) and (dy > 0): dy = -dy cnt += 1 if kball[2] > H: print(kball[2]) can.itemconfig(txt, text=str(cnt)) #else: # can.itemconfig(txt, text="") def move_ball(): global dx, dy kball = can.coords(ball) if (kball[0] < 0) or (kball[2] > W): dx = -dx if (kball[1] < 0) or (kball[3] > H): dy = -dy can.move(ball, dx, dy) bum(p) bum(p2) win.after(T, move_ball) def move_p(event): pk = can.coords(p) p2k = can.coords(p2) if event.keycode == 37: if pk[2] < 0: can.moveto(p, W - pd, pk[1]) else: can.move(p, -pd, 0) elif event.keycode == 39: if pk[0] > W: can.moveto(p, 0 - pw, pk[1]) else: can.move(p, pd, 0) elif event.keycode == 65: if p2k[2] < 0: can.moveto(p2, W - pd, p2k[1]) else: can.move(p2, -pd, 0) elif event.keycode == 68: if p2k[0] > W: can.moveto(p2, 0 - pw, p2k[1]) else: can.move(p2, pd, 0) win = Tk() can = Canvas(win, width=W, height=H, bg="lightcyan") ball = can.create_oval(kx, ky, kx + kw, ky + kw, fill="Red") p = can.create_rectangle(px, py, px + pw, py + ph, fill="Blue") p2 = can.create_rectangle(p2x, p2y, p2x + pw, p2y + ph, fill="Green") txt = can.create_text(W - 10, 10, font=('', 30), text="Статус", anchor=NE) can.pack() win.after(T, move_ball) win.bind('<Key>', move_p) win.resizable(0, 0) win.wm_attributes("-topmost", 1) win.mainloop()