main
main copied to clipboard
BattleShip Plugin - разработка, пожелания, предложения
Original issue 604 created by psi-plus on 2014-12-28T19:43:29.000Z:
Обсуждение и тест плагина, реализующего игру Морской бой.
Игра реализована на основании протокола, описанного тут: http://svn.xmpp.ru/repos/tkabber/trunk/tkabber-plugins/battleship/proto Обычно я не выкладываю не завершенное, но пока нет времени. Пусть полежит, чтоб не потерялось.
Возможности:
- Можно играть с несколькими противниками одновременно в том числе несколько партий с одним противником.
- Возможно играть через приват конференций. В конфах должны быть разрешены iq запросы.
- Игральная доска масштабируемая.
- После завершения игры и после обмена на доске отображаются ранее не открытые корабли противника, если таковые остались. В текущей версии ткаббера это не реализовано.
Особенности:
- Количество и размер кораблей нестандартно: 5, 4, 3, 2, 2, 1, 1. Это особенность реализации в ткаббере. Другой набор кораблей он не принимает.
- При инициализации досок и после завершения игры передаются достаточно большие станзы. Это обусловлено тем, что перед игрой каждая клетка и каждый корабль подписывается и происходит обмен хэшами, дабы избежать махинаций.
Еще не реализовано:
- Корабли нельзя расставлять самостоятельно. Пока корабли размещаются случайным образом, нужно всего лишь подтвердить расположение. Код еще не написан.
- Звуки не работают. Весь код есть, настройки тоже. Надо только расставить соответствующие вызовы.
- История ходов предусмотрена, но не отображается. Тоже не сложно.
- Есть некоторые проблемы с обновлением доски оппонента. Пока еще не выяснил причину. Надо вылавливать.
- Возможно имеет смысл поля вокруг уничтоженных кораблей выделять по-другому.
- Возможно имеет смысл вообще всю доску перерисовать. Мои художества на любителя.
- Не помешает чистка кода. Много всего переделывалось, код местами ужасен.
Жду пожеланий и предложений из тех что не описаны выше. Ну и, чего уж, багов конечно.
Comment #1 originally posted by psi-plus on 2015-01-12T14:57:03.000Z:
Я думаю плагину не помешает следующее:
- информацию о пустом месте вокруг корабля, что выводится после его полоного уничтожения выводить опционально
- о победе и поражении сообщать диалогом с вопросом "хотите начать игру заново?" ну и по обоюдному согласию сторон начинать заново, иначе закрывать игровое поле
Что необязательно, но можно:
- когда ход делает другой игрок, то затемнять игровое поле. Заодно когда поле с кораблями утверждено, то затемнять и его
- можно корабли сделать готовым набором (можно картинками) и перетаскиванием (с панельки скажем) размещать корабль (ну там кнопку повернуть тоже добавить или два вида кораблей сделать под 0 и под 90). Это значительно ускорит процесс игры
Comment #2 originally posted by psi-plus on 2015-01-12T15:21:31.000Z:
- информацию о пустом месте вокруг корабля, что выводится после его полоного уничтожения выводить опционально
Про это написано в разделе "Еще не реализовано". Планирую на месте вокруг корабля рисовать не точки а затемнять клетки. Визуально должно лучше смотреться. Реально выстрелы вокруг корабля и так не проставляются.
- о победе и поражении сообщать диалогом с вопросом "хотите начать игру заново?" ну и по обоюдному согласию сторон начинать заново, иначе закрывать игровое поле
Тут есть проблема: есть немалый шанс что оба нажмут "Да" и тогда приглашение прилетит обоим сторонам. И вообще, лишние диалоги порождают лишние проблемы. Допустим, один нажал "да", другой ничего не успел сделать. У него уже будет два окна диалога. Мое мнение: лучше использовать соответствующий пункт меню.
Про затемнение досок подумаю, наверно действительно нагляднее будет. На счет ускорения процесса игры - не уверен. Много быстрее таскать корабли уже находящиеся на поле, чем выбирать из набора и все равно таскать.
Мне кажется автор этот плагин забросил
Мне кажется автор этот плагин забросил
А мне кажется, нет. Мало того, автор хотел недавно его допилить, но решил, что сначала надо историю релизнуть. Он в dev ведь никому не мешает?
Нет конечно, пускай лежит )