カロリーメイトください

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

天鳳の牌譜ログの<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