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

Формула программиста
основатель — Волосатов Евгений Витольдович
Шаблоны Проектирования / Java

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

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

    Вопрос для перехода к следующему уроку:
    Что нужно изменить в этой программе, чтобы мы могли
    а) перемещать снеговика;
    б) поворачивать снеговика;
    в) изменять размер снеговика.
  • Дата отправки отчёта: 1 мая 2015 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: Закрепил предыдущие навыки, готовился новизне на следующих уроках
  • Что было сложным: А вот в этом уроке из курса ООП и начались сложности: не просто писать код и слушать объяснения учителя, но еще и над ответом на вопрос думать. Вопрос не так прост, как кажется. С налета не решить. Вот для меня ответ на вопрос, который был бы оптимальным решением в тех условиях, которые есть, - и был наибольшей сложностью.
  • Комментарии: Выложу свои мысли по поводу движения, вращения и масштабирования снеговика на момент записи урока и после размышления "постскриптум" (исходя из того, что есть у нас, без применения тех примочек ООП, которые мы не учили):
    1) Инициализацию снеговика надо выделить в отдельный класс, в который передавать все точки.
    2) Для перемещения снеговика - в функцию прорисовки нового класса передать точки, смещенные по X или по Y
    3) Вращение - частный случай перемещения верхней части снеговика в одну сторону, нижней - в другую при неподвижном центре
    4) по поводу масштабирования ничего в голову не пришло кроме как вывести снеговиков на отдельные pictureBox'ы и изменения размеров каждого
  • Оценка видео-уроку:
Отчёт от 791 за Теория ООП / Второй Снеговик




Оцени работу

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

1. Евгений Витольдович
Евгений Витольдович
ответить
→  Валерий  # Теория ООП / Второй Снеговик / 2015-05-01 09:19

Молодец, Валерий, очень ответственно подошёл к заданию.
(извини, не туда посмотрел)


  • Отчёт оценивали:
    7319Alpinist573+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: пока ничему
Трудности: Всё просто
1. Нужно создать отдельный класс снеговик, который принимает в конструкторе точки снеговика (наша структура Pixel). И если разноцветный то перегруженный конструктор с цветами и точками. 2.У класса должен быть метод перемещения Move(), который принимает 2 параметра- смещение по x и y - если хоть один параметр больше 0 - то текущий снеговик стираем и рисуем новый со смещением. 3.у класса должен быт метод Scale(). принимающий один параметр типа int - изменение нашего масштаба.принцип тот же что и в Move();
Научился: Ответы. 1. Насколько возможно перемещать снеговиков по экрану. Разумеется возможно. И разумеется крайне тяжело. На данный момент мы получили работающий, но трудноподдерживаемый код. 2. Для начала надо создать класс снеговика. Еще лучше абстрактный суперкласс для снеговиков. 3. Как реализовать. Каждый класс должен реализовывать общий интерфейс Imove, реализация которого будет разной у каждого класса. Зато вызов одинаковый для всех. Что дает - можем создать параметризованный список (или массив) типа Imove и в цикле вызывать для всех метод движения. И вообще при вызове движения для фигуры не задумываться, какая конкретно это фигура. Вообще конечно это же можно было бы добиться и через абстрактный суперкласс и абстрактный метод move() в суперклассе. Но тут есть много вытекающей теории. Не стану углубляться. 4. для масштабирования точно такая же схема - свой метод. 4. Как на практике реализуется. Ну тут варианты. Я бы передавал в вышеупомянутый метод дельту смещения метод бы доавлял это значение к иску (или игреку) и вызывал отрисовку.
Трудности: не было
зам нет