• ,

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

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

Будучи еще школьником и изучая программирование у репетитора (Pascal), как и все, я захотел написать игрушку. С репетитором написал консольную игру Быки и Коровы, но раздутое чсв требовало чего-нибудь посерьезнее. Выбор остановился на морском бое. Стал писать его на паскале. В планах была консольная игра, в которой компьютер просто сообщает игроку адрес ячейки, по которой он стреляет, а игрок, в свою очередь, сообщает компьютеру адрес своей ячейки. Все тогда застопорилось на том, что не смог научить компьютер «добивать» раненные кораблики, а дописывать игру, в которой компьютер рандомно стреляет по полю не хотелось.

Прошло 9 лет, открыл для себя javarush, на 21-ом уровне проснулось чсв и потребовало морской бой.
Основными целями были:
  • Наличие интерфейса
  • Адекватная стрельба компьютера (он должен добивать раненые корабли)

Первую цель достиг с помощью библиотеки Swing
А вторую с помощью библиотеки КостыльВелосипедИВераВБога

Всем заинтересовавшимся предлагаю опробовать сего франкенштейна на GitHub

Качеством кода, признаться, недоволен сам, но как делать лучше пока не знаю. Так что буду признателен за конструктивную критику и любые комментарии.

Всем спасибо!

23 комментария

Grif
  • Grif
  • +7
  • Комментарий отредактирован 2016-05-22 11:45:44 пользователем Grif
Я на 21-м уровне, поигрался в Ваш морской бой, впечатления хорошие. Пожелание — улучшить графику.

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

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


Свинг версия


Консольную версию делал на 10-м уровне, реализовал два уровня сложности.
Свинговую версию пока не доделал, решил логику заново переписать, да намудрил с потоками всё работает, но логика слабая и вообще надо все доделывать и переделывать… доучу паттерны, потом подумаю над переработкой :)
zor07
Спасибо.
Консольная версия у вас прямо таки огонь )
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-05-22 13:01:59 пользователем Grif
И Вам спасибо за оценку. Мне чёт самому консольная версия больше нравится :)
Хотя и на Дизайн СВИНГовой потратил достаточно много времени, просто реализация СВИНГовой сложнее, потому и упростил по максимуму, хотя кораблики лучше :)
aristotel506
Вдохновился вашей игрой и играми других обитателей форума. Сам нахожусь на 23 уровне Javarush, но больно хочется уже пуститься в бой. Появилась идея своего первого приложения. Это должна быть игра на память(переворачивать карточки и отыскивать пары). Состоять будет из 4 уровней. 1ур — поле 2х2, 2ур — 4х4, 3 ур -6х6, EXTRA ур — 8х8, суть игры как можно быстрее пройти все 4 уровня. И также хочется в виде карточек иметь не просто цифры или символы, а какие-нибудь jpg картинки(думаю героев любимых сериалов и фильмов)…
Вообщем возможно вы знаете какие мне технологии нужно изучить, чтобы реализовать эту игрушку???? Если кто-то знает, отпишитесь пожалуйста в этот топик или в личку) Благодарю,
zor07
На самом деле, если вернуть время назад, я бы не стал писать морской бой, а прошел бы еще несколько уровней на явараш. Т.к. после 20-го уровня, даются большие задачки, в рамках которых и получаешь начальный опыт написания небольших приложений. Если бы я писал этот морской бой сейчас, я бы многое сделал иначе.
Так что исходя из своего опыта могу посоветовать во-первых, дойти хотя бы до 26-го уровня, а во-вторых посмотреть каким образом пишутся подобные програмки на ютюбе (я лично поступал так). Посмотрите что и для чего используется людьми и выберите для себя что-нибудь подходящее.
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-08-23 23:20:27 пользователем Grif
Все относительно, нет четких правил как реализовывать свои творческие способности и как правильнее учиться, однако для выбора пути, вам нужно четко представлять как это все будет выглядеть и происходить хотя бы на абстрактном уровне… схемки и т.д., а когда вы будете знать, а может даже иметь готовый макет, тогда и всё остальное будет проще, может Вам свинга с головой хватит, но ни кто Вам четкого ответа не даст если нет плана действий и полного понимания того, что должно получиться.
kasper1987
Супер! ) Консольная более красочно выглядит. Можно сказать окунулся в прошлое. Мне кажется Свинг не подходит. Уж больно все заморочено. Стоит попробовать на ЛибГДХ???
Grif
  • Grif
  • +2
  • Комментарий отредактирован 2016-05-22 16:08:57 пользователем Grif
