Рейтинг  

Яндекс.Метрика
Яндекс цитирования
 

   

Статистика  

Пользователи
7
Материалы
578
Кол-во просмотров материалов
2742621
   
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()

   
   

Login Form