- В строках 147-193 можно выделить общую часть и в зависимости от направления, которое нужно проверить, решать, что присваивать переменным row и col.
- Там же в строках 35-119 есть много вложенных условий, что препятствует комфортному чтению кода (некоторые можно объеденить через амперсанд).
- Сразу заметны неинформативные названия методов, меняющих вид блоков и бонусов. Можно сделать или пояснения комментариями, или переименовать их соответствующе, а то не выходит оценить разнообразие блоков без перебора вариантов непосредственно в игре.
- Здесь отведено место методам, суть которых в проверке, можно ли двигаться в определенную сторону, и непосредственно в перемещении героя, хотя на себя эту задачу берет класс PlayerMovement.jack.
- Здесь же можно отметить, что все методы делают одно и то же, просто с разными параметрами присвоения. Это тоже можно сделать в одном методе с выбором направления в условиях.
- Везде, где есть проверки на нажатие определенных клавиш, можно выделить их в константы, тогда не придется подписывать комментарии, где какая кнопка находится, и общая читаемость кода повысится
- Стоит пересмотреть подход ко многим булевым переменным и методам, возвращающим булевое значение, поскольку в некоторых участках кода булевые переменные с присвоенными им значениями нигде не используются, а где-то можно было бы не делать код уровня "если (условие) то (переменная = false) иначе (переменная = true)", если заменить это на "переменная = (условное выражение или метод с булевым возвращаемым значением)"
- В целом это очень примечательный проект с фантастической логикой внутри, где еще и настройки геймплея прикручены и вообще проделана достаточно комплексная работа с движком. Наша команда в восторге!