Спасибо:) Я не знаю ЛибГДХ… может FX позже изучу :) Надо же… чёрнобелая более красочно выглядит чем цветная :) Спасибо за подсказку… у меня жена просто просила сделать что-то в стиле морского боя, раз уж я занимаюсь :) Только ей лень буковки набирать, если буду переделывать буду копировать стиль консольной версии :)
Torin
Javarush даешь конкурсы на создание игр в массы! Давайте уже не будем кривить душой, все блин игры клепаем, инфа сотка. Да весь ресурс построен на игровой механике, так что давайте… я жду :))
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-05-24 21:32:18 пользователем Grif
Кстати, у меня родилась маленькая идея… старндартный морской бой это интересно, но что если делать по уровням и слегка менять декорации, например:
1) 1-й уровень — надводный бой, 2-й уровень подводный бой, 3-й уровень морская авиация и т.д.;
2) С каждым уровнем повышать интелект ПК… 1-й рандомный обстрел, 2-й обстрел с добиванием, 3-й использование логики уменьшения количества обстреливаемых полей в два раза (я её назвал шахматная доска), 4-й применение логики при расстановке кораблей (увеличение свободного пространства для маленьких кораблей) и т.п.;

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

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

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

А прежде всего необходимо общее пространство разработки Git или нечно подобное (у меня это совсем слабое место… ничем кроме дропбокса не пользовался пока ...).
EvIv
И сетевую игру на андроиде с возможностью играть по bluetooth, чтобы без всяких серверов и т.п. И рабочего интернета на устройстве не надо.
В школьных классах игра будет хитом =)
Grif
:) Сервер таки нужен :)
Только писать его самим скорее всего прийдётся :)
EvIv
думаю, там можно на чистых сокетах попробовать соединяться. хотя я bluetooth еще не ковырял, может там по-другому всё совершенно =)
Grif
Я имел в виду Сервер не как генератор HTML кода, а сервер как модуль/приложение которое позволяет взаимодействовать нескольким пользователям… например — пользователь с самым мощным девайсом выполняет все рассчёты, а клиенты только выводят полученные данные на экран своего устройства, таким образом можно добиться экономии ресурсов, более простой синхронизации и визуально одинаковой производительности на всех устройствах… хотя конечно возможны варианты :)
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-05-24 22:37:56 пользователем Grif
А вообще как бизнес идея, в качестве какой-то из версий мозгового штурма… имеет право на жизнь :) И не только для школьников, но и так же для офис работников с сильно порезанным админами нетом :) К тому же насколько я помню сетевой обмен по WiFi ни кто не отменял :) Только вот зарабатывать получится не на самой игре а на рекламме ресурса с которого её качать будут :)
Grif
А вообще я думаю на JavaRush можно было бы не только по играм, но и по другим проектам организовывать конкурсы, отбирать наиболее удачные и складывать в открытый для скачивания архив, со временем сделать базу своих приложений которые можно бесплатно раздавать и чем черт не шутит ещё и таким образом увеличить свою аудиторию :) Самое интеренсное, что при удачном стечении обстоятельств это может быть всем выгодно:)
Samson
можешь скинуть пожалуйста код консольной версии мне интересно взглянуть. сам недавно начал Swing учить
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-05-26 13:09:55 пользователем Grif
Боюсь он Вас разочарует :) Там хорошим стилем и не пахнет, я сам недавно пересматривал… матюгнулся пару раз :)

но если есть таки желание:
Страшный говноКод консольной версии
Grif
  • Grif
  • 0
  • Комментарий отредактирован 2016-05-26 14:17:10 пользователем Grif
Это наверное будет как учебное пособие которое можно назвать так — «Вот почему надо заниматься проектированием до начала а не во время написания приложения :)» сопровождение этого кода не то, чтобы затрудненно, вообще почти не реально да и читабельность слабая :).
Samson
спасибо, не разочарует) дуамю даже поможет)
Grif
:) Это плохой пример, но может чем-то и поможет :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.