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

Формула программиста
основатель — Волосатов Евгений Витольдович
Графика + Циклы = Мастерство
Вебинар «Создание прикладных программ на C#» начнётся через 1  день 22 час. 41 мин.

Теория ООП / Интерфейс. Кружок хочет играть.

  • На этом уроке мы унаследуем кружок от интерфейса Игрок.
    Теперь для запуска программы нам придётся реализовать
    методы из его интерфейса.
    В этом уроке мы реализуем методы Голя() и НеГоля().
  • Дата отправки отчёта: 4 ноября 2015 г.
  • Задание выполнено: за 20 мин.
  • Чему научился: Закрепил навыки.
  • Что было сложным: Описать словами содержимое методов Беги(), Поймал().
  • Комментарии: Метод Беги(). Наш круг описывается координатами центра center (Point) и радиусом(int). В конце урока была дана подсказка, две целочисленные переменные sx, sy. Эти переменные могут означать смещение координат центра. Могут означать изменение радиуса. Но мы должны реализовать не метод Расширься(), а метод Беги(), то есть изменение координат самого круга, а это определяется координатами центра.
    Так что, думаю что надо в методе Беги() изменить координаты центра:
    center = new Point(center.x + sx, center.y + sy);

    В методе Поймал(object obj) нам надо проверить поймал ли текущий кружок this  того, что мы получили в аргументах. Физическая реализация этого представляется проверкой на столкновение или, точнее, пересечение двух окружностей (Так как у нас объекты круги). Пересечение двух окружностей это не rocket science, решение известно - это определение дистанции между центрами окружностей и сравнение этого значения с суммой радиусов. Если дистанция меньше суммы, то ... кружок поймал другой кружок.
    public bool Catch(object obj)
    {
        Circle second_circle = (Circle)obj;
       
        int distance = Convert.ToInt16(Math.Sqrt(
              (center.X - second_circle.center.X) * (center.X - second_circle.center.X) +
              (center.Y - second_circle.center.Y) * (center.Y - second_circle.center.Y)));

        return distance < radius + second_circle.radius;
    }
  • Оценка видео-уроку:
Отчёт от 7276 за Теория ООП / Интерфейс. Кружок хочет играть.




Оцени работу

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

7276. Ильшат
Ильшат
ответить
→  Евгений Волосатов  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-11-04 18:03

Спасибо, Евгений Витольдович)


1. Евгений Волосатов
Евгений Волосатов
ответить
→  Ильшат  # Теория ООП / Интерфейс. Кружок хочет играть. / 2015-11-04 17:59

Отличная проработка.


  • Отчёт оценивали:
    6987MichGar+1   6391Владимир+1   1Евгений Волосатов+1   1947Denis+1   7788Ксения+1   4004Елена+1   429Максим Базуев+1   7573Павел0   5419Роман+1   6925Артём+1   2633Андрей+1   6452Кирилл Шмойлов+1   4395Денис+1   2457kristalic+1   7645Александр Львович+1   459Сергей Сергеевич+1   6458Илья+1   24Олюшка+1   6080annaka+1   3747Сергей+1   6885lomik+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Узнал, что множественного наследования в шарпе нет, зато можно перечислить интерфейсы через запятую. Как бы тоже наследование, только не вглубь, а вширь.
У меня опяться же были представления в голове о том, как что и в каких файлах должно было бы быть, но не было четкого представления. После этого урока я понял, где _конкретно_ нужно писать строчки для изменения цвета. А теперь мне вспомнился 94й год, когда я был в больнице и познакомился с одним человеком, который уже на спектруме писал игры со спрайтами на асме. И он мне как раз рассказал, как компутер определяет столкновение 2х объектов. Это оказалось настолько просто, что технология игр мне стала понятна и я потерял интерес. Но в тот день я в тетрадке написал весь код, а дома вбил его и проверил. Конечно на бейсике все это тормозило и не было никаких спрайтов, только двигались буквы псевдографики. Так что, как реализовать движение? Надо знать границы экрана, координаты кружка public Point center. Координатам sx, sy присваиваются координаты кружка в методе public void Голя() и потом сравниваются с координатами границ экрана. А логика столкновений уже реализована в классе GameCatch. Сейчас поем, посмотрю ролик какой и потом вернусь к следущему уроку и как раз проверим, прав ли я был.
Думаю в методе беги будем реализовывать передвижение (перерисовывание кружка) а в методе Поймал фиксировать зацепил ли один кружок другой