Анимация графики в python

10 февраля 2019 - Администратор

Анимация в питон Пример анимации графики в модуле graphics в Python.

Чтобы графические объекты двигались в графическом окне Python, используется общий алгоритм анимации в цикле. В цикле for  происходит рисование объекта, пауза, стирание объекта и изменение его координат. Чтобы нарисовать объект, мы ввели процедуру, в которую передаются координаты объекта и параметр видимости.  Чтобы стереть объект, его нужно нарисовать цветом фона. Разберем структуру графической программы python  с анимацией графических объектов 
Импортируем все модули в программу питон.
from graphics import *
import time

Модуль питон time необходим для использования функции паузы time.sleep(время паузы)
win = GraphWin("Окно для графики", 400, 400)
win.setBackground('white')

 Создаём окно для графики размером 400×400 пикселей. Окно будет называться «Окно для графики». Устанавливается цвет фона графического окна белыйВ нашей программе была создана процедура для отображения автомобиля по координатам. Были введены массивы для начальных координат машинок. Подробоно о работе с массивами в python
x = [10, 20, 30]
y = [100, 200, 300]

В программе была определена процедура рисования графического объекта в нашем примере автомобиля. Подробнее о процедурах в Python. Кузов и окно автомобиля рисуется  с помощью многоугольника команды в модуле graphics в питон  Polygon(), колёса  рисуются с помощью команды рисования окружности  в графическом модуле питон это команда Circle(). Кузов, окно, первое и второе колесо — это отдельные элементы, назовём их body, wheel1, wheel2 и window. Чтобы отобразить графические объекты в графическом окне в программе python  необходимо использовать команду объект.draw(имя графического окна) Подробнее о работе с графикой в питон В процедуре рисования автомобиля , параметр flag определяет, будет ли рисоваться автомобиль или стираться с экрана. Если flag равен 0, то графический объект будет рисоваться цветом фона и его не будет видно в окне для графики, если flag равен 1, то графический объект будет рисоваться в окне для графики заданным цветом
def car(x, y, color, flag): 
    body = Polygon(
        Point(x, y),
        Point(x, y - 10),
        Point(x + 10, y - 20),
        Point(x + 30, y - 20),
        Point(x + 40, y - 10),
        Point(x + 50, y - 10),
        Point(x + 50, y))
    wheel1 = Circle(Point(x + 8, y + 4), 4)
    wheel2 = Circle(Point(x + 42, y + 4), 4)
    window = Polygon(
        Point(x + 20, y - 12),
        Point(x + 20, y - 18),
        Point(x + 30, y - 18),
        Point(x + 36, y - 12))
    body.setOutline(color)
    body.setFill(color)
    wheel1.setFill("black")
    wheel2.setFill("black")   
    window.setOutline("cyan")
    window.setFill("cyan")
    
    if flag == 1:
       body.draw(win)
       wheel1.draw(win)
       wheel2.draw(win)
       window.draw(win)
       
    if flag == 0:
       body.setOutline('white')
       body.setFill('white')
       wheel1.setFill("white")
       wheel1.setOutline('white')
       wheel2.setFill("white") 
       wheel2.setOutline('white')
       window.setOutline("white")
       window.setFill("white")
       body.draw(win)
       wheel1.draw(win)
       wheel2.draw(win)
       window.draw(win)

Полный текст программы на python анимации графических объектов

from graphics import *
import time
win = GraphWin("Окно для графики", 400, 400)
win.setBackground('white')
x = [10, 20, 30]
y = [100, 200, 300]
def car(x, y, color, flag): 
    body = Polygon(
        Point(x, y),
        Point(x, y - 10),
        Point(x + 10, y - 20),
        Point(x + 30, y - 20),
        Point(x + 40, y - 10),
        Point(x + 50, y - 10),
        Point(x + 50, y))
    wheel1 = Circle(Point(x + 8, y + 4), 4)
    wheel2 = Circle(Point(x + 42, y + 4), 4)
    window = Polygon(
        Point(x + 20, y - 12),
        Point(x + 20, y - 18),
        Point(x + 30, y - 18),
        Point(x + 36, y - 12))
    body.setOutline(color)
    body.setFill(color)
    wheel1.setFill("black")
    wheel2.setFill("black")   
    window.setOutline("cyan")
    window.setFill("cyan")
    
    if flag == 1:
       body.draw(win)
       wheel1.draw(win)
       wheel2.draw(win)
       window.draw(win)
       
    if flag == 0:
    
       body.setOutline('white')
       body.setFill('white')
       wheel1.setFill("white")
       wheel1.setOutline('white')
       wheel2.setFill("white") 
       wheel2.setOutline('white')
       window.setOutline("white")
       window.setFill("white")
        
       body.draw(win)
       wheel1.draw(win)
       wheel2.draw(win)
       window.draw(win)

for i in range(20):
    car(x[0], y[0], 'green', 1)
    car(x[1], y[1], 'green', 1)
    car(x[2], y[2], 'green', 1)
  
    time.sleep(1)
    car(x[0], y[0], 'green', 0)
    car(x[1], y[1], 'green', 0)
    car(x[2], y[2], 'green', 0)
    x[0] += 10
    x[1] += 10
    x[2] += 10
win.getMouse()
win.close()

Вернуться к содержанию

Комментарии (0)

Нет комментариев. Ваш будет первым!