Skip to content

Majiang.Util

Satoshi Kobayashi edited this page Apr 12, 2022 · 6 revisions

シャンテン数計算、和了点計算ルーチン

シャンテン数計算

xiangting()

shoupai のシャンテン数を返す。

xiangting_yiban()

shoupai の一般手(七対子形、国士無双形以外)としてのシャンテン数を返す。

xiangting_qidui()

shoupai の七対子形としてのシャンテン数を返す。

xiangting_guoshi()

shoupai の国士無双形としてのシャンテン数を返す。

tingpai()

shoupai に1枚加えるとシャンテン数の進む の配列を返す。 f_xiangting で指定された関数をシャンテン数計算の際に使用する。 返り値には赤牌は含まない。 shoupai がツモると多牌になる場合は null を返す。

和了点計算

hule()

shoupai の和了点を計算し、和了情報とともに返す。 ツモ和了の場合は shoupai はツモ牌を加えた状態で rongpai は null とする。 ロン和了の場合は shoupai はロン牌を加えない状態で rongpai はロンした とする。rongpai には誰がロンしたかを示す +(下家から和了)/=(対面から和了)/-(上家から和了) のフラグを付加する。 param は以下の構造のオブジェクトであり、和了点計算に使用する場況情報を示す。

{
    rule:           Majiang.rule(),
    zhuangfeng:     0,
    menfeng:        0,
    hupai: {
        lizhi:      0,
        yifa:       false,
        qianggang:  false,
        lingshang:  false,
        haidi:      0,
        tianhu:     0
    },
    baopai:         [ 'm1' ],
    fubaopai:       null,
    jicun: {
        changbang:  0,
        lizhibang:  0      
    }
}
  • rule: 和了点計算時に使用する ルール
  • zhuangfeng: 場風。(0: 東、1: 南、2: 西、3: 北)
  • menfeng: 自風。(0: 東、1: 南、2: 西、3: 北)
  • hupai: 状況役
    • lizhi: 0: リーチなし、1: リーチ、2: ダブルリーチ。
    • yifa: 一発のとき true。
    • qianggang: 槍槓のとき true。
    • lingshang: 嶺上開花のとき true。
    • haidi: 0: ハイテイなし、1: ハイテイツモ、2: ハイテイロン。
    • tianhu: 0: 天和/地和なし、1: 天和、2: 地和。
  • baopai: ドラ表示の配列。
  • fubaopai: 裏ドラ表示の配列。リーチのない場合は null。
  • jicun: 供託
    • changbang: 積み棒の本数。
    • lizhibang: リーチ棒の本数。

返り値は以下の構造のオブジェクトである。

{
    hupai:      [ { name: "立直", fanshu: 1 },
                  { name: "門前清自模和", fanshu: 1 },
                  { name: "裏ドラ", fanshu: 1 } ],
    fu:         40,
    fanshu:     3,
    damanguan:  null,
    defen:      5200,
    fenpei:     [ -2600, 6200, -1300, -1300 ]
}
  • hupai: 和了役の配列。それぞれの要素には役名を示す name と翻数を示す fanshu がある。 役満の場合 fanshu は数字ではなく、和了役それぞれの役満複合数分の * となる。 また役満のパオがあった場合は baojia に責任者を設定する。
  • fu: 符。役満の場合は undefined。
  • fanshu: 翻数。役満の場合は undefined。
  • damanguan: 役満複合数。複合には四暗刻をダブル役満にする類のものと、大三元と字一色の複合のような役の複合のケースがある。役満でない場合は undefined。
  • defen: 和了打点。供託収入は含まない。
  • fenpei: 供託を含めたその局の点数の収支。その局の東家から順に並べる。 リーチ宣言による1000点減は収支に含めない。

hule_param()

  • param = {} - Object
  • 返り値 - Object

param で指定された値を元に Majiang.Util#hule の第3パラメータに使用する場況情報を返す。

hule_mianzi()

shoupai の手牌から rongpai で和了したときの和了形の一覧を返す。 和了形にならない場合は空配列を返す。

Clone this wiki locally