カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

天鳳の牌譜ログの<AGARI>タグを解析してみる④

概要

前回の記事の続きです。

www.barbaroiware.net

前回は<AGARI>タグ内のm属性が刻子および加槓を示している場合のデータにについて解説しました。

今回は暗槓、および大明槓の場合のデータについて解説します。

暗槓および大明槓

これまでに説明してきたとおり、m属性の値はデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものです。

具体的には

<AGARI ... m="42367,50251" ... >

というようなXML形式で天鳳のログファイルに記録されています。

たとえば10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。

右から数えて3番目のbit(以下3ビット目)から5番目のbitまでがすべて0の場合、そのメンツは暗槓、もしくは大明槓であることが確定します。

この場合、各bitの意味は以下の通りになります。

ビット目
1-2ビット目 誰から鳴いたか(00の場合、暗槓であることを示す)
3ビット目 必ず0(順子でないことを示す)
4ビット目 必ず0(刻子ないことを示す)
5ビット目 必ず0(加槓でないことを示す)
6ビット目 1の場合は三人麻雀の抜きドラを示す
7-8ビット目 (未使用)
9-16ビット目 槓子のパターンを示す

まず1-2ビット目は他のメンツ同様誰から鳴いたかを示します。
ビットフィールドとの対応は前々回の記事内の順子の場合を参照してください。
ここが0x00の場合、自分から鳴いたという情報になりますので、槓子なら暗槓であることを示します。

3-5ビット目が「0x000」であれば、このメンツが暗槓もしくは大明槓であることを示します。
他のメンツと異なり、暗槓や大明槓であることを示す特定のフラグはなく、
「順子、刻子、加槓であるフラグがない」という情報をもって、このメンツは暗槓、もしくは大明槓であることが確定されます。

6ビット目は三人麻雀(三麻)の場合に使用されるらしいですが、よくわかってないので省略。

9-16ビット目は槓子のパターンを表します。
槓子のパターンとはたとえば、「字牌の西の槓で1枚目の西をカンした暗槓、もしくは大明槓」といった情報のことです。

刻子や加槓の場合と異なり、同種牌の中での組み合わせを考える必要はないことに注意してください。

ビット情報との対応は以下の通りです。(ビット情報の0xは2進数であることを示す)

ビット情報 順子パターン
0(0x00000000) 一一一一(1枚目の一をカン)
1(0x00000001) 一一一一(2枚目の一をカン)
2(0x00000010) 一一一一(3枚目の一をカン)
3(0x00000011) 一一一一(4枚目の一をカン)
4(0x00000100) 二二二二(1枚目の二をカン)
5(0x00000101) 二二二二(2枚目の二をカン)
34(0x00100010) 九九九九(3枚目の九をカン)
35(0x00100011) 九九九九(4枚目の九をカン)
36(0x00100100) ①①①①(1枚目の①をカン)
37(0x00100101) ①①①①(2枚目の①をカン)
70(0x01000110) ⑨⑨⑨⑨(3枚目の⑨をカン)
71(0x01000111) ⑨⑨⑨⑨(4枚目の⑨をカン)
72(0x01001000) ⅠⅠⅠⅠ(1枚目のⅠをカン)
73(0x01001001) ⅠⅠⅠⅠ(2枚目のⅠをカン)
106(0x01101010) ⅨⅨⅨⅨ(3枚目のⅨをカン)
107(0x01101011) ⅨⅨⅨⅨ(4枚目のⅨをカン)
108(0x01101100) 東東東東(1枚目の東をカン)
109(0x01101101) 東東東東(2枚目の東をカン)
134(0x10000110) 中中中中(3番目の中をカン)
135(0x10000111) 中中中中(4番目の中をカン)

暗槓、もしくは大明槓の場合、萬子・筒子・索子で各9パターン、字牌で東~中の7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、刻子のパターンとしては(3×9+7)×4=136とおりの組み合わせが考えられます。

そんなとこで天鳳解析シリーズは以上です。
まぁ自分で実際にやってみないとわかんないですね!

カロリーメイトください。

PR

そんなことを考えながら作ったアプリがこちらです
kankeli.netAndroid
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrilliOS
https://apps.apple.com/jp/app/id1493166793

