Анимация с использованием графики Zelle в Python - PullRequest
0 голосов
/ 12 ноября 2018

Мне нужна помощь в разработке моей графики, без черепахи и ткинтера, но с Zelle graphics.py. Проблема в том, что мне нужно запустить 4 круга, двигаясь одновременно. Вот код, который у меня есть:

 from graphics import *
    import time #import time module

from random import randrange
def rand_color():#generates a random color and returns that color
    return(color_rgb(randrange(256),randrange(256),randrange(256)))
def main():
    win = GraphWin("My Circle",500,500)\
    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,1)
        time.sleep(.005)

    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(-1,1)
        time.sleep(.005)

    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,-1)
        time.sleep(.005)

    c = Circle(Point(20,20),20)
    c.setFill(rand_color())
    c.draw(win)
    for i in range(1,461):
        c.move(1,1)
        time.sleep(.005)
main()

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

1 Ответ

0 голосов
/ 12 ноября 2018

Скорее перемещайте каждый круг по очереди, измельчайте движения и чередуйте их так, чтобы каждый круг двигался постепенно по кругу. Я предполагаю, что это близко к тому, что вы пытаетесь сделать:

from random import randrange
from graphics import *

def rand_color():
    """ Generate a random color and return it. """

    return color_rgb(randrange(256), randrange(256), randrange(256))

win = GraphWin("My Circle", 500, 500)

circles = []

for x in [-1, 1]:
    for y in [-1, 1]:
        circle = Circle(Point(250, 250), 20)
        circle.setFill(rand_color())
        circle.draw(win)
        circles.append((circle, (x, y)))

for _ in range(250):
    for circle, (x, y) in circles:
        circle.move(x, y)

win.getMouse()  # Pause to view result
win.close()  # Close window when done

enter image description here

...