# ООП и Canvas: ДЗ.

## click

Сделайте так, что бы рисование происходило не только по движению мыши, но и при первом клике.


## updateAll

Создайте функцию `updateAll`, которая очищает `Canvas` и в цикле вызывает переданную в качестве параметра функцию-callback, которая делает определенные операции с каждым объектом из массива `circles`, после чего отрисовывает его используя метод `draw`.
Если параметр не передан, то функция просто очищает канвас и перерисовывает все кружки.

```javascript
updateAll(function(circle){
    circle.setR(circle.getR() +1);
})
```

пример выше должен увеличить размер всех кружков на 1. (т. е. заменить текущую реализацию кнопки `+`)

## clear

Сделайте очистку поля рисования. Используйте `updateAll`.

## color

Сделайте выбор цвета. Добавьте методы `setColor` и `getColor` в объект `Circle`.

### undo

Сделайте возможность отмены добавления круга. Используйте `updateAll`

### resize

Сделайте возможность изменения диаметра всех кругов с помощью колеса мыши. Используйте `updateAll`

## Синий пояс

Сделайте возможность выбора кругов, над которыми вы производите операции. Для этого нужно:
- Сделать визуальный переключатель режима рисования или выбора кругов (на ваш выбор)
- в режиме выбора определять к какому элементу ближе всего произошел клик и добавлять его в специальный массив `selected`. Показывать пользователю, 
  что элемент выбран, например с помощью штриховой окружности вокруг элемента. Повторный клик отменяет выбор элемента. Модифицируйте `draw` таким образом
- все операции проводить над элементами `selected`, если же он пуст, то над будущими элементами.

## Черный пояс.

Сделайте неразрывное рисование кружков. Даже если пользователь двигает мышью быстро, кружки должны отрисовываться неразрывно.