2014-06-18 5 views
0
from tkinter import * 

def move(): 
    global x1, y1, dx, dy, flag, n, z 

    x1, y1 = x1 + dx, y1 + dy 

    if x1 > 360: 
     x1, dx, dy = 360, -15, 5 
     can1.itemconfig(oval1, fill = "purple") 

    if x1 < 10: 
     x1, dx, dy = 10, 15, 5 
     can1.itemconfig(oval1, fill = "red") 

    if y1 == 360: 
     x1, dx, dy = 360, -15, -5 
     can1.itemconfig(oval1, fill = "green") 


    can1.coords(oval1, x1, y1, x1 + 30, y1 + 30) 

    if flag > 0: 
     abl1.after(50, move) 

def stop(): 
    global flag 
    flag = 0 

def start(): 
    global flag 
    if flag == 0: 
     flag = 1 
     move() 

### 

x1, y1 = 10, 10 
dx, dy = 15, 5 
n = 0 


flag = 0 

### 

abl1 = Tk() 
abl1.title("Animációs gyakorlat Tkinter-rel") 

can1 = Canvas(abl1, bg = "dark grey", height = 400, width = 400) 
can1.pack(side=LEFT) 

oval1 = can1.create_oval(x1, y1, x1 + 30, y1 + 30, fill = "white") 

but1 = Button(abl1, text = "Quit", command = abl1.destroy).pack(side=BOTTOM, padx = 3, pady = 5) 
but2 = Button(abl1, text = "Start", command = start).pack(padx = 3, pady = 5) 
but3 = Button(abl1, text = "Stop", command = stop).pack(padx = 3, pady = 5) 

abl1.mainloop() 

이 코드를 사용하면 공이 자동으로 지그재그로 이동하지만 바닥에 도달하면 다시 맨 위로 이동 한 다음 다시 맨 아래로 다시 이동해야합니다. 여러 번 시도했지만 해결할 수 없었습니다.Python에서 지그재그 동작을 만드는 방법은 무엇입니까?

답변

1

까지 이동하기위한 새로운 변수

is_moving_down = True 

그리고 새로운 기능을 만든 다음

if is_moving_down: 
    move_down() 
else: 
    move_up() 

이제 방향을

if some_conditions: 
    is_moving_down = True 
else: 
    is_moving_down = False 
을 변경해야