На этом уроке мы допишем методы Игрока в классе Circle. Реализуем метод Беги() и Поймал(), и даже исправим недочёты в описании интерфейса (!!). В конце урока я ответил на многочисленные вопросы участников.
Дата отправки отчёта:
21 мая 2017 г.
Задание выполнено: за
30 мин.
Чему научился:
Вычислять соприкосновения спрайтов.
Что было сложным:
Понять весь этот матан.
Комментарии:
Ну как я и написал в прошлом каменте - надо сравнивать 2 координаты фигур. Правда у меня как всегда в голове только расплывчатый образ был, без конкретной реализации.
Вот сколько я в школу ходил и были там уроки геометрии и нигде никто не давал таких вот знаний, чтобы потом на практике применить. Вот про закон пифагора я знаю и что толку с этого? return Convert.ToInt16(Math.Sqrt(p.X - q.X) * (p.X - q.X) + (p.Y - q.Y) * (p.Y - q.Y)); Я бы такое под дулом автомата не придумал. Сто раз проверил все эти буквы, чтобы опечатки даже не сделать. А уж чтобы придумать...
Как оказалось - границы фигуры вычисляются из центра. И это только для круга. А как для квадрата? А для треугольника?
На старых приставках я замечал, что спрайт физически всегда является квадратом, даже если некоторые пиксели у него прозрачные. Кстати надо было graphics делать пнг формата с альфаканалом, чтобы белый фон фигуры не был виден. Так вот, походу всегда будут вычисляться координаты квадратных границ фигур, что внесет визуальные пиксельные погрешности, которые иногда видны на слабых системах при перерисовке спрайтов.
Думаю это будет заметно и тут, когда фигур на арене будет много.
Научился: Запускать процесс движения кружков
На первом скриншоте со шлейфами для наглядности, на втором стал чистить арену, всё получилось очень красиво