【麻雀点数計算 超 実践問題集】バグ報告・改善要望

kankeli.net
Android
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrill
iOS
https://apps.apple.com/jp/app/id1493166793

 

【麻雀点数計算 超 実践問題集】のバグ報告や改善要望はこちらのコメント欄、もしくは開発者Twitter↓へお願いします。

ブログのほうが早く気がつく可能性が高いです。

twitter.com

個別問題に対する疑問は画面左上の問題番号を、不具合の場合はAndroidiOSのバージョンおよびバグ発生時の操作など状況を添えていただけると有り難いです。

f:id:yjkym:20191228230535p:plain

よろしくお願いいたします。

「麻雀点数計算 超 実践問題集」プライバシーポリシー

kankeli.netAndroid
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrill

iOS
https://apps.apple.com/jp/app/id1493166793 

広告について

本アプリでは、広告配信ツールとしてAdMob(Google Inc.)を使用しており、AdMobがご利用者の情報を自動取得する場合がございます。取得する情報、利用目的、第三者への提供等につきましては、以下の広告配信事業者のアプリケーション・プライバシーポリシーのリンクよりご確認ください。

Google 広告に関するポリシー
https://policies.google.com/technologies/ads?hl=ja

開発者連絡先

Twitter : Yuji Koyama (@yjkym_gmc) | Twitter

Mail : gekirinsoftware☆gmail.com(☆→@、gを半角文字に置き換えてください)

公開されても問題のない連絡であれば、この記事にコメントしていただくのが一番手軽だと思います。

 

Privacy Policy

・This application uses the advertising distribution tool AdMob (Google Inc.) and there may be cases where AdMob may automatically acquire user information. Please confirm the link below for the application privacy policy for the advertisement distribution company for details about the information to be obtained, the purpose of use and provision to third parties etc.

https://policies.google.com/technologies/ads?hl=en

天鳳の牌譜ログの<AGARI>タグを解析してみる③

概要

前回の記事の続きです。

www.barbaroiware.net

前回は<AGARI>タグ内のm属性の意味と、順子の場合のデータにについて解説しました。

今回は刻子、および槓子の場合のデータについて解説します。

刻子

前回、m属性の値はデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものであるということを説明しました。

たとえば、10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。

右から数えて3番目のbit(以下3ビット目)が0かつ、4ビット目が1の場合、そのメンツは刻子であることが確定します。

この場合、各bitの意味は以下の通りになります。

ビット目
1-2ビット目 誰から鳴いたか
3ビット目 必ず0(順子でないことを示す)
4ビット目 必ず1(刻子であることを示す)
5ビット目 (未使用)
6-7ビット目 刻子含まれない牌を同種牌4枚の中から特定する
8-9ビット目 (未使用)
10-16ビット目 刻子のパターンを示す

まず1-2ビット目は順子同様誰から鳴いたかを示します。
対応は順子の場合と同じですので省略します。

3-4ビット目が「0x10」(4ビット目を先に読む)であれば、このメンツが刻子であることを示します。

6-7ビット目は刻子含まれない牌を特定する情報です。
順子のところでも解説したとおり、天鳳では同じ種類の4枚の牌(同種牌)をそれぞれ別のものとして管理しています。
この2ビットを使ってどの牌が使われていないかという情報を示しています。
少しややこしいので具体例を後ほど解説します。

10-16ビット目は刻子のパターンを表します。
刻子のパターンとはたとえば、「字牌の西西西の組み合わせで1番目(左側)の西をポンした順子」といった情報のことです。

ビットフィールドとの対応は以下の通りです。(ビット情報の0xは2進数であることを示す)

