Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Форум посвящен сайту www.mahjong.ru: сообщения администратора и модераторов, сообщения об ошибках, критика и пожелания.
  • Страница:
  • 1
  • 2

ТЕМА: MahJong Java Player

MahJong Java Player 15 Май 2009 14:02 #1344

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Не хотел конечно показывать даже не полработы а только начало работы, но покажу.
Может кто-нибудь еще что-то присоветует.
Последнюю неделю занимался тем что пытался создать плеер для просмотра маджонг-партий.
Так как с flash я не силен да и возможности мягко выражаясь у него не те решил сделать его в виде java-апплета.
Посмотреть что получилось можно тут.
Файл откуда читается ситуация находится тут.
Для просмотра нужна поддержка явы в браузерах (если нет, то можно скачать и установить здесь).
Так все ссылки розданы :)

Теперь что я хотел сделать:
1. Загружаем файл ситуации на сервер там где можно получить прямую ссылку
2. Вызываем апплет с параметром адреса на этот сайт
3. Согласно файлу он строит начальную ситуацию
4. Позволяет проигрывать ход игры
5. Возможно в будущем добавлю инвариантность разных ситуаций (т.е. выбор вариантов развития ситуации)

Пока реализовал загрузку начальных рук и открытых тайлов и отображение их на столе.
Теперь как это можно использовать у себя? Достаточно будет положить апплет на сайте и сделать страничку для его вызова с параметрами. Я рассматривал возможность включения апплета в форум, например как здесь используя Boardcode. Это возможно - хотя на FireBoard делается изменением файлов (как минимум одного, если нужно еще добавить кнопку, то нескольких), хотя к пример по опыту с IPB форумом это делается все из админки.
В апплете на текущий момент использовал картинки тайлов из 4winds, но можно будет легко заменить на что-то лучшее.

Жду замечаний и предложений :)
Администратор запретил публиковать записи.

RE: MahJong Java Player 15 Май 2009 18:13 #1345

  • c00pdNnatop
  • c00pdNnatop's Avatar
  • Вне сайта
  • Модератор
  • Сообщений: 492
  • Спасибо получено: 2
WarL0ck,

молодец! жаль я сам не очень силён в веб-языках (если что, ВБА средне знаю).

Основная проблема всё же - откуда брать логи партий??? Вручную их как-то писать проблематично.

Ты не пробовал во время игры (или проигрывания партии) на МТ использовать netcat? Возможно, если данные передаются нешифрованно, можно как-то выдернуть лог игры...
Администратор запретил публиковать записи.

RE: MahJong Java Player 15 Май 2009 19:30 #1346

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Нет не пробовал, там скорей всего краткие команды и пингующие запросы. И скорей всего в бинарном виде. Если записывать, то можно придумать утилиту, но из-за лимита на ходы можно не успевать записывать...
Администратор запретил публиковать записи.

RE: MahJong Java Player 16 Май 2009 00:18 #1347

  • tarabarsky
  • tarabarsky's Avatar
  • Вне сайта
  • Маджонг!
  • Сообщений: 1022
  • Спасибо получено: 3
WarL0ck, отличная реализация! Пусть и в статике пока. Всячески поддерживаю. Мы обязательно найдем возможность прикрутить этот движок и к форму, и к сайту, если разрешите.

Кости в 4winds, в общем-то, неплохие, вопрос лишь в авторских правах. Не хотелось бы использовать чужие рисунки без разрешения. Но, я так понимаю, заменить их потом будет не сложно? Чтобы не останавливать разработку сейчас из-за этой проблемы...

По функционалу хотелось бы иметь возможность не только читать файлы с записью партий, но и создавать такие файлы через графический интерфейс программы, т.е. чтобы программа работала и в обратном направлении. Это серьезная задача?

А что касается получения данных с МТ, я попробую спросить непосредственно администрацию сервера.
Европейская Ассоциация Маджонга (www.mahjong-europe.org)
Администратор запретил публиковать записи.

