Комментарии 8
Спрайты оооочень напомнили Eliminator Boat Duel на Денди.
Выглядит топорно. Вот эти «волшебные номера» (11.25, 22.5, 33.75, 45...) — это угол поворота, при котором рисуем конкретный спрайт. Например, при направлении 45 ± 5.625 градуса показываем спрайт под номером 4. При смене спрайтов почти наверняка придётся волшебные номера пересчитывать, но сейчас это точно работает.
Во-первых, в этом коде много избыточности, и он не оптимален. Здесь для получения индекса достаточно использовать деление с остатком если углы одинаковые и бинарный поиск по массиву — если разные (или хотя бы линейный, но без кучи сравнений). Такой алгоритм как раз позволит легко менять углы в зависимости от спрайта.
Во-вторых, при расчетах лучше использовать радианы вместо градусов, т.к. это нативная шкала измерения углов и для них не требуются лишние преобразования.
Сознательно не тратил время: конкретно тут для меня важнее было сделать быстро, пока был в запале )) Обычно делал очень быстро решение, потом небольшой рефакторинг, и поехал к следующей задаче. Если бы залип на оптимизации - точно до рабочего прототипа не добрался бы. Через неделю бы плюнул и оставил в недоделаном и нерабочем состоянии. Был опыт ))
А теперь да - выпишу себе в TODO, там уже несколько пунктов лежит, в ожидании ближайшего пакета свободного времени :)
По поводу радиан - да, я изначально делал в радианах, но то, что градусы прочно в голове засели - привело к тому что постоянно прикидывал сколько это градусов, и куда смотрит. В итоге сделал в градусах, чтобы проще было читать самому, и "изолировал" расчёт в классе игрока, чтобы наружу хотя бы не торчало. Исходил из того, что если будет нужен другой спрайт - можно класс игрока отнаследовать, и внутри расчёты менять под новую картинку.
Симпатичная игрушка.
Предлагаю добавить в TODO взаимодействие с берегами: либо конец игры, либо штрафные очки и потерю всех звёздочек.
Да, код с кучей if-оф, это, конечно, не лучший вариант. Могут историю с "ЩИ!!!! Симулятор жестокости" припомнить.
А так неплохой результат. Я поиграл.
Как я прототип игры писал и учился генерировать лабиринты