ビット情報 順子パターン
0(0x0000000) 一一一(1番目の一をポン)
1(0x0000001) 一一一(2番目の一をポン)
2(0x0000010) 一一一(3番目の一をポン)
3(0x0000011) 二二二(1番目の二をポン)
4(0x0000100) 二二二(2番目の二をポン)
5(0x0000101) 二二二(3番目の二をポン)
24(0x0011000) 九九九(1番目の九をポン)
25(0x0011001) 九九九(2番目の九をポン)
26(0x0011010) 九九九(3番目の九をポン)
27(0x0011011) ①①①(1番目の①をポン)
28(0x0011100) ①①①(2番目の①をポン)
29(0x0011101) ①①①(3番目の①をポン)
51(0x0110011) ⑨⑨⑨(1番目の⑨をポン)
52(0x0101000) ⑨⑨⑨(2番目の⑨をポン)
53(0x0101001) ⑨⑨⑨(3番目の⑨をポン)
54(0x0101010) ⅠⅠⅠ(1番目のⅠをポン)
55(0x0101011) ⅠⅠⅠ(2番目のⅠをポン)
56(0x0101100) ⅠⅠⅠ(3番目のⅠをポン)
78(0x1001110) ⅨⅨⅨ(1番目のⅨをポン)
79(0x0101000) ⅨⅨⅨ(2番目のⅨをポン)
80(0x0101001) ⅨⅨⅨ(3番目のⅨをポン)
81(0x0101010) 東東東(1番目の東をポン)
82(0x0101011) 東東東(2番目の東をポン)
83(0x0101100) 東東東(3番目の東をポン)
99(0x1100011) 中中中(1番目の中をポン)
100(0x1100100) 中中中(2番目の中をポン)
101(0x1100101) 中中中(3番目の中をポン)

刻子の場合、萬子・筒子・索子で各9パターン、字牌で東~中の7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、刻子のパターンとしては(3×9+7)×3=102とおりの組み合わせが考えられます。

具体例で説明します。
たとえば6-7ビット目の情報が「0x10」で10-16ビット目の情報が「0x1100101」だったとします。

6-7ビット目の情報「0x10」は「0x00」から数えて3番目のビットですので、「この刻子には3枚目の同種牌が使われていない」という情報になります。
10-16ビット目の情報「0x1100101」は上の対応表を参考にすると「中の刻子(明刻)で3番目の中をポンしたもの」ということがわかります。
これらの情報をあわせて考えると、この刻子は「1枚目の中、2枚目の中、4枚目の中で構成されている刻子で、3番目の『4枚目の中』をポンした明刻である」ということがわかります。

加槓

刻子と重複する部分が多いので、加槓の場合を先に説明します。

加槓の場合の各ビットの意味は以下のとおりです。

ビット目
1-2ビット目 明刻を誰から鳴いたか
3ビット目 必ず0(順子でないことを示す)
4ビット目 必ず0(刻子ないことを示す)
5ビット目 必ず1(加槓であることを示す)
6-7ビット目 加槓した牌(刻子に含まれていない牌)を同種牌4枚の中から特定する
8-9ビット目 (未使用)
10-16ビット目 刻子のパターンを示す

刻子との違いは事実上、4-5ビット目のフラグのみです。

3-5ビット目が「0x100」(5ビット目から読む)であれば、このメンツが加槓であることを示します。
加槓であることを示すフラグは5ビット目の情報ですが、順子の場合5ビット目は別の情報(「順子の1枚目の牌を同種牌4枚の中から特定する」)に当てられていますので、5ビット目を見ただけでは加槓であると判定できないことに注意してください。

6-7ビット目は加槓した牌を同種牌4枚の中から特定する情報ですが、加槓した牌というのはすなわち明刻に含まれていない牌ということになりますので、事実上明刻と同じ情報になります。

1-2ビット目、10-16ビット目も明刻と同様に、加槓する前の刻子(明刻)についての情報を示しています。

残りの暗槓、明槓のメンツについては次の記事に分けます。

カロリーメイトください。

PR

そんなことを考えながら作ったアプリがこちらです
kankeli.netAndroid
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrilliOS
https://apps.apple.com/jp/app/id1493166793

天鳳の牌譜ログの<AGARI>タグを解析してみる②

概要

前回の記事の続きです。

www.barbaroiware.net

前回はm属性以外の<AGARI>タグの中身(アガリ形のデータ)について解説しました。

今回は副露したメンツをあらわすm属性について解説します。

解析

m

m属性は以下のような形式で記述されています。

<AGARI>タグはたとえば以下のようなXML属性の形式で保存されています。

m="42367,50251"

ひと目では何を表しているかまったくわかりませんので、ソースコードから読み解いていきます。

