Как я могу перемещать объект формы, одновременно нажимая на него одновременно?Я могу заставить объект двигаться, и я могу нажать на него, но я не могу щелкнуть по нему, пока он движется.
Предпосылка игры, которую я создаю, заключается в том, что вокруг экрана подпрыгивает цель (цель представлена 4 кругами разного размера, закрепленными в одной и той же средней точке), и вы получаете различное количество очков в зависимости откакой круг вы нажимаете.
Вот код, который у меня есть:
def pointDetector(mx, my, c1, c2, c3, c4):
delay = .005
ite = 0
y = sqrt(((mx - c4.getCenter().getX()) ** 2) + ((my - c4.getCenter().getY()) ** 2))
if y < c4.getRadius():
c1.undraw()
c2.undraw()
c3.undraw()
c4.undraw()
ite += 1
time.sleep(delay)
return [1, 50]
y = sqrt(((mx - c3.getCenter().getX()) ** 2) + ((my - c3.getCenter().getY()) ** 2))
if y < c3.getRadius():
c1.undraw()
c2.undraw()
c3.undraw()
c4.undraw()
ite += 1
time.sleep(delay)
return [1, 25]
y = sqrt(((mx - c2.getCenter().getX()) ** 2) + ((my - c2.getCenter().getY()) ** 2))
if y < c2.getRadius():
c1.undraw()
c2.undraw()
c3.undraw()
c4.undraw()
ite += 1
time.sleep(delay)
return [1, 20]
y = sqrt(((mx - c1.getCenter().getX()) ** 2) + ((my - c1.getCenter().getY()) ** 2))
if y < c1.getRadius():
c1.undraw()
c2.undraw()
c3.undraw()
c4.undraw()
ite += 1
time.sleep(delay)
return [1, 10]
time.sleep(delay)
return [0, -5]
def bounceInBox(dx, dy, xLow, xHigh, yLow, yHigh, win):
''' Animate a shape moving in jumps (dx, dy), bouncing when
its center reaches the low and high x and y coordinates.
'''
c1 = Circle(Point(200, 300), 75);
c1.setFill("red");
c1.draw(win);
c2 = Circle(Point(200, 300), 50);
c2.setFill("white");
c2.draw(win);
c3 = Circle(Point(200, 300), 25);
c3.setFill("red");
c3.draw(win);
c4 = Circle(Point(200, 300), 10);
c4.setFill("white");
c4.draw(win);
win.plot(100, 100, "light blue");
m = win.getMouse()
delay = .005
for i in range(600):
c1.move(dx, dy)
c2.move(dx, dy)
c3.move(dx, dy)
c4.move(dx, dy)
center = c1.getCenter()
x = center.getX()
y = center.getY()
if x < xLow:
dx = -dx
elif x > xHigh:
dx = -dx
if y < yLow:
dy = -dy
elif y > yHigh:
dy = -dy
time.sleep(delay)
pointDetector( win.getMouse().getX(), win.getMouse().getY(), c1, c2, c3, c4)