我制作了一个简单的程序,用于在画布内水平左右移动球。用户将使用左右键相应地将球移动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()
然而,按任一键可将球向右移动(超过5个像素)并离开屏幕,尽管if
功能可以防止这种情况发生。
答案 0 :(得分:2)
根据Tkinter Canvas documentation,move
方法dx
的第二个参数是偏移量。尝试将其称为
game_area.move(ball, -5, 4)
然后你也不需要以下一行。
coords = int(coords)- 5