7. Анимация

Задача
внутри синего квадрата 400 на 400 пикселей слева направо двигается желтый квадрат 20 на 20 пикселей. Программа останавливается, если нажата клавиша Esc или квадрат дошел до границы синей области.

Принцип анимации.
1.рисуем объект в точке (x,y)
2.задержка на несколько миллисекунд
3.стираем объект
4.изменяем координаты (x,y)
5.переходим к шагу 1
moveObjectBy(obj, dx, dy)
Смещение объекта по координатам dx и dy

Код первого кадра
from graph import *

brushColor("blue")

rectangle(0, 0, 400, 400)

x = 100

y = 100

penColor("yellow")

brushColor("yellow")

obj = rectangle(x, y, x+20, y+20)

run()

Процедура отрисовки кадра
def update(obj):

--moveObjectBy(obj, 5, 0)

--if xCoord(obj) >= 380: # если вышел за границу

----close()


onTimer(update(obj), 50) # вызов процедуры с объектом

Событие
Событие (англ. event) – изменение состояния какого-то объекта в программе (нажатие на клавишу, щелчок мышью, перемещение или изменение размеров окна и т.п.)
def keyPressed(event):

if
event.keycode == VK_ESCAPE:

--close() # закрыть окно

onKey(keyPressed)# вызов процедуры

Задачи
Квадрат двигается справа налево

Два квадрата двигаются в противоположных направлениях:

Два квадрата двигаются в противоположных направлениях и отталкиваются от стенок синего квадрата: