はじめに
天鳳牌譜mjlog(天鳳ログ)での牌番号・副露面子
天鳳牌譜mjlogログ(天鳳ログ)では、牌番号や副露面子の扱いが複雑であるために、以下それらの変数について補足として記述します。
牌番号
牌番号_概要
mjlogでは、136枚の牌に0から135までの一意の番号が設定されています。
そのために、同じ一萬の場合では別の牌として処理されます。
例えば、一萬の場合は0から3まで、二萬の場合は4から7までの値が設定されています。
牌番号_一覧
| 牌 | 番号 | 牌 | 番号 |
|---|---|---|---|
| 一萬 | 0,1,2,3 | 一索 | 72,73,74,75 |
| 二萬 | 4,5,6,7 | 二索 | 76,77,78,79 |
| 三萬 | 8,9,19,11 | 三索 | 80,81,82,83 |
| 四萬 | 12,13,14,15 | 四索 | 84,85,86,87 |
| 五萬 | 16,17,18,19 | 五索 | 88,89,90,91 |
| 六萬 | 20,21,22,23 | 六索 | 92,93,94,95 |
| 七萬 | 24,25,26,27 | 七索 | 96,97,98,99 |
| 八萬 | 28,29,30,31 | 八索 | 100,101,102,103 |
| 九萬 | 32,33,34,35 | 九索 | 104,105,106,107 |
| 一筒 | 36,37,38,39 | 東 | 108,109,110,111 |
| 二筒 | 40,41,42,43 | 南 | 112,113,114,115 |
| 三筒 | 44,45,46,47 | 西 | 116,117,118,119 |
| 四筒 | 48,49,50,51 | 北 | 120,121,122,123 |
| 五筒 | 52,53,54,55 | 白 | 124,133,134,135 |
| 六筒 | 56,57,58,59 | 発 | 128,129,130,131 |
| 七筒 | 60,61,62,63 | 中 | 132,133,134,135 |
| 八筒 | 64,65,66,67 | - | - |
| 九筒 | 68,69,70,71 | - | - |
牌番号_赤牌
赤一枚の場合、同じ牌の中で番号が一番小さい牌番号(mod4で0となる牌)が設定されます。
赤一枚の五萬、五筒、五索の場合は、以下の番号が設定されています。
| 赤牌 | 番号 |
|---|---|
| 赤五萬(一枚の場合) | 16 |
| 赤五筒(一枚の場合) | 52 |
| 赤五索(一枚の場合) | 88 |
副露(鳴き)
副露に関する変数
天鳳牌譜mjlog形式では、副露(鳴き)が行われた場合には以下の形式で情報が格納されます。
<N who="2" m="42059" />
| 変数 | 概要 |
|---|---|
| N | 鳴いた相手の席番号 |
| m | 副露面子コード |
副露面子コード
副露面子コードとは、副露面子の状態を表す16ビットのビットフィールドを10進数の整数に変換した値となります。
16ビットのビットフィールドのそれぞれの意味は以下に記載します。
副露面子コード_副露面子の種別
16ビットのビットフィールドの以下フラグで、副露面子の種別を決定しています。
| 種別 | フラグ |
|---|---|
| 順子フラグ | 3ビット目が1の場合 |
| 刻子フラグ | 4ビット目が1の場合 |
| 加槓フラグ | 5ビット目が1の場合 |
| 北抜きフラグ | 6ビット目が1の場合 |
| 暗槓・大明槓 | 3-6ビットが全て0の場合 |
副露面子コード_牌添字
mjlogでは、4枚の一萬も異なる牌として処理されます。
副露面子コードでは、4枚の牌を区別するために「牌添字」が定義されいてます。
牌添字は、"[牌番号] mod 4"の値を計算して、計算結果の値を設定しています。
副露面子コード_元コード
副露面子種別ごとの副露面子コード
副露面子コード_順子
順子の場合の16ビットのビットフィールドは以下となります。
| ビット | 概要 | 説明 |
|---|---|---|
| 1-2 | 鳴いた相手 | 鳴いた相手を表す。相手は上家になるので、値は必ず3になる |
| 3 | 順子フラグ | 順子フラグを表す。値は必ず1になる |
| 4-5 | 牌添字1 | 最小の牌番号の牌添字 |
| 6-7 | 牌添字2 | 二番目に大きい(真ん中の)牌番号の牌添字 |
| 8-9 | 牌添字3 | 最大の牌番号の牌添字 |
| 10 | (未使用) | - |
| 11-16 | 順子の牌パターン番号 | 順子の構成を表す牌パターン番号が設定される |
副露面子コード_順子の牌パターン番号
| 牌パターン | 番号 | 牌パターン | 番号 |
|---|---|---|---|
| 一萬二萬三萬 | 0,1,2 | 一索二索三索 | 42,43,44 |
| 二萬三萬四萬 | 3,4,5 | 二索三索四索 | 45,46,47 |
| 三萬四萬五萬 | 6,7,8 | 三索四索五索 | 48,49,50 |
| 四萬五萬六萬 | 9,10,11 | 四索五索六索 | 51,52,53 |
| 五萬六萬七萬 | 12,13,14 | 五索六索七索 | 54,55,56 |
| 六萬七萬八萬 | 15,16,17 | 六索七索八索 | 57,58,59 |
| 七萬八萬九萬 | 18,19,20 | 七索八索九索 | 60,61,62 |
| 一筒二筒三萬 | 21,22,23 | - | - |
| 二筒三筒四萬 | 24,25,26 | - | - |
| 三筒四筒五萬 | 27,28,29 | - | - |
| 四筒五筒六萬 | 30,31,32 | - | - |
| 五筒六筒七萬 | 33,34,35 | - | - |
| 六筒七筒八萬 | 36,37,38 | - | - |
| 七筒八筒九萬 | 39,40,41 | - | - |
(補足説明)
牌パターンが「一萬二萬三萬」の場合に、牌パターン番号は「0,1,2」のいずれかの値が設定されます。
牌パターン番号から、以下鳴かれている牌を算出することができます。
| 牌パターン番号 | 状態 |
|---|---|
| 0 | 一萬二萬三萬の面子状態で一萬が鳴かれている場合 |
| 1 | 一萬二萬三萬の面子状態で二萬が鳴かれている場合 |
| 2 | 一萬二萬三萬の面子状態で三萬が鳴かれている場合 |
副露面子コード_刻子・加槓
刻子・加槓の場合の16ビットのビットフィールドは以下となります。
| ビット | 概要 | 説明 |
|---|---|---|
| 1-2 | 鳴いた相手 | 鳴いた相手を表す (下家:1, 対面:2, 上家:3, 暗槓・加槓:0) |
| 3 | 順子フラグ | 値は必ず0になる |
| 4 | 刻子フラグ | 刻子フラグを表す。刻子の場合には値が1になる |
| 5 | 加槓フラグ | 加槓フラグを表す。加槓の場合には値が1になる |
| 6-7 | 刻子未使用牌の牌添字 | 刻子に含まれない牌の牌添字 ポンの場合は使用していない牌の牌添字 加槓の場合は加槓で加えた牌の牌添字 |
| 8-9 | (未使用) | - |
| 10-16 | 刻子の牌パターン番号 | 刻子の構成を表す牌パターン番号が設定される |
副露面子コード_刻子・加槓の牌パターン番号
| 牌パターン | 番号 | 牌パターン | 番号 |
|---|---|---|---|
| 一萬一萬一萬 | 0,1,2 | 一索一索一索 | 54,55,56 |
| 二萬二萬二萬 | 3,4,5 | 二索二索二索 | 57,58,59 |
| 三萬三萬三萬 | 6,7,8 | 三索三索三索 | 60,61,62 |
| 四萬四萬四萬 | 9,10,11 | 四索四索四索 | 63,64,65 |
| 五萬五萬五萬 | 12,13,14 | 五索五索五索 | 66,67,68 |
| 六萬六萬六萬 | 15,16,17 | 六索六索六索 | 69,70,71 |
| 七萬七萬七萬 | 18,19,20 | 七索七索七索 | 72,73,74 |
| 八萬八萬八萬 | 21,22,23 | 八索八索八索 | 75,76,77 |
| 九萬九萬九萬 | 24,25,26 | 九索九索九索 | 78,79,80 |
| 一筒一筒一筒 | 27,28,29 | 東東東 | 81,82,83 |
| 二筒二筒二筒 | 30,31,32 | 南南南 | 84,85,86 |
| 三筒三筒三筒 | 33,34,35 | 西西西 | 87,88,80 |
| 四筒四筒四筒 | 36,37,38 | 北北北 | 90,91,92 |
| 五筒五筒五筒 | 39,40,41 | 白白白 | 93,94,96 |
| 六筒六筒六筒 | 42,43,44 | 発発発 | 96,97,98 |
| 七筒七筒七筒 | 45,46,47 | 中中中 | 99,100,101 |
| 八筒八筒八筒 | 48,49,50 | - | - |
| 九筒九筒九筒 | 51,52,53 | - | - |
(補足説明)
牌パターンが「一萬一萬一萬」の場合に、牌パターン番号は「0,1,2」のいずれかの値が設定されます。
未使用牌を除いて昇順に並べたとして、牌パターン番号から以下鳴かれている牌を算出することができます。
| 牌パターン番号 | 状態 |
|---|---|
| 0 | 一萬を未使用牌を除いて昇順に並べて、最小の牌番号が鳴かれた場合 |
| 1 | 一萬を未使用牌を除いて昇順に並べて、二番目に大きい(真ん中の)牌番号が鳴かれた場合 |
| 2 | 一萬を未使用牌を除いて昇順に並べて、最大の牌番号が鳴かれた場合 |
副露面子コード_暗槓・大明槓
暗槓・大明槓の場合の16ビットのビットフィールドは以下となります。
| ビット | 概要 | 説明 |
|---|---|---|
| 1-2 | 鳴いた相手 | 鳴いた相手を表す (下家:1, 対面:2, 上家:3, 暗槓・加槓:0) |
| 3 | 順子フラグ | 値は必ず0になる |
| 4 | 刻子フラグ | 値は必ず0になる |
| 5 | 加槓フラグ | 値は必ず0になる |
| 6 | 北抜きフラグ | 値は必ず0になる |
| 7-8 | (未使用) | - |
| 9-16 | 刻子の牌パターン番号 | 槓子の構成を表す牌パターン番号が設定される |
副露面子コード_暗槓・大明槓の牌パターン番号
| 牌パターン | 番号 | 牌パターン | 番号 |
|---|---|---|---|
| 一萬一萬一萬一萬 | 0,1,2,3 | 一索一索一索一索 | 72,73,74,75 |
| 二萬二萬二萬二萬 | 4,5,6,7 | 二索二索二索二索 | 76,77,78,79 |
| 三萬三萬三萬三萬 | 8,9,19,11 | 三索三索三索三索 | 80,81,82,83 |
| 四萬四萬四萬四萬 | 12,13,14,15 | 四索四索四索四索 | 84,85,86,87 |
| 五萬五萬五萬五萬 | 16,17,18,19 | 五索五索五索五索 | 88,89,90,91 |
| 六萬六萬六萬六萬 | 20,21,22,23 | 六索六索六索六索 | 92,93,94,95 |
| 七萬七萬七萬七萬 | 24,25,26,27 | 七索七索七索七索 | 96,97,98,99 |
| 八萬八萬八萬八萬 | 28,29,30,31 | 八索八索八索八索 | 100,101,102,103 |
| 九萬九萬九萬九萬 | 32,33,34,35 | 九索九索九索九索 | 104,105,106,107 |
| 一筒一筒一筒一筒 | 36,37,38,39 | 東東東東 | 108,109,110,111 |
| 二筒二筒二筒二筒 | 40,41,42,43 | 南南南南 | 112,113,114,115 |
| 三筒三筒三筒三筒 | 44,45,46,47 | 西西西西 | 116,117,118,119 |
| 四筒四筒四筒四筒 | 48,49,50,51 | 北北北北 | 120,121,122,123 |
| 五筒五筒五筒五筒 | 52,53,54,55 | 白白白白 | 124,133,134,135 |
| 六筒六筒六筒六筒 | 56,57,58,59 | 発発発発 | 128,129,130,131 |
| 七筒七筒七筒七筒 | 60,61,62,63 | 中中中中 | 132,133,134,135 |
| 八筒八筒八筒八筒 | 64,65,66,67 | - | - |
| 九筒九筒九筒九筒 | 68,69,70,71 | - | - |
(補足説明)
牌パターンが「一萬一萬一萬一萬」の場合に、牌パターン番号は「0,1,2,3」のいずれかの値が設定されます。
牌番号を昇順に並べたとして、牌パターン番号から以下鳴かれている牌を算出することができます。
| 牌パターン番号 | 状態 |
|---|---|
| 0 | 牌番号を昇順に並べて、最小の牌番号が鳴かれた場合 |
| 1 | 牌番号を昇順に並べて、二番目に大きい牌番号が鳴かれた場合 |
| 2 | 牌番号を昇順に並べて、三番目に大きい牌番号が鳴かれた場合 |
| 3 | 牌番号を昇順に並べて、最大の牌番号が鳴かれた場合 |