https://tenhou.net/img/tehai.js

どうやら、これはデータが格納されている16bitの2進数ビットフィールドを10進数に変換したものということのようです。

たとえば、10進数の"42367"は2進数で表すと"1010010101111111"となり、これが副露した1メンツのデータを表しています。

順子

右から数えて3番目のbit(以下3ビット目)が1の場合、そのメンツは順子であることが確定します。

この場合、各bitの意味は以下の通りになります。

ビット目
1-2ビット目 誰から鳴いたか
3ビット目 必ず1(順子であることを示すフラグ)
4-5ビット目 1枚目の牌を同種牌4枚の中から特定する
6-7ビット目 2枚目の牌を同種牌4枚の中から特定する
8-9ビット目 3枚目の牌を同種牌4枚の中から特定する
10ビット目 (未使用)
11-16ビット目 順子のパターンを示す

まず1-2ビット目は誰から鳴いたかを示します。
これは刻子槓子などの他のメンツにおいても同様です。
数字との対応は以下の通り。

ビット情報 誰から鳴いたか
0(0x00) 自分(暗槓の場合に使用)
1(0x01) 下家
2(0x10) 対面
3(0x11) 上家

チーの場合は必ず上家から鳴くことになるので1-2ビット目は11になります。
00の自分からの鳴きは暗槓のときに使います。

3ビット目は上で説明したとおり、このメンツが順子であることを示します。

説明の都合上、11-16ビット目を先に説明します。

11-16ビット目は順子のパターンを表します。
順子のパターンとはたとえば、「筒子の③④⑤の組み合わせで④をチーした順子」といった情報のことです。
数字との対応は以下の通りです。

ビット情報 順子パターン
0(0x000000) 一二三(一をチー)
1(0x000001) 一二三(二をチー)
2(0x000010) 一二三(三をチー)
3(0x000011) 二三四(二をチー)
4(0x000100) 二三四(三をチー)
5(0x000101) 二三四(四をチー)
18(0x010010) 七八九(七をチー)
19(0x010011) 七八九(八をチー)
20(0x010100) 七八九(九をチー)
21(0x010101) ①②③(①をチー)
22(0x010110) ①②③(②をチー)
23(0x010111) ①②③(③をチー)
39(0x100111) ⑦⑧⑨(⑦をチー)
40(0x101000) ⑦⑧⑨(⑧をチー)
41(0x101001) ⑦⑧⑨(⑨をチー)
42(0x101010) ⅠⅡⅢ(Ⅰをチー)
43(0x101011) ⅠⅡⅢ(Ⅱをチー)
44(0x101100) ⅠⅡⅢ(Ⅲをチー)
60(0x100111) ⅦⅧⅨ(Ⅶをチー)
61(0x101000) ⅦⅧⅨ(Ⅷをチー)
62(0x101001) ⅦⅧⅨ(Ⅸをチー)

順子の場合、萬子・筒子・索子で各7パターンの組み合わせが考えられ、さらにどの牌を鳴いたかの情報が加わりますので、順子のパターンとしては3×7×3=63とおりの組み合わせが考えられます。

順子の組み合わせが特定できたところで、4-9ビット目の牌を特定する情報に戻ります。

順子の組み合わせを特定するだけなら、ここまでのデータで十分なのですが、天鳳では同じ種類の牌でもそれぞれ4枚存在する牌(同種牌)を区別して管理しています。
たとえば「筒子の③④⑤」の③といっても、実際には4枚存在する③の牌のうちのどれを使っているかということはわかりません。
その情報を特定するのが4-9ビット目の情報です。

たとえば、11-16ビット目の情報によって、順子のパターンが「筒子の③④⑤の組み合わせで④をチーしたもの」と特定できたとします。

このとき、4-5ビット目が0x01、6-7ビット目が0x11、8-9ビット目が0x00なら、③は2枚目の③の牌、④は4枚目の④の牌、⑤は1枚目の⑤の牌を使っているということがわかります。

この情報は特に赤牌アリのルールのときに重要な情報になってきます。
赤牌アリのルールのときは五、⑤、Ⅴの牌において、1枚目の牌(すなわち同種牌4枚の中から特定するビット列が0x00)が赤牌として定義されているからです。