RE: MahJong Java Player 16 Май 2009 00:55 #1348

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Сегодня локально ставил joomla с fireboard для пробы прикручивания: нашел где и сделал пока прикручивание на уровне bbcode ([mjjp=url][/mjjp]), в принципе понял как сделать кнопку ввреху на тулбар. Т.е. все реально делается исправлением 2-3 скриптов.
Насчет разрешения - для этого все и делается :) (там есть кнопка ? она уже работает)
Кости, да не хотелось бы использовать 4winds хотя ням-ням в их базе знаний есть уменьшенные копии :)
И вообще хотел зашить 2-3 набора (большие адаптированные, неадаптированные, уменьшенные) и сделать выбор параметром. Дело в том, что использование текущих тайлов увеличивает размер апплет до 600 на 600, если использовать тайлы поменьше соответсвенно апплет уменьшается.
Заменить не сложно - это просто каталог с картинками внутри архива (1b.gif rd.gif).
По редактору файлов думаю не сложно будет - основы уже нарабатываются на плеере, будет использоваться тот код.
Вот еще кину пару рабочих комментов из кода:
/* вычисление веса тайла для сортировки
* порядок [простые 1-9]->[бамбуки-символы-доты])->
* [ветра E-S-W-N][драконы R-W-G]
* бамбуки 0001 0000 - x10 + 1-9
* символы 0010 0000 - x20 + 1-9
* доты 0011 0000 - x30 + 1-9
* ветра 0100 0000 - x40 + 1-4
* драконы 0101 0000 - x50 + 1-3
* т.е. 5d = x35
*/
/* Описание структуры файла
* Строка начинается с символа \"#\" - комментарий
* Запись состоит из одной строки, команды записи разделяются символом \":\"
*
* Общие понятия:
* 1. Ветра: E - восток, W - запад, S - юг, N - север
* 2. Тайлы: имя тайла от 2 до 4 символов (регистр любой)
* > 1 символ - номинал ([1-9] - простые тайлы, [r-w-g] - драконы,[e-s-w-n] - ветра)
* > 2 символ - масть ([b-c-d] - простые тайлы, [d] - драконы, [w] - ветра)
* > 3 символ (необязательный) - флаг красного тайла (r) или флаг повернутого (~)
* > 4 символ (необязательный) - флаг повернутого (~) если установлен флаг повернутого (~)
* Спецсимволы тайлов: oo - пустое место, xx - закрытый тайл (к ним поворот не применяется)
* Пример: 3с - тройка символов, 5br - красная пятерка бамбуков, 9d~ - повернутая девятка дотов
* rd - красный дракон, sw~ - повернутый южный ветер
*
* Описание команд:
* 1. Place - место и имя игрока (по умолчанию Player1,Player2,Player3,Player4)
* Пример: Place:E:Ivan - игрок Ivan на востоке
* 2. Hand - начальная рука (по умолчанию пусто)
* Пример: Hand:E:1c 1c 1c 2c 3c 4c 5cr 6c 7c 8c 9c 9c 9c (девять врат)
* 3. Open - начальные открытые тайлы (по умолчанию пусто)
* Пример: Open:N:xx 9c 9c xx rd rd rd 1b 2b 3b (закрытый конг 9 символов, панг красных драконов, чоу бамбуков с 1)
* 4. Discard - начальные снесеные тайлы (по умолчанию пусто)
* Пример: Discard:W: ew gd 5dr 3b 1c rd~ 1b nw 8b
*
*/
Там в последнем еще не описаны тайл с кодом: ii - вертикальный, т.е. стоящий в руке.
Последнее редактирование: 16 Май 2009 00:58 от WarL0ck.
Администратор запретил публиковать записи.

RE: MahJong Java Player 19 Май 2009 16:57 #1350

  • c00pdNnatop
  • c00pdNnatop's Avatar
  • Вне сайта
  • Модератор
  • Сообщений: 492
  • Спасибо получено: 2
Надо не забыть, что в файле желательно указывать вид правил, по которым сыграна партия.

Остается только надеятся, что МТ не зажлобит дать игры из архива.

До появления этой темы недели 4 назад я писал им на тему скрин сейвера и добавления комментов к партиям. Они ответили примерно так \"спасибо, учтём ваши пожелания\".

Думаю даже если они готовы раскрыть свой формат, что было бы хорошо, код плеера недолго будет приспособить под него.

В любом случае, респект WarL0ck\'y за начинание!
Администратор запретил публиковать записи.

RE: MahJong Java Player 19 Май 2009 20:01 #1352

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Хм, а есть смысл указывать правила? Я как-то решил учесть максимум аспектов всех правил: т.е. красные и повернутые для риичи. Хотя повернутые удобно использовать для всех правил на MJT указывается тайл на котором открыта комбинация.
Буквально сегодня чтобы не выдумывать файлы брал лог игры в XMJ и делал из него файл для плеера.
Еще думаю стоит заморачиваться с цветами и сезонами? Т.е. в игре-то они влияют на ход игры.
Администратор запретил публиковать записи.

