Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
C# Олимпиада из Простоквашино

Теория ООП / Второй Снеговик

  • На этом уроке мы создадим второй спрайт -
    ещё одного снеговика, но разноцветного.

    Вопрос для перехода к следующему уроку:
    Что нужно изменить в этой программе, чтобы мы могли
    а) перемещать снеговика;
    б) поворачивать снеговика;
    в) изменять размер снеговика.
  • Дата отправки отчёта: 8 января 2016 г.
  • Задание выполнено: за 15 мин.
  • Чему научился: Ответы.
    1. Насколько возможно перемещать снеговиков по экрану. Разумеется возможно. И разумеется крайне тяжело. На данный момент мы получили работающий, но трудноподдерживаемый код.
    2. Для начала надо создать класс снеговика. Еще лучше абстрактный суперкласс для снеговиков.
    3. Как реализовать. Каждый класс должен реализовывать общий интерфейс Imove, реализация которого будет разной у каждого класса. Зато вызов одинаковый для всех. Что дает - можем создать параметризованный список (или массив) типа Imove и в цикле вызывать для всех метод движения. И вообще при вызове движения для фигуры не задумываться, какая конкретно это фигура.
    Вообще конечно это же можно было бы добиться и через абстрактный суперкласс и абстрактный метод move() в суперклассе. Но тут есть много вытекающей теории. Не стану углубляться.
    4. для масштабирования точно такая же схема - свой метод.
    4. Как на практике реализуется. Ну тут варианты. Я бы передавал в вышеупомянутый метод дельту смещения метод бы доавлял это значение к иску (или игреку) и вызывал отрисовку.
  • Что было сложным: не было
  • Комментарии: зам нет
  • Оценка видео-уроку:
Отчёт от 4342 за Теория ООП / Второй Снеговик




Оцени работу

 
Сохранить страницу:

2146. Иван
Иван
ответить
→  Алекс  # Теория ООП / Второй Снеговик / 2016-01-08 17:44

Здорово все описал. Видно, что тема знакомая.


  • Отчёт оценивали:
    6925Артём+1   8005Александр+1   1Евгений Волосатов+1   6203Николай (nick27m)+1   4395Денис+1   4004Елена+1   8275Tekashnik+1   459Сергей Сергеевич+1   7645Александр Львович+1   4992Николай+1   2639Морозов Юрий Александрович+1   6484Вячеслав+1   6391Владимир+1   8407Наталья+1   5489Serg+1   3664данила+1   4591Aleksandr Zaitcev+1   2912Игорь+1   6195sergey+1   2146Иван+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Использовать наследование
Трудности: Ничего сложным не было
Предполагаю, что чтобы перемещать, поворачивать или изменять размер наших изображений, их нужно поместить в некоторые прозрачные контейнеры, а потом добавить eventListener-ы и присобачить их к работе со свойствами контейнеров.
Научился: Добавил второго снеговика, путем смещения координат 'x' базовых точек первого снеговика.
Трудности: Сложностей не было.
Для начала, для удобства, можно создать класс SnowMan, где, в качестве полей определены: x, y - координаты верхнего-левого угла снеговика; angle_x, angle_y - текущие углы поворота снеговика относительно осей x, y; scale_x, scale_y - коэффициенты масштабирования относительно осей x, y. 1) для перемещения можно добавить функцию move(int dx, int dy) {x += dx; y += dy;} 2) для поворота можно добавить функцию rotate(int rx, int ry) { angle_x += rx; angle_y += ry; } 3) для изменения размеров можно добавить функцию scale(int sx, int sy) {scale_x *= sx; scale_y *= sy;} Кроме того, можно добавить функции set_position(int x, int y), set_rotation(int rx, int ry), set_scale(int sx, int sy), которые устанавливают абсолютные значения необходимых полей.