案の定長くなってしまったので、刻子槓子のメンツについては次の記事に分けます。

カロリーメイトください。

PR

そんなことを考えながら作ったアプリがこちらです
kankeli.netAndroid
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrilliOS
https://apps.apple.com/jp/app/id1493166793

Android+iPhone/iPadアプリ「3Dマインスイーパ」を公開しました

f:id:yjkym:20191126183006p:plain

お知らせ

play.google.com

3D マインスイーパ

3D マインスイーパ

  • Kentaro Hosokawa
  • ゲーム
  • 無料
apps.apple.com

Barbaroi Ware第5弾アプリ「3D マインスイーパ」をリリースしました。
これはunityroomで開催されている第14回1週間ゲームジャムに参加して、大して評判がよくなかったゲームをアプリ化したものです。

unityroom.com

ひょっとするとアプリストアでは名前が変わっているかもしれません。
それはGoogle Play完全一致検索ですら出てこないから悪あがきをしているのです。
というかこの状態でどうやってダウンロードされろというのでしょうか。

なんだか前途多難な気しかしませんが、よろしくお願いします。

今回ははじめてローカライズをしてみました。

www.barbaroiware.net

これでいつものアプリの60倍ダウンロードされること間違いなしですね!

デモ動画


3Dマインスイーパ プレイデモ - MINESWEEPER 3D PLAY DEMO VIDEO -

スクリーンショット

f:id:yjkym:20191208204700p:plain:w300 f:id:yjkym:20191208204707p:plain:w300 f:id:yjkym:20191208204615p:plain:w300 f:id:yjkym:20191208204621p:plain:w300 f:id:yjkym:20191208204632p:plain:w300 f:id:yjkym:20191208204637p:plain:w300 f:id:yjkym:20191208204643p:plain:w300 f:id:yjkym:20191208204649p:plain:w300

スクリーンショットはおもしろそうだと思う。(いつもそう思ってるんだけど)

カロリーメイトください。

天鳳の牌譜ログの<AGARI>タグを解析してみる①

概要

前回の記事で天鳳(オンライン麻雀ゲーム)のサイトから牌譜ログを取得する方法を解説しました。

www.barbaroiware.net

天鳳の牌譜ログにはさまざまなデータが含まれていますが、今回は特に<AGARI>タグの中身(アガリ形のデータ)について解析していこうと思います。

解析

<AGARI>タグはたとえば以下のようなXML形式で保存されています。

http://tenhou.net/0/log/?2018090800gm-00a9-0000-35f9e477

<AGARI ba="0,1" hai="8,9,11,20,25,30,36,43,46,50,51,72,79,81" machi="72" ten="30,7900,0" yaku="1,1,2,1,0,1,53,1" doraHai="135" doraHaiUra="68" who="2" fromWho="2" sc="250,-39,250,-20,240,89,250,-20" />

直感的に理解できるものやめちゃくちゃわかりにくいものなど色々ありますが、各属性をひとつずつ見ていきます。

ba

この属性は積み棒および供託のリーチ棒の数を表します。
ba="2,3"であれば、2本場で供託リーチ棒が3本の状態でアガったことを表します。

hai

この属性はアガリ形の手牌を表します。
これには副露した牌は含まれませんが、和了した牌は含まれています。
1つの数字が1枚の牌に対応しており、それぞれ0-135の数字が与えられています。
つまり同じ種類の牌が4つの数字で区別されていることに注意してください。

具体的な対応関係は以下のとおりです。

数字 対応する牌
0-35 萬子 一~九(各4枚ずつ)
36-71 筒子 ①~⑨
72-107 索子 Ⅰ~Ⅸ
108-135 東~中

赤牌を採用する場合は同種牌の中でもっとも若い番号の牌が赤牌になります。(たとえば五萬には16-19の数字が割り当てられているが、そのなかでもっとも若い16が赤牌を表す)

最初に挙げた例の「hai="8,9,11,20,25,30,36,43,46,50,51,72,79,81"」をこの表に従って置き換えていくと、「三三三六七八①②③④④ⅡⅢ」になります。

m

