Mahjim 麻將輸入法(霧
項(xiàng)目: https://github.com/black-desk/mahjim
如果真有人用這玩意的話我會(huì)好好維護(hù)下去的(
demo 地址有變化,?也有了一些新功能, 這里重新粘貼一下github文檔
PS: b站的專欄對(duì)markdown十分不友好

mahjim
a tool to generate mahjong image
這是一個(gè)用來快速生成麻將圖案的工具.
支持日麻/國(guó)標(biāo)兩種圖案


支持吃,碰,明/暗杠的表示






牌背顏色有兩種可選:


在我書寫這個(gè)文檔的時(shí)候, 有一個(gè)demo, 如果需要將這個(gè)工具應(yīng)用在您的文章中, 請(qǐng)保存生成的圖片, 而不要只留有一個(gè)鏈接在你的文檔中.
你也可以將這個(gè)程序運(yùn)行在你自己的電腦上, 來獲得更穩(wěn)定的體驗(yàn).
語法說明
使用方法
以上面提到的 demo 為實(shí)例, 我們簡(jiǎn)單學(xué)習(xí)一下如何使用這個(gè)工具, 它運(yùn)行在 https://mj.black-desk.cn 這個(gè)地址, 你可以像這樣來使用它:
字符串 123m
代表 一萬二萬三萬, 那么當(dāng)你訪問 https://mj.black-desk.cn/123m 就可以得到一張如下所示的圖片:

本文檔中的圖片也都是這么生成的.
推薦配合 markdown 編輯器使用本工具, 更方便書寫
描述語法
日麻中有用 p s m 來表示餅子, 條 (索) 子, 萬字的習(xí)慣, 并且字牌按照 東南西北白發(fā)中 的順序編號(hào)后用 z 表示, 比如 5z 表示白. 但是中國(guó)模式下, 字牌的順序并不一樣, 順序?yàn)?東南西北中發(fā)白
1234567z

1234567z?country=cn
:

看幾個(gè)簡(jiǎn)單的例子: 可以用 1s2s3s
表示一條二條三條:

和上面字牌的情況一樣, 數(shù)字牌也支持簡(jiǎn)寫, 比如 123p
和 1p2p3p
是等價(jià)的:
123p
:

1p2p3p
:

為了輸入方便, 我們也可以直接用漢字來代表字牌, 例如 白白白
代表三張白:
白白白
:

當(dāng)然我們可以輸入 666z
來表示三張發(fā):
666z
:

特別地,當(dāng)使用漢字表示牌時(shí)可以簡(jiǎn)寫, 例如 3中
和 ?中中中
也是等價(jià)的:
3中
:

特別的, +
表示牌背:
+
:

多個(gè)并排的牌背也可以簡(jiǎn)寫, 比如 4+
:
4+
:

也支持春夏秋冬和梅蘭竹菊, 但是不能以z的形式輸入,只能使用漢字:
春夏秋冬梅蘭竹菊

漢字輸入暫時(shí)不支持繁體
牌的變化
當(dāng)發(fā)生吃碰杠的時(shí)候, 有一些牌會(huì)被橫置, 在以上規(guī)則的基礎(chǔ)上, 用 _1m
表示橫置的一萬:

那么我吃上家的 1m 形成的面子 123m, 可以如此表示
_123m
:

碰的例子也類似:
中_中中
:

而加杠形成的雙橫置以 ^
表示, 例如 2中^中
, 表示 碰下家的中之后加杠:

當(dāng)然, 使用 77^7z
, 也可以表示相同的事情:

你也可以用另一種方式表示暗杠:
+^中+
:

本工具只是一個(gè)圖片生成器, 并不檢查牌是否合理, 所以實(shí)際上你也可以擺出一些很詭異的牌型, 比如:
2中^發(fā)2白
:

_6_6_6_6p
:

雖然不知道有什么用, 但是牌背是可以被橫置的:
_+
:

控制參數(shù)
日麻與國(guó)標(biāo) country
可以在整個(gè)字符串的后面加上參數(shù) country=cn
或者 country=jp
來說明希望生成 國(guó)標(biāo)/日麻 圖案, 如果不做說明默認(rèn)是日麻圖案, 例如以下分別是 3白?country=cn
和 3白?country=jp
, 不添加此參數(shù)時(shí)默認(rèn)為日麻圖案.


這里展示一下兩種風(fēng)格下所有的牌畫:


縮小和放大 scale
默認(rèn)生成的每張牌的大小為 70px x 100px, 如果需要更大或者更小的圖片請(qǐng)使用縮放功能, 例如在整個(gè)字符串的最后加上參數(shù) scale=1.2
可以將圖片放大為原來的 1.2 倍, 該參數(shù)不能大于 10, 如果輸入了一個(gè) >10 的參數(shù), 那么返回結(jié)果就是一張 x10 的圖, 以下分別是123m?scale=1.2
和123m?scale=0.5


牌背顏色 color
可以使用 color=orange
來獲得橙色的牌背, 此參數(shù)不存在時(shí)默認(rèn)為藍(lán)色牌背.

牌河 river
參數(shù)river=true
可以開啟牌河生成模式, 牌河模式下 ^
的意義是模切, _
一樣是橫置, 一排放置 6 張牌,以下是1^233_4^5^6^7^8^9s?scale=0.7&river=true

出于實(shí)現(xiàn)方便, 立直牌靠下放置.
TODO: 這個(gè)功能目前并不完善, 比如立直之后本來應(yīng)該默認(rèn)就全是模切.
多參數(shù)
同時(shí)使用多個(gè)參數(shù)時(shí), 使用 &
來連接不同的參數(shù). 可以看一下上節(jié)的牌河生成, 很好懂的.
間隔
可以在牌與牌之間插入 |
來制造空隙, 每一個(gè) |
是 1/10 個(gè)牌的寬度, 可以通過形如 3|
的方式來增加間隙, 例如以下分別是 123s|456p
和 123s5|456p


由于要使用n|
的方式表示間隔的大小 ,所以 123m 456m 并不能寫成 123|456m
. 需要寫成 123m|456m
本地安裝
你可以在 Release 頁面下載與系統(tǒng)對(duì)應(yīng)的可執(zhí)行文件, 通常來說, 作為一個(gè) windows 用戶, 你需要下載 mahjim_windows_amd64.exe, 雙擊運(yùn)行之后它監(jiān)聽的地址是 localhost:8080/
, 之后你只要在瀏覽器里打開這個(gè)地址(你可以點(diǎn)擊 快速打開), 之后就可以使用了. 如果你使用 markdown 就可以通過輸入 
?來獲得一張圖片了.
Docker
使用命令 docker run -d --name mahjim -p 8080:8080 blackddesk/mahjim
即可啟動(dòng)容器
鳴謝
感謝圖片來源 @Neerdge
TODO
性能測(cè)試
牌河生成模式時(shí), 立直之后默認(rèn)模切.