「MahGen」日本麻將牌畫生成工具
MahGen 是一個(gè)為給定的日本麻將牌型生成對(duì)應(yīng)牌畫的工具。MahGen 是 Mahjong Generator 的縮寫。
你可以在下面這個(gè)網(wǎng)站體驗(yàn)它:
https://mahgen.ericlab.cc/
這個(gè)網(wǎng)站使用 GitHub?Pages 部署,訪問不便的話也可以使用下面這個(gè)國內(nèi)的鏡像:
https://eric200203.gitee.io/mahgen/
在網(wǎng)站中使用工具生成圖片后,即可右鍵點(diǎn)擊圖片將其復(fù)制到剪貼板或者保存到本地供日后使用。本文中的所有牌畫圖片都是使用 MahGen 生成的。
有興趣的朋友也可以訪問本項(xiàng)目的 GitHub:
https://github.com/eric200203/mahgen

功能與特性
MahGen 支持各種牌型的表示:



網(wǎng)站支持純文本和交互式界面兩種輸入方式:



語法說明
MahGen 的純文本模式支持通過輸入序列生成牌畫,序列的語法基本遵循天鳳描述牌型的慣例,并在其基礎(chǔ)上進(jìn)行擴(kuò)展以支持更多的功能。(以下內(nèi)容也可以在網(wǎng)站中的“語法說明”部分查看)
數(shù)牌(餅、索、萬)
天鳳中使用數(shù)字 1-9 描述牌的點(diǎn)數(shù),使用字母 p、s、m 描述牌的類型 餅 Pin、索 So、萬 Man。因此,序列 1m2m3m 表示牌型 一萬二萬三萬,5p6p7p 則表示 五餅六餅七餅。特別地,數(shù)字 0 表示紅寶牌,因此 0p、0s、0m 分別表示 紅五餅、紅五索、紅五萬:



為了簡(jiǎn)化書寫,你可以將同一類型的牌的類型描述全部省略,只保留最后一個(gè)。例如,你可以將上文中的 1m2m3m 簡(jiǎn)寫為 123m,5p6p7p 簡(jiǎn)寫為 567p。當(dāng)然,你也可以寫作 1m23m 或 12m3m,它們都表示 一萬二萬三萬 這個(gè)牌型。
字牌(風(fēng)牌、三元牌)
天鳳使用字母 z 表示字牌,且字牌的順序?yàn)椤皷|南西北白發(fā)中”,因此 1z 2z 3z 4z 5z 6z 7z 分別表示 東 南 西 北 白 發(fā) 中。

在此基礎(chǔ)上,我們使用 0z 表示 牌背。例如,我們可以使用 0z11p0z 表示 暗杠一餅:

最后,為了讓所有的數(shù)字對(duì)字牌都有意義,我們使用 8z 和 9z 表示兩張并不在日本麻將中出現(xiàn)、但可能有用處的牌: ? 和 *。

和數(shù)牌一樣,字牌也可以簡(jiǎn)寫,例如 3z3z3z 可以簡(jiǎn)寫為 333z。
空格
我們使用 | 在兩張牌之間插入 空格,每個(gè)空格是 1/7 張牌的寬度。例如:

你可以連續(xù)使用多個(gè) | 插入多個(gè)連續(xù)的空格來控制兩張牌之間空格的寬度:

副露
副露時(shí),麻將牌可能會(huì)發(fā)生以下三種變化:橫置、加杠以及涉及紅寶牌的加杠。
橫置
我們使用前綴 _ 表示將緊接著的下一張牌橫置。例如,我們可以使用 _123m 表示 使用二萬和三萬吃上家打出的一萬:

這里有更多的示例:


加杠
我們使用前綴 ^ 表示緊接著的下一張牌是加杠形成的重疊。例如:

涉及紅寶牌的加杠
我們使用前綴 v 表示緊接著的下一張牌是加杠形成的重疊,且其中有一張牌是紅寶牌。我們定義:v0 表示重疊中靠下的牌是紅寶牌,靠上的牌是普通數(shù)牌;v5 表示重疊中靠下的牌是普通數(shù)牌,靠上的牌是紅寶牌。例如:

總結(jié)
MahGen 的語法總結(jié)如下:
使用 1-9 描述牌的點(diǎn)數(shù);
使用后綴 p、s、m、z 表示牌的類型:餅、索、萬和字牌;
使用 0 表示紅寶牌,0z 表示牌背;
使用 | 插入空格;
使用前綴 _ 表示將牌橫置,^ 表示加杠,v 表示涉及紅寶牌的加杠。
將這些符號(hào)組合起來,我們就能夠構(gòu)造出各種各樣的牌型,例如:

最后,MahGen 只為給定的序列生成圖片,不會(huì)對(duì)序列是否符合牌理進(jìn)行檢查,因此諸如 _5^50v0m 的序列對(duì) MahGen 而言同樣是合法的。


前端JS庫 和 Hexo插件
(對(duì)前端開發(fā)沒有興趣盆友可以跳過這一節(jié))
MahGen 還提供了一個(gè) JavaScript 前端庫,上述網(wǎng)站實(shí)際上就是在這個(gè)庫的基礎(chǔ)上進(jìn)行的二次開發(fā)。關(guān)于前端庫的詳細(xì)說明和使用指南,可參見?GitHub?項(xiàng)目 mahgen 的 README:
https://github.com/eric200203/mahgen/blob/master/README.md
此外,對(duì)于使用 Hexo 寫博客的讀者,MahGen 還提供了一個(gè)插件,用于在書寫博客時(shí)使用標(biāo)簽語法直接插入牌畫,參見 GitHub 項(xiàng)目 hexo-mahgen:
https://github.com/eric200203/hexo-mahgen

致謝
感謝 black-desk,他的項(xiàng)目 Mahjim 麻將輸入法?為本項(xiàng)目提供了靈感。
感謝 最完整的日本麻將中文維基百科(http://wiki.lingshangkaihua.com/),本項(xiàng)目的圖片素材來源于這個(gè)網(wǎng)站。
歡迎大家訪問并使用這個(gè)工具,也歡迎大家在評(píng)論區(qū)提出意見和建議。