2016-10-12 17 views
0

キャンバス内でボールを左右に水平に動かすための簡単なプログラムを作成しました。ユーザーは左右のキーを使用してボールを5ピクセルずつ移動させます。ボールのx座標が40未満または240以上の場合は、何も行いません。オブジェクトが間違った方向に移動する理由

try:  
    import tkinter as tk 
except ImportError: 
    import Tkinter as Tk 

window = tk.Tk() 
game_area = tk.Canvas(width=270, height=400, bd=0, highlightthickness=0, 
         bg="white") 

ball = game_area.create_oval(10, 10, 24, 24, fill="red") 
game_area.move(ball, 120, 4) 
coords = 120 

def move_left(event): 
    global coords 
    if coords < 40: 
     pass 
    else: 
     coords = int(coords)- 5 
     game_area.move(ball, coords, 4) 
    game_area.update() 

def move_right(event): 
    global coords 
    if coords > 240: 
     pass 
    else: 
     coords = int(coords)+5 
     game_area.move(ball, coords, 4) 
    game_area.update() 

window.bind("<Left>", move_left) 
window.bind("<Right>", move_right) 
game_area.pack() 
window.mainloop() 

しかし、これを防止することを意味するif機能にもかかわらず、ボール右(両端の5つの以上のピクセル)に向かって、画面オフキー移動のいずれかを押します。

答えて

2

Tkinter Canvas documentationによると、moveメソッドの2番目の引数、dxはオフセットです。

game_area.move(ball, -5, 4) 

次のような行は必要ありません。

+0

右の方向に移動しても、ボールはまだ下に移動し、y軸の位置にあるままにします。 – Ernxst

+0

@Ernxst第3引数 'dy'もオフセットです。それを4から0に変更してください。 –

+0

気にしないでください!私はちょうどあなたが投稿したものを読んだ後に4から0に設定しました。 – Ernxst

関連する問題