RE: MahJong Java Player 19 Май 2009 20:21 #1353

  • c00pdNnatop
  • c00pdNnatop's Avatar
  • Вне сайта
  • Модератор
  • Сообщений: 492
  • Спасибо получено: 2
Ну про правила я заикнулся по аналоги с ГО. Т.е. я имел ввиду что просто при загрузке игры в плеер высвятится тип правил, чтобы было легче ориентироваться.

Повернутые тайлы конечно удобно.

Цветки и сезоны по идее тоже нужны. Ведь в СО том же они часть геймплея, т.е. их можно снести (странно что 4winds не даёт это сделать!! про возможность их сноса вообще узнал только здесь от Марка).

надо будет посмотреть этот XMJ...надеюсь он не только под linux-based...
Администратор запретил публиковать записи.

RE: MahJong Java Player 19 Май 2009 21:38 #1356

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
xmj под Windows.
Попробуй, правда правила только CC.
Администратор запретил публиковать записи.

RE: MahJong Java Player 02 Июн 2009 16:59 #1366

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Тут была на работе запарка, да и так по жизни.
Но все-таки продолжаю по возможности.
Выложил сейчас свежий плеер.
Реализовано:
- проигрывание только вперед (закинул лог ходов на 27 для отладки)
- около каждого имени игрока пишется действия (анимацию делать нереально)
- есть индикатор активного игрока, т.е. того кто ходит (такая страшная черная стрелка нарисованная на коленке за 5 минут) и он даже крутится :)

Наверное учитывая пожелания c00pdNnatop нужно ввести внизу что-то типа окна с историей (типа комментарии) или даже лучше выкидывать по кнопке about игры?

Почитал кстати правила КО, есть там такая фишка поворачивать тайл так чтобы он указывал на снесшего, стоит делать так?
И еще снос по правилам КО выкладывается по 6 штук в ряду, я сделал 8. Думаю не критично, на MJT тоже по 8.

P.S. может кто покинуть графики? Изображение тайлов и т.п.
P.S.S. сейчас сервер лежит, я на работе, подниму через часик :)
сделал настройку апплета через параметры:
- type - типа тайлов (base - из 4winds,small - маленькие в сайта 4wind,mahjong.ru - отсюда). Кстати при использовании разного типа размер апплета нужно менять (700x700, 440x440, 870x870) так что нужно предусматривать при включении внутрь форума
- lang - язык апплета (english, russian). Выходим на международный уровень.
- maxtail - максимальное кол-во тайлов в руке (привет Тайваню)
Доберусь выложу разные варианты.
Последнее редактирование: 03 Июн 2009 17:19 от WarL0ck.
Администратор запретил публиковать записи.

RE: MahJong Java Player 03 Июн 2009 20:05 #1367

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Выложил еще пару страниц с разными вариантами настроек (это не конечный вариант просто для просмотра возможности): маленький набор и набор с местными тайлами.
С языком пока вышел косяк связанные с ограниченями безопасности апплетов в инете, но он поправляем.

P.S. язык работает нормально. Добавил еще параметр font - размер текста, которым пишутся имя игрока и действия. Очень потребуется при смене типов тайлов. Кстати работает проигрывание назад.
Апплет выходит на финишную черту а мнений нет :) Завтра займусь добавлением в алгоритм действий чоу, конги, маджонг. Может доберусь до показа инфы по игре.
Последнее редактирование: 04 Июн 2009 23:15 от WarL0ck.
Администратор запретил публиковать записи.

RE: MahJong Java Player 05 Июн 2009 07:12 #1368

  • c00pdNnatop
  • c00pdNnatop's Avatar
  • Вне сайта
  • Модератор
  • Сообщений: 492
  • Спасибо получено: 2
Что-то у меня не открывается сейчас ни одна из трех ссылок на апплет. В статус-баре пишет \"applet .... notinited\". Или это косяк моего компа?

Изображение тайлов из 4winds нормальное. если надо, могу сосканировать и отвекторизовать в CorelDraw все типы костей из китайского неадаптированного пластикового набора, как на эмблеме клуба \"13 сирот\". Остались только (хе-хе) All Simples да цветки с сезонами.

