Привет Джаварашовцам! Потихоньку начинаю собирать портфолио, и представляю вам мой первый проект “Морской бой”. Исходники на GitHub’e скомпилированный здесь.
Пояснения и подсказки в коде написаны на быструю руку и скорее всего с ошибками. В игре пока один уровень сложности, компьютер пока стреляет случайным образом, и даже когда попадет все равно продолжает лупить рандомно.
Пока мне кажется, что сильно перегружен класс Battle, может стоит перенести из него в отдельные классы заполнение поля караблями и печать полей?
Библиотека JCDP позволяет выделять цветом напечатанное в cmd или терминале, только почему-то при использовании ColoredPrinterWIN в винде печатается нормально а в ИДЕЕ цвет игнорируется, если использовать ColoredPrinter то наоборот ))
Буду рад советам более опытных программеров по улучшениям, красоте кода, выявлению возможных багов и т.д.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
1.ConsoleHelper — ввод и вывод в консоль,
2.BattleField — поле, список активных/убитых кораблей, аэкземпляр этого класса бы уже назывался именем пользователя или компьютером.
3. абстрактный класс Ship, наследники: Battleship, Cruiser, Destroyer, Submarine. а сами списки кораблей — поля класса BattleField.
4. вся игровая логика — статические методы класса GameLogic: createField, manualPlacingPlayersShips, playerFireAndCheck и прочее. вот вопрос, рандомное заполнение поля игрока и компьютера чем нибудь отличается? я так понял что нет, так зачем повторять код?)классы разные, но пусть они наследуются от одного предка имеющего такое поле, которое можно заполнять в одном методе, а не в двух
игра очень понравилась, я могу быть в чем-то не прав, я совсем не опытный программист, просто я недавно тоже начал писать кое-какие игры) если интересно, вот первая, вот вторая
и вероятно, третьей игрой будет морской бой!)
давно уже с этой игрой ничего не делаю. Часть того, что ты написал, я использовал в первом варианте Тетриса, который потом переделал под swing. Теперь работаю над этим
от себя добавлю, что в винде работает только с объектом класса ColoredPrinterWIN, в линуксе с любым классом.