Максим, значит нужно сравнить примеры решения конкретной задачи с использованием делегата и без него, понять в чем его польза. В данной задаче это своего рода оптимизация. У нас имеется карта игрового поля - матрица 10 на 10. И есть соотвествующая ей матрица картинок, изображений и прочее. Между картой и отображением должна быть синхронизация. Что для этого нужно сделать? Обновлять содержимое матрицы картинок при изменении карты. Как этого можно добиться? 1) периодически (например, в таймере) класс формы будет получать всю игровую карту и полностью перерисовывать всю матрицу картинок - синхронизация, но это затратно по времени и может вызвать артефакты при отображении. 2) передать в класс логики игры ссылку на класс формы и только в нужный момент вызывать перерисовку - это уже хорошо, обновляет только нужную картинку, но есть зависимость от класса формы, это не гуд. 3) вместо ссылки на весь класс формы передать ссылку на некоторую абстрактную функцию перерисовки, которая не связана с формой - это и есть делегат.
Научился: Применение делегатов этой всегда нереальная магия. В данном случае немного запутанно получилось но главное что получилось.
Все-таки я бы эту игру создавал бы немного по-другому.
Создать объект Море
Создать объект Корабль
описать им методы и работать с ними.
Поживем увидим что дальше.
Евгения Витольдовичу спасибо за подведение итогов в конце видеоурока! Трудности: пока непонятно зачем нам объект Точка не проще было бы просто координаты прописывать.
т.к. при вызове каждого метода приходиться создавать точку
так же пока непонятно зачем мы этим сейчас занимаемся если собирались редактор делать для размещения кораблей
Научился: Работать с делегатами (но необходимо еще практиковаться). Трудности: Плохо понятно, для чего здесь нужны делегаты и как они работают. Большое спасибо за урок. Замечаний нет.