Comments 8
Хотелось бы посмотреть проект в виде гит-репозитария, в котором я если бы делал ревью, то мог бы отметить следующее:
Никогда нельзя доверять пользователю (даже в учебном или пет-проекте), и следовало бы перенести логику игры на бекенд.
Но даже если оставить как есть, то я бы предложил отделить логику игры (реализуемые правила и механики) от представления - т.е. это был бы класс/библиотека, который реализовывал бы все механики игры, и отдельно были бы компоненты, которые рисуют поле/корабли/статистику/etc
Vuex уже морально устарел и вместо него даже его разработчики рекомендуют использовать Pinia, который проще и поддерживает тайпскрипт. Но в целом стор в этом приложении и не нужен.
Не очевидно почему в статье упоминается Vue, и для чего он вообще нужен тут?
у автора в профиле есть ссылка на профиль GitHub, там можно найти вот эти репозитории:
https://github.com/greenDev7/battleship
https://github.com/greenDev7/battleship-back
Доброго дня!
Возможно для опытного пользователя и нельзя доверять, но для среднестатистического я не думаю что это будет критично. Хотя все равно не понятно чем логика на фронте опасна.
В принципе, я и вынес логику в отдельный класс (GameProcessManager.ts)
Просто уже работал с Vuex, поэтому решил его заюзать,
Этот пункт мне совсем не понятен - что значит "для чего он [Vue] вообще тут нужен" ? )) Я выложил исходники (в конце статьи) - можете посмотреть.
Проблема в том, что положение кораблей противника передается в клиент. Добавляй игру на деньги и сыграем с тобой - покажу в чем проблема :)
Вот, для примера, библиотека battleships-engine - она не знает ни о вебсокетах, ни о Vuex, ни о канвасе, но полностью реализует правила игры и только их.
Посмотрел репу - думаю, остальные пункты мне нет смысла обсуждать)
http://ru.battleship-game.org здесь играю
Игра переехала сюда:
Пишем морской бой на VueJS и Python