この属性は副露したメンツを表します。
メンゼンであがった場合はこの属性はありません。
非常に複雑なので別記事で解説する予定です。

machi

この属性はアガリ牌を表します。
数字の対応はhai属性と同じです。
上の例の「machi="72"」を置き換えるとⅠ(索子の1)になります。

ten

この属性はアガリの点数情報を表します。
符、点数、満貫情報がカンマで連結された形式で表現されています。
上の例の「ten="30,7900,0"」は30符、7900点、満貫未満を表します。

満貫情報の対応は以下のとおりです。

数字 対応する満貫情報
0 満貫未満
1 満貫
2 跳満
3 倍満
4 三倍満
5 役満

yaku

この属性はアガリの役情報を表します。
数字が2つずつセットになっており、最初の数字が具体的な役を表し、その後の数字が翻数を表しています。
このセットを役の数だけカンマで連結しています。

たとえば、「yaku="1,1,2,1,0,1,53,1"」は「立直・1翻、一発・1翻、メンゼンツモ・1翻、裏ドラ・1翻」の計4翻を表しています。

数字と具体的な役名の対応は以下のとおりです。
なお、役満の場合はこの属性はなく、代わりに次のyakuman属性が付与されます。

数字 対応する満貫情報 数字 対応する満貫情報 数字 対応する満貫情報
0 門前清自摸 20 役牌 中 40 四暗刻
1 立直 21 両立直 41 四暗刻単騎
2 一発 22 七対子 42 字一色
3 槍槓 23 全帯幺 43 緑一色
4 嶺上開花 24 一気通貫 44 清老頭
5 海底摸月 25 三色同順 45 九蓮宝燈
6 河底撈魚 26 三色同刻 46 純正九蓮宝燈
7 平和 27 三槓子 47 国士無双
8 断幺九 28 対々和 48 国士無双13面
9 一盃口 29 三暗刻 49 大四喜
10 自風 東 30 小三元 50 小四喜
11 自風 南 31 混老頭 51 四槓子
12 自風 西 32 二盃口 52 ドラ
13 自風 北 33 純全帯幺 53 裏ドラ
14 場風 東 34 混一色 54 赤ドラ
15 場風 南 35 清一色
16 場風 西 36 (未使用)
17 場風 北 37 天和
18 役牌 白 38 地和
19 役牌 發 39 大三元

yakuman

役満でアガった場合のみ付与される属性。
「yakuman="47"」のような形式で表される。
yaku属性と異なり翻数の情報はない。
ダブル役満の場合はカンマで連結される。

doraHai

doraHaiUra

それぞれ、ドラ表示牌、裏ドラ表示牌を表します。
牌の対応はhai属性のものと同じです。
どちらもドラそのものではなく「表示牌」であることに注意してください。
カンにより増えた場合はカンマで連結されます。
立直がない場合はdoraHaiUra属性はつきません。

who

アガったプレイヤーの番号を表します。
0は起家(東1局の親)を表し、東1局の南が1,西が2,北が3となります。

fromWho

放銃したプレイヤーの番号を表します。対応はwho属性と同じです。
ツモの場合はwhoと同じ番号になることに注意してください。

sc

ガリによる点数移動の情報を表します。
「250,-39,250,-20,240,89,250,-20」
なら、全員25,000点を持っている状態からプレイヤー3が8,900点でアガリ、プレイヤー1が3,900点、プレイヤー2とプレイヤー4が2,000点を支払ったことを表します。

owari

終局時の全員の持ち点、ウマを含めたポイント数を表します。最終局のみ付与されます。
「owari="225,-17.0,411,50.0,227,3.0,137,-36.0"」
なら、最終成績はプレイヤー1は22,500(-17.0)、プレイヤー2は41,100(+50.0)、プレイヤー3は22,700(+3.0)、プレイヤー4は13,700(-36.0)であることを示します。

m属性は別の記事で解説予定…は未定。

疲れた!

カロリーメイトください。

PR

そんなことを考えながら作ったアプリがこちらです
kankeli.netAndroid
https://play.google.com/store/apps/details?id=com.BarbaroiWare.MahjongScoreDrilliOS
https://apps.apple.com/jp/app/id1493166793