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

Формула программиста
основатель — Волосатов Евгений Витольдович

Теория ООП / Интерфейс. VIP. Пересечение прямоугольников.

  • На этом уроке мы допишем метод Box.Поймал()
    и запустим игру с квадратиками.
    Потом попробуем подружить квадратики с кружками,
    увидим, что это не так просто, да собственно и не нужно.
    Но возможно.
  • Дата отправки отчёта: 31 марта
  • Задание выполнено: за 1 час. 20 мин.
  • Чему научился: Условие пересечения прямоугольников.
  • Что было сложным: Сложностей не было.
  • Комментарии: Поначалу решил, что предложенная в уроке функция проверки пересечения двух прямоугольников рассматривает только один частный случай, слишком уж "простая" она на вид. Однако проверил на практике - работает. Здесь я предположил, что боксики двигаются слишком быстро, поэтому в какой-то момент срабатывает "то самое" частное условие и боксик голится. Я не верил, что это решение корректное. Для полной проверки нужно было замедлять боксики и проверять на глаз пересечения, но мне не хотелось этим заниматься.

    Я уже хотел было отправить отчет, но тут вспомнил совет Евгения Витольдовича, что следует довести дело до конца. Тут осенило, думаю, дай-ка создам unit-тесты на функцию isIntersect и проверю все возможные варианты пересечений и не пересечений. В итоге, нарисовал на бумаге разные варианты расположения прямоугольников, получалась 31 комбинация, создал для каждой из них свой тест, каждый тест запускал по мере написания и меня каждый раз шокировало, что функция-то работает:D На втором скриншоте показаны результаты выполнения 31 теста, все проходят. Подумал, может в Qt какая-нибудь бага, регрессировал код тестируемой функции, добавил в нее ошибку и тесты посыпались как надо, чудо. В общем, функция Евгения Витольдовича работает как надо.

    Позже я еще раз логически проанализировал функцию проверки и да, тут уже понял, что код корректен. Первое впечатление оказалось обманчивым, следует внимательно читать код. Хороший урок для меня.
  • Оценка видео-уроку:
Отчёт от 7276 за Теория ООП / Интерфейс. VIP. Пересечение прямоугольников.


Отчёт от 7276 за Теория ООП / Интерфейс. VIP. Пересечение прямоугольников.




Оцени работу

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

7276. Ильшат
Ильшат
ответить
→  Оля  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-04-01 17:32

Спасибо, Оля, тут ничего особенного, просто добавил тесты для проверки)


24. Оля
Оля
ответить
→  Ильшат  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-03-31 23:06

Ильшат, супер, у меня даже слов выразить восхищения нет, прости, это Гениально! :)



2146. Иван
Иван
ответить
→  Ильшат  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-03-31 17:54

Здорово! Очень интересный отчет! Спасибо


7276. Ильшат
Ильшат
ответить
→  Евгений Витольдович  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-03-31 17:34

Спасибо, таких тестов не было. Сегодня исправил пару ошибок в тестах, дописал новые на проверку касания боковыми сторонами, угловыми точками и при наложении друг на друга (одинаковые прямоугольники) - все работает.



1. Евгений Витольдович
Евгений Витольдович
ответить
→  Ильшат  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-03-31 09:02

Ильшат, это ты здорово придумал, насчёт тестов.

В уроке были ссылки с описанием алгоритмов.
Так вот у них там есть ошибки :) Пришлось их исправлять, прежде чем вам показать.
Были ли у тебя тесты, когда фигуры не пересекаются, а только касаются в одной точке?


4992. Николай
Николай
ответить
→  Ильшат  # Теория ООП / Интерфейс. VIP. Пересечение прямоугольников. / 2016-03-31 06:37

Мощно! Впечатляет подход к проработке уроков! Творчество в чистом виде. Учусь у Вас такому же отношению. И еще это очень здорово мотивирует! Молодец, Ильшат!


  • Отчёт оценивали:
    6452Lik_Kirill+1   4992Николай+1   7645Александр Львович+1   9752Chokan0   6644valerys Nikola+1   4395Денис+1   1Евгений Витольдович+1   6925Артём+1   8380zhikharevav+1   9288Pučko Antonina+1   9544Даниил Степаненко+1   3625Михаил0   8886Михаил Ермишин+1   4467Alcatraz+1   689Igorenzia+1   8275Tekashnik+1   5760Мариша +1   9332Dima+1   2146Иван+1   8938mr.whirl+1   459Сергей Сергеевич+1   9237Mais+1   24Оля+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Реализовал игру "квадратики играют с кружочками" по своему
Трудности: Разобраться с типами и придумать концепцию реализации
У меня квадратики играют с кружочками в virusGame. Единственное что не доделал - квадратики не отталкиваются от кружочков и зона действия функции касания для квадрата определена поперечными размерами квадрата ( касание не засчитано если задет только угол и вскользь) . А так работает)) Этот отчёт будет идентичен следующему так как задание выполнено досрочно.
Смотреть видеозапись: https://youtu.be/niodsrmhaFE
Научился: Условие пересечения прямоугольников.
Трудности: Сложностей не было.
Поначалу решил, что предложенная в уроке функция проверки пересечения двух прямоугольников рассматривает только один частный случай, слишком уж "простая" она на вид. Однако проверил на практике - работает. Здесь я предположил, что боксики двигаются слишком быстро, поэтому в какой-то момент срабатывает "то самое" частное условие и боксик голится. Я не верил, что это решение корректное. Для полной проверки нужно было замедлять боксики и проверять на глаз пересечения, но мне не хотелось этим заниматься. Я уже хотел было отправить отчет, но тут вспомнил совет Евгения Витольдовича, что следует довести дело до конца. Тут осенило, думаю, дай-ка создам unit-тесты на функцию isIntersect и проверю все возможные варианты пересечений и не пересечений. В итоге, нарисовал на бумаге разные варианты расположения прямоугольников, получалась 31 комбинация, создал для каждой из них свой тест, каждый тест запускал по мере написания и меня каждый раз шокировало, что функция-то работает:D На втором скриншоте показаны результаты выполнения 31 теста, все проходят. Подумал, может в Qt какая-нибудь бага, регрессировал код тестируемой функции, добавил в нее ошибку и тесты посыпались как надо, чудо. В общем, функция Евгения Витольдовича работает как надо. Позже я еще раз логически проанализировал функцию проверки и да, тут уже понял, что код корректен. Первое впечатление оказалось обманчивым, следует внимательно читать код. Хороший урок для меня.