JavaRush/Java блог/Архив info.javarush/Первый проект “Морской бой”!
Kashey
11 уровень

Первый проект “Морской бой”!

Статья из группы Архив info.javarush
участников
Привет Джаварашовцам! Потихоньку начинаю собирать портфолио, и представляю вам мой первый проект “Морской бой”. Исходники на GitHub’e скомпилированный здесь. Пояснения и подсказки в коде написаны на быструю руку и скорее всего с ошибками. В игре пока один уровень сложности, компьютер пока стреляет случайным образом, и даже когда попадет все равно продолжает лупить рандомно. Пока мне кажется, что сильно перегружен класс Battle, может стоит перенести из него в отдельные классы заполнение поля караблями и печать полей? Библиотека JCDP позволяет выделять цветом напечатанное в cmd или терминале, только почему-то при использовании ColoredPrinterWIN в винде печатается нормально а в ИДЕЕ цвет игнорируется, если использовать ColoredPrinter то наоборот )) Буду рад советам более опытных программеров по улучшениям, красоте кода, выявлению возможных багов и т.д.
Комментарии (13)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sygurny
Уровень 26
29 апреля 2015, 15:38
я так понял, что нужна JVM для запуска, а реально ли такие игры в экзешники перевести? (я нуб)
Kashey
Уровень 11
29 апреля 2015, 15:40
JVM в любом случае нужна, джава без нее работать не будет. в exe можно.
Sygurny
Уровень 26
29 апреля 2015, 17:59
а как в exe перекомпилировать?
Kashey
Уровень 11
29 апреля 2015, 18:03
В интернете есть туториалы, видел, но не стал заморачиваться.
timurnav
Уровень 21
28 апреля 2015, 22:10
по игре, я бы вынес в отдельные классы:
1.ConsoleHelper — ввод и вывод в консоль,
2.BattleField — поле, список активных/убитых кораблей, аэкземпляр этого класса бы уже назывался именем пользователя или компьютером.
3. абстрактный класс Ship, наследники: Battleship, Cruiser, Destroyer, Submarine. а сами списки кораблей — поля класса BattleField.
4. вся игровая логика — статические методы класса GameLogic: createField, manualPlacingPlayersShips, playerFireAndCheck и прочее. вот вопрос, рандомное заполнение поля игрока и компьютера чем нибудь отличается? я так понял что нет, так зачем повторять код?)классы разные, но пусть они наследуются от одного предка имеющего такое поле, которое можно заполнять в одном методе, а не в двух

игра очень понравилась, я могу быть в чем-то не прав, я совсем не опытный программист, просто я недавно тоже начал писать кое-какие игры) если интересно, вот первая, вот вторая

и вероятно, третьей игрой будет морской бой!)
Kashey
Уровень 11
29 апреля 2015, 09:36
Спасибо за коментарии и предложения,
давно уже с этой игрой ничего не делаю. Часть того, что ты написал, я использовал в первом варианте Тетриса, который потом переделал под swing. Теперь работаю над этим
timurnav
Уровень 21
28 апреля 2015, 21:34
очень прикольная игра!
Gloomy
Уровень 8
7 февраля 2015, 00:37
А почему бы не сделать ИИ? Если противник попал по кораблю, то пусть стреляет в следующем ходу по соседним клеткам, а если попал и не затопил, то следующий выстрел либо далее, либо в противоположный конец корабля.
Kashey
Уровень 11
7 февраля 2015, 00:39
так я и написал
компьютер пока стреляет случайным образом
Olegator3
Уровень 37
6 февраля 2015, 05:30
Можешь подробно описать как с помощью библиотеки сделал цветным консоль и все остальное?
Kashey
Уровень 11
6 февраля 2015, 13:59
Вот ссылка на GitHub проекта github.com/dialex/JCDP, там есть пример,
от себя добавлю, что в винде работает только с объектом класса ColoredPrinterWIN, в линуксе с любым классом.
MrBaseMax
Уровень 41
5 февраля 2015, 01:00
Поиграл в идее, с цветом. Симпатично все, работает. Молодец!
Kashey
Уровень 11
5 февраля 2015, 18:14
Спасибо! в идее цвета блеклые какие-то, в терминале и cmd симпатичнее