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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вступай в Телеграм чат проекта | Обход блокировки
Игровой комплекс Сокобан - Введи код скидки

Теория ООП / Интерфейс. VIP. Тяжёлая дружба кругов и квадратов.

  • На этом уроке мы создалим "универсальный" класс Crosser,
    который сможет проверять на столкновение "любых" двух Игроков.
    Конечно не любых, а только двух наших Box и Circle.
    Это яркий способ, чего стоит избегать в программах.
    Потому что тут не добавляется универсальности,
    т.к. при добавлении новых объектов придётся
    дописывать кучу новых функций на сравнение.

    Самостоятельное задание - записать видеообзор
    своего проекта и рассказать, что такое Interface.
  • Дата отправки отчёта: 21 февраля 2016 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: подружить Box и Circle
  • Что было сложным: понять как они дружат
  • Комментарии: Когда все было готово прошолся по классом и классы GameCatch и CameVirus напросились чтобы былбы реализован интерфейс
    Сейчас можно в форме менять игры на ходу
    можно останавливать всё
    или останавливать только голю или вирус
    можно было реализовать еще чтото но я остановился на этом
    на скринах что получилось

    При написание отчета была обнаружена маленкая ошибка в интерфейсе
    при нажатии на "Стоп Голя" а потом переход на Вирус неснималась птичка с "Стоп Вирус" и неработала
  • Архив проекта: Ссылка доступна после самостоятельного выполнения этого урока
  • Оценка видео-уроку:
Отчёт от 5649 за Теория ООП / Интерфейс. VIP. Тяжёлая дружба кругов и квадратов.


Отчёт от 5649 за Теория ООП / Интерфейс. VIP. Тяжёлая дружба кругов и квадратов.




Оцени работу

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

5649. Максим Лапшинов
Максим Лапшинов
ответить
→  Иван  # Теория ООП / Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. / 2016-02-21 22:09

пока некак
плохо что трудно у меня с математикой
надо там расчитывать
если шарик больше другого и
если залез на пол шарика другого то сьесть
при кушанье надо площядь смотреть наверное и на такую пощядь увеличить нашь шарик


2146. Иван
Иван
ответить
→  Максим Лапшинов  # Теория ООП / Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. / 2016-02-21 19:47

Классная программа получилась. А как на счет съедания маленьких кругов? Здорово, что все получилось и все ошибки отловились!



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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Поэкспериментировал с интерфейсами, повторил создание видео обзоров.
Трудности: Выбрать какое-то одно решение проблемы на проверку пересечения объектов.
Проблему проверки пересечения объектов решил немного другим путем, с помощью интерфейса Boundable, который требует, чтобы реализующие его объекты определили ограничивающие круги и прямоугольники вокруг фигуры. Это позволяет сравнивать не сами объекты со сложной конфигурацией, а упрощенные элементы, например, такие как круги. Для того, чтобы добавить нового игрока в игру, достаточно описать список этих ограничивающих поверхностей, а другие функции более высокого уровня уже работают не с самими объектами, а их границами, таким образом нет тесной связи между типами. Да, проверка получается грубее и менее точная. Здесь можно было бы изменить начальный интерфейс, но я пошел другим путем, оставил все как есть и искал куда бы добавить свой интерфейс Boundable. Мое решение так себе, пока не знаю как сделать лучше, но это позволяет создавать новых игроков и не беспокоиться об их сравнении с другими игроками. Для верности, добавил двух новых игроков с более сложной конфигурацией. Курс понравился, стоит пересмотреть еще раз, так как многие "очевидные" моменты открываются с новой стороны. Спасибо, Евгений Витольдович!


Научился: На первом скриншоте показано приближение прямоугольника к кругу своим ребром, на втором скрине видно, что шарик окрасился, т.е. был заражён, но при этом прямоугольник не пересекается своими углами, это потому, что я модернизировал функцию проверки пересечения разных объектов, учёл грани прямоугольников. Если этого не сделать, то маленькие кружки запросто пролетят насквозь больших прямоугольников, если как раз не зацепят их углы. На видео можно понаблюдать над реализацией. Так же устранил все утечки памяти и реализовал уборку мусора каждый 5 секунд, это устранило проблемы с постепенным увеличением потребления ОЗУ со временем. з.ы. по поводу Интерфейса, это очень удобная вещь, которая определяет общий набор функций для различных объектов, что позволяет взаимодействовать с ними намного удобнее и хранить в общем массиве/списке/множестве... Он гарантирует, что каждый объект имеет необходимый функционал, так как он должен обязательно быть реализован!!! з.з.ы. Не согласен, что этот урок показывает как делать нельзя, просто это сложнее и требует доп. ресурсов, но зато это более качественно, чем если бы мы кружки описывали прямоугольником. Можно создать интерфейс для игр, который хранил бы в себе базовый функционал, это прям напрашивается. Отличный курс, но маленький, советую каждому пройти его и осмыслить.