Никогда не думал, что можно придумать столько различных сюжетов для змейки.
Пройти игру я не смог, мой хайскор 45 :(
В целом ощущается очень приятно, для Hack'а игра идёт весьма плавно и аккуратно.
Змейка вполне отзывчивая, если клавишу вжимать что автомобильную педаль.
Графика на удивление приятная, применение различных оттенков серого мне понравилось, добавляет (насколько это вообще возможно, учитывая обстоятельства) некоего разнообразия, и вкупе с плавностью игра даёт очень даже хорошую картинку.
За локальные шутки про Иванову и Сазонову отдельное уважение :)
В перспективе интересно было бы посмотреть на различные уровни в игре, было бы интересным опытом (хоть лорно и не вписывается, ахахах)
На этом всё по игре, дальше - про код. (Форточку можете открыть заранее)
-
RandSeed.jack: Придирок к коду нет, как и к стилю. Немного странный момент, что класс описывает в сущности экран загрузки, нежели просто зерно генератора случайных чисел, но могу догадываться, почему так сделано. Абсолютно некритично, но название можно было бы подобрать более подходящее. А то и вовсе в класс не выделять... (но такую ересь мы, конечно, не поддерживаем).
-
Random.jack: В общем и целом, этот класс вполне можно было бы сделать и динамическим. (Тем более, что класс CobraGame всё-таки динамический, логичнее сделать динамический Random, чтобы в каждом CobraGame он был своим. You know the drill.) Конечно, в реалиях джека тратить память настолько безответственно - роскошь непозволительная, один занятый регистр вряд ли что-либо поменяет.
Но нареканий никаких к коду и стилю нет, за комментарии отдельный плюсик.
-
CobraGrid.jack: Комментарий к методу placePoint говорит о том, что метод выбирает позицию под точку и рисует её, но это неправда, так как рисует точку метод drawPoint, а placePoint не только не делает этого явно, но даже drawPoint не вызывает. В checkPoint можно было бы составить сложное выражение с логикой, используя &. И мне неочевидно, почему же это на самом деле не так. Но! это чисто косметическое замечание :) (я предупреждал, что буду душным) Очень полезные комментарии в этом файле, без шуток. Делают всю жуть с логикой занятости клеток гораздо более читаемой.
-
Cobra.jack: Придирок нет, не нашёл, к чему :) Опять хорошие комментарии.
-
CobraGame.jack: Мне покаазлось, или самая первая точка отрисовывается только ко второму циклу?))) По крайней мере я нигде не нашёл вызова drawPoint, который бы её отрисовал раньше. Забавный момент) Ещё момент с переписыванием истории кобры. Почему-то checkRewriteHistory не только check, но ещё и rewrite. Этот метод не должен вызывать метода rewriteHistory, потому что это вводит в заблуждение. А вызов просто добавить в код CobraGame после вызова checkRewriteHistory. В остальном нареканий нет, разве что большая часть комментариев в полях класса и в конструкторе бессмысленны. Полю "score" комментарий "//the score" не то что бы нужен...
Общее впечатление от проекта очень положительное, сделано хорошо и даже с душой, код аккуратный и - где не логика - читаемый :)