У меня есть простая программа, которая предназначена для перемещения шара влево и вправо по горизонтали внутри холста. Пользователь будет использовать левую и правую клавиши для перемещения шара соответственно на 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
, которая предназначена для предотвращения этого.
Спасибо, но хотя они двигаются в правильном направлении, мяч все еще движется вниз, и я хочу, чтобы он остался там, где он находится в терминах оси y. – Ernxst
@Ernxst Третий аргумент, 'dy', также является смещением. Измените это с 4 на 0. –
Ничего! Я просто установил 4 к 0 после повторного чтения того, что вы разместили. – Ernxst