Как нажать на движущийся объект в graphics.py - PullRequest
0 голосов
/ 10 сентября 2018

Как я могу перемещать объект формы, одновременно нажимая на него одновременно?Я могу заставить объект двигаться, и я могу нажать на него, но я не могу щелкнуть по нему, пока он движется.

Предпосылка игры, которую я создаю, заключается в том, что вокруг экрана подпрыгивает цель (цель представлена ​​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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...