Комменты обязательно надо учесть, с возможностью их добавления.

XMJ для Windows мне не понравился... убогая графика и отсутсвие КО правил...
Администратор запретил публиковать записи.

RE: MahJong Java Player 05 Июн 2009 09:42 #1369

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
У меня все открывается. Если не трудно напиши чем смотришь, какая java стоит (посмотреть можно в командной строке командой java -version).

Изображения тайлов высылайте, наберем побольше будет выбор. Я тоже вчера в мусоре нашел 3 штуки сейчас буду смотреть.

xmj - да, правила только КК. Но там есть много плюсов, которые не встречал пока в других программах: есть отдельный сервер, программы-боты, стабильная работа по любой сети.

P.S. поигрался с графикой, остановился на текущем варианте: базовый - симпатичный адаптированный набор пластик (скан), маленький - набор 4winds под КПК и стандартный из 4winds. Добыл нормальный указатель-стрелку.
Последнее редактирование: 05 Июн 2009 14:38 от WarL0ck.
Администратор запретил публиковать записи.

Ну вот 16 Июн 2009 11:57 #1387

  • WarL0ck
  • WarL0ck's Avatar
  • Вне сайта
  • Маджо...
  • Сообщений: 182
Выпустил так сказать бету: 0.1.35
Скачать можно здесь
Документацию начал писать здесь
Пока только инструкция по установке, на очереди описание структуры протокола игры.
Кстати родилась просто интересная мысль по реализации редактора протокола применительно к MJT. Можно (надеюсь) сделать редактор в виде плагина к Firefox (боковая панель).
Т.е. включаем боковую панель она висит все время игры, не мешает процессу. При определенной сноровке можно будет не напрягаясь записывать ходы. Единственный минус - немного уменьшается область клиента, но это не слишком большой минус.
Документацию немного посмотрел, сделал тестовый примерчик, думаю это вариант.
Насчет других браузеров не знаю так как нужна поддержка плагинов а из известных и распространенных знаю только firefox и opera.
Делать отдельное приложение смысла мало - переключение между разными окнами занимает много времени, можно пропустить ход.

P.S. мало, мало описал протокол в вики.
Последнее редактирование: 16 Июн 2009 16:32 от WarL0ck.
Администратор запретил публиковать записи.

RE: Ну вот 16 Фев 2010 16:54 #3413

  • c00pdNnatop
  • c00pdNnatop's Avatar
  • Вне сайта
  • Модератор
  • Сообщений: 492
  • Спасибо получено: 2
Оказывается, всё украдено до нас...

Я и раньше открывал сейвы 4W блокнотом (Notepad++), но как то не замечал логов. Оказывается, они там есть! Большая часть файла толи зашифрована, толи что, но в конце строки 44 легко заметить ЛОГ игры - приходы, дискарды, объявления.

выглядит это примерно так:
B4B4B5B7B9B9C1C3C4C4C9D3WEX2|B2B5B6B8C3C3C8C8D1D2D5WSWWX7X8|B1B3B6C5C9D6D8D9LGLGLWWWWZB2|B3B3C2C2C6C7C8D1D6D8LWWEWSX3X6|N$86|E?227|S?227|E-B6|S+C9|S-D1|W+B9|W$84|W?228|W-D3|N+D7|N$83|N-B2|E+B2|E-WZ|S+B6|S-B6|W+D4|W-D4|N+D4|N$79|N-WW|E+X5|E|S$38|S-B3|W+B1|W-B1|N+D3|N-B6|E+B8|E-B8|S+LG|S-LW|W+B8|W-B8|N+WW|N-WW|E+D8|E-B1|SxCB1B2B3|S-B5|W+WZ|W$30|W-WZ|N+C5|N$29|N-B5|E+C7|E$28|E-B1|S+WZ|S$27|S-WZ|W+LR|W!O|

Такой же лог есть в строке 53.

Думаю, нетрудно увидеть какие кости где зашифрованы. Для подтверждения догадок я снял одну партию программкой UVScreen. Чтобы сравнивать лог и действия в 4W.

понятно, что
в начале идут стартовые руки
Х1-Х8 - цветки и сезоны
| - разделение ходов
- - снос
+ - взятие со стены
Администратор запретил публиковать записи.
  • Страница:
  • 1
  • 2
Время создания страницы: 0.168 секунд