JavaRush/Java блог/Архив info.javarush/Морской бой и Swing
zor07
31 уровень

Морской бой и Swing

Статья из группы Архив info.javarush
участников

Всем доброго времени суток

Будучи еще школьником и изучая программирование у репетитора (Pascal), как и все, я захотел написать игрушку. С репетитором написал консольную игру Быки и Коровы, но раздутое чсв требовало чего-нибудь посерьезнее. Выбор остановился на морском бое. Стал писать его на паскале. В планах была консольная игра, в которой компьютер просто сообщает игроку адрес ячейки, по которой он стреляет, а игрок, в свою очередь, сообщает компьютеру адрес своей ячейки. Все тогда застопорилось на том, что не смог научить компьютер "добивать" раненные кораблики, а дописывать игру, в которой компьютер рандомно стреляет по полю не хотелось. Прошло 9 лет, открыл для себя javarush, на 21-ом уровне проснулось чсв и потребовало морской бой. Основными целями были:
  • Наличие интерфейса
  • Адекватная стрельба компьютера (он должен добивать раненые корабли)
Первую цель достиг с помощью библиотеки Swing А вторую с помощью библиотеки КостыльВелосипедИВераВБога Всем заинтересовавшимся предлагаю опробовать сего франкенштейна на GitHub Качеством кода, признаться, недоволен сам, но как делать лучше пока не знаю. Так что буду признателен за конструктивную критику и любые комментарии. Всем спасибо!
Комментарии (20)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Samson
Уровень 19
26 мая 2016, 15:11
спасибо, не разочарует) дуамю даже поможет)
Grif
Уровень 11
26 мая 2016, 15:39
:) Это плохой пример, но может чем-то и поможет :)
Samson
Уровень 19
26 мая 2016, 12:25
можешь скинуть пожалуйста код консольной версии мне интересно взглянуть. сам недавно начал Swing учить
Grif
Уровень 11
26 мая 2016, 13:09
Боюсь он Вас разочарует :) Там хорошим стилем и не пахнет, я сам недавно пересматривал… матюгнулся пару раз :)

но если есть таки желание:
Страшный говноКод консольной версии
Grif
Уровень 11
26 мая 2016, 14:17
Это наверное будет как учебное пособие которое можно назвать так — «Вот почему надо заниматься проектированием до начала а не во время написания приложения :)» сопровождение этого кода не то, чтобы затрудненно, вообще почти не реально да и читабельность слабая :).
Grif
Уровень 11
24 мая 2016, 22:55
А вообще я думаю на JavaRush можно было бы не только по играм, но и по другим проектам организовывать конкурсы, отбирать наиболее удачные и складывать в открытый для скачивания архив, со временем сделать базу своих приложений которые можно бесплатно раздавать и чем черт не шутит ещё и таким образом увеличить свою аудиторию :) Самое интеренсное, что при удачном стечении обстоятельств это может быть всем выгодно:)
Grif
Уровень 11
24 мая 2016, 21:32
Кстати, у меня родилась маленькая идея… старндартный морской бой это интересно, но что если делать по уровням и слегка менять декорации, например:
1) 1-й уровень — надводный бой, 2-й уровень подводный бой, 3-й уровень морская авиация и т.д.;
2) С каждым уровнем повышать интелект ПК… 1-й рандомный обстрел, 2-й обстрел с добиванием, 3-й использование логики уменьшения количества обстреливаемых полей в два раза (я её назвал шахматная доска), 4-й применение логики при расстановке кораблей (увеличение свободного пространства для маленьких кораблей) и т.п.;

В общем с таким успехом ещё немного пофантазирую и глядишь начну команду подыскивать для совместного проекта «МОРСКОЙ БОЙ» :))) :D
zor07
Уровень 31
24 мая 2016, 21:38
А еще лучше сделать сетевую игру с возможностью «прокачки». Игровую валюту, всякие ранги. Что то вроде защита от 1 выстрела соперника на любой корабль, арт обстрел с воздуха, помощь авиации (рандомные выстрелы в несколько клеток сразу), разведка (открытие определенного количества клеток на поле соперника), возможность перемещать корабли по полю во время игры… Обволокнуть все это в приятный интерфейс. Поле для фантазии действительно общирное )
Grif
Уровень 11
24 мая 2016, 21:53
Да да да :) Только подходить нужно тогда серьезней:

1) Держатель проекта — он же заказчик;
2) Архитектор;
3) Дизайнер;
4) Проект менеджер;

Мозговой штурм, этапы проектирования, временные отрезки выполнения модулей, и т.д. :)

А прежде всего необходимо общее пространство разработки Git или нечно подобное (у меня это совсем слабое место… ничем кроме дропбокса не пользовался пока ...).
EvIv
Уровень 30
24 мая 2016, 22:26
И сетевую игру на андроиде с возможностью играть по bluetooth, чтобы без всяких серверов и т.п. И рабочего интернета на устройстве не надо.
В школьных классах игра будет хитом =)
Grif
Уровень 11
24 мая 2016, 22:29
:) Сервер таки нужен :)
Только писать его самим скорее всего прийдётся :)
Grif
Уровень 11
24 мая 2016, 22:37
А вообще как бизнес идея, в качестве какой-то из версий мозгового штурма… имеет право на жизнь :) И не только для школьников, но и так же для офис работников с сильно порезанным админами нетом :) К тому же насколько я помню сетевой обмен по WiFi ни кто не отменял :) Только вот зарабатывать получится не на самой игре а на рекламме ресурса с которого её качать будут :)
EvIv
Уровень 30
24 мая 2016, 23:41
думаю, там можно на чистых сокетах попробовать соединяться. хотя я bluetooth еще не ковырял, может там по-другому всё совершенно =)
Grif
Уровень 11
25 мая 2016, 06:02
Я имел в виду Сервер не как генератор HTML кода, а сервер как модуль/приложение которое позволяет взаимодействовать нескольким пользователям… например — пользователь с самым мощным девайсом выполняет все рассчёты, а клиенты только выводят полученные данные на экран своего устройства, таким образом можно добиться экономии ресурсов, более простой синхронизации и визуально одинаковой производительности на всех устройствах… хотя конечно возможны варианты :)
Torin
Уровень 27
23 мая 2016, 18:29
Javarush даешь конкурсы на создание игр в массы! Давайте уже не будем кривить душой, все блин игры клепаем, инфа сотка. Да весь ресурс построен на игровой механике, так что давайте… я жду :))
Grif
Уровень 11
22 мая 2016, 11:45
Я на 21-м уровне, поигрался в Ваш морской бой, впечатления хорошие. Пожелание — улучшить графику.

Раз пошла такая каша, предлагаю скриншоты своих варинатов морского боя.

Консольная версия:


Свинг версия


Консольную версию делал на 10-м уровне, реализовал два уровня сложности.
Свинговую версию пока не доделал, решил логику заново переписать, да намудрил с потоками всё работает, но логика слабая и вообще надо все доделывать и переделывать… доучу паттерны, потом подумаю над переработкой :)
zor07
Уровень 31
22 мая 2016, 12:23
Спасибо.
Консольная версия у вас прямо таки огонь )
Grif
Уровень 11
22 мая 2016, 13:01
И Вам спасибо за оценку. Мне чёт самому консольная версия больше нравится :)
Хотя и на Дизайн СВИНГовой потратил достаточно много времени, просто реализация СВИНГовой сложнее, потому и упростил по максимуму, хотя кораблики лучше :)
kasper1987
Уровень 20
22 мая 2016, 13:51
Супер! ) Консольная более красочно выглядит. Можно сказать окунулся в прошлое. Мне кажется Свинг не подходит. Уж больно все заморочено. Стоит попробовать на ЛибГДХ???
Grif
Уровень 11
22 мая 2016, 16:08
Спасибо:) Я не знаю ЛибГДХ… может FX позже изучу :) Надо же… чёрнобелая более красочно выглядит чем цветная :) Спасибо за подсказку… у меня жена просто просила сделать что-то в стиле морского боя, раз уж я занимаюсь :) Только ей лень буковки набирать, если буду переделывать буду копировать стиль консольной версии :)