8. Управление клавишами

Задача
Жёлтый квадрат внутри синего квадрата управляется
клавишами-стрелками.

Код клавиши
влево – 37
вверх – 38
Esc – 27
вправо – 39
вниз – 40
def keyPressed(event):
--if event.keycode == VK_LEFT:
----moveObjectBy(obj, -5, 0)
--elif event.keycode == VK_RIGHT:
----moveObjectBy(obj, 5, 0)
--elifevent.keycode == VK_UP:
----moveObjectBy(obj, 0, 5)
--elifevent.keycode == VK_DOWN:
----moveObjectBy(obj, 0, -5)


onKey(keyPressed) # установить обработчик

Задачи
Квадрат двигается при нажатии стрелок, однако не может выйти за границы синего квадрата.
Управление по возникновению событий
Жёлтый квадрат постоянно движется и меняет направление движения при нажатии клавиш-стрелок. При нажатии на пробел останавливается
moveObjectBy(obj, dx, dy )
необходимо изменить значения на переменные
def keyPressed(event):

global dx, dy

if event.keycode == VK_LEFT:
--dx = -5
--dy =0
...
Внести изменения в остальную часть программы
Задачи
Квадрат не может выйти за границы синего квадрата, сразу останавливается при столкновении со стенкой.
Квадрат отталкивается от стенок.
Квадрат может ходить по диагоналям (используйте ещё 4 клавиши) и отталкивается от стенок.