Как стать автором
Обновить

Комментарии 8

Спрайты оооочень напомнили Eliminator Boat Duel на Денди.

Они и есть!

Выглядит топорно. Вот эти «волшебные номера» (11.25, 22.5, 33.75, 45...) — это угол поворота, при котором рисуем конкретный спрайт. Например, при направлении 45 ± 5.625 градуса показываем спрайт под номером 4. При смене спрайтов почти наверняка придётся волшебные номера пересчитывать, но сейчас это точно работает.

Во-первых, в этом коде много избыточности, и он не оптимален. Здесь для получения индекса достаточно использовать деление с остатком если углы одинаковые и бинарный поиск по массиву — если разные (или хотя бы линейный, но без кучи сравнений). Такой алгоритм как раз позволит легко менять углы в зависимости от спрайта.


Во-вторых, при расчетах лучше использовать радианы вместо градусов, т.к. это нативная шкала измерения углов и для них не требуются лишние преобразования.

Сознательно не тратил время: конкретно тут для меня важнее было сделать быстро, пока был в запале )) Обычно делал очень быстро решение, потом небольшой рефакторинг, и поехал к следующей задаче. Если бы залип на оптимизации - точно до рабочего прототипа не добрался бы. Через неделю бы плюнул и оставил в недоделаном и нерабочем состоянии. Был опыт ))
А теперь да - выпишу себе в TODO, там уже несколько пунктов лежит, в ожидании ближайшего пакета свободного времени :)

По поводу радиан - да, я изначально делал в радианах, но то, что градусы прочно в голове засели - привело к тому что постоянно прикидывал сколько это градусов, и куда смотрит. В итоге сделал в градусах, чтобы проще было читать самому, и "изолировал" расчёт в классе игрока, чтобы наружу хотя бы не торчало. Исходил из того, что если будет нужен другой спрайт - можно класс игрока отнаследовать, и внутри расчёты менять под новую картинку.

НЛО прилетело и опубликовало эту надпись здесь

Симпатичная игрушка.
Предлагаю добавить в TODO взаимодействие с берегами: либо конец игры, либо штрафные очки и потерю всех звёздочек.

Да, код с кучей if-оф, это, конечно, не лучший вариант. Могут историю с "ЩИ!!!! Симулятор жестокости" припомнить.

А так неплохой результат. Я поиграл.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий