ゲーム機やインターネットなゲームで麻雀とかしたりしますが、
いまだ満貫未満の点数が計算できません。
卓を囲んで実際に人とやる機会がないので、
そもそも必要性がなかったりしますが(^_^;)
その昔に実際にやったことはありますが、
誰かが計算してくれました。
そんなわけで機械(or誰か)に任せればよいのですが、
あと何点とれば逆転できるのだろうとか、
そういった場合に困ったりします(^_^;)
なので、
計算の仕組みとか知っておいた方がよいかなと、
思ったりしました。

 以前に、
麻雀の向聴数と有効牌を確認」するツールとか
作ったりしましたが、
これを利用すれば点数計算機的なものが作れるのではないか?
そして計算の仕組みとかを学ぶのにもちょうどよいのでは、
とやってみた次第です。

 見たままの状況や牌姿を入力するのが分かりやすいと思うので、
そんな感じのユーザーインターフェースで行くことにしました。
シャンテン数の計算とその時の有効牌を取得するのにこちら
点数計算の詳細についてはこちらを参考にしました。

 さて、
麻雀の点数計算は「符」と「翻」の2段になっていて、
ざっくり言えば「符✕2翻+2」が基本な感じです。

 で、
子のロンは放銃者から基本点✕4,
ツモなら親から✕2+2人の子からそれぞれ✕1、
親のロンは放銃者から✕6,
ツモなら3人の子からそれぞれ✕2を
もらうことになります。
つまり親の場合は1.5倍になります。

 符に関しては1の位は切り上げることになっているので、
20,30,40,…といった感じになり、
通常は70くらいまでで収まるっぽい?ので、
大抵はあるていど数が限られる感じです。
なので符を求めさえすれば大体どうにかになりそうです。
さらに、多くの和了はいくつかのパターンを覚えておけば
対応できそうな雰囲気です。

 「翻」の計算は、
例えばピンフなら1翻とか決まってるので、
それを合計するだけです。
ただ三色同順とかは食い下がり役とかになっていて、
門前なら2翻のところを
鳴くと1翻に下がるので注意は必要ですが。

 「符」の方はいろいろメンドイ(^_^;)
以下のような感じになっています。

副底(フーテイ)和了ればもれなく20符。
アガリ方 ツモなら2符。門前ロンなら10符。
待ちの形 辺張、嵌張、単騎待ちならそれぞれ2符。
雀頭: 役牌(三元牌、場風牌、自風牌)なら2符。
面子の形
 中張牌の明刻、暗刻、明槓、暗槓はそれぞれ2,4,8,16符、
 么九牌の明刻、暗刻、明槓、暗槓はそれぞれ4,8,16,32符。

 これだけでも覚えるのが大変そうなのですが、
例外があって、
ピンフのツモはツモ符なしの20符、
七対子は常に25符、
鳴きピンフ形のロン和了は30符
となっています。

 ピンフというのはこちらに書いてあるように、
門前の両面待ちで副底以外の符が付かない役という定義になっているので、
符計算上の例外的な感じになっているようですね。
符が付かないたな了なので「平和」という名前なのですね。

 ややこしいことに、
ルールによって採用、不採用のがあったりします・・・(^_^;)
60符3翻や30符4翻は切り上げ満貫、
連風牌の雀頭は4符、
嶺上開花のツモ2符はなし
など。
歴史的な経緯とかで色々と複雑なようです。

 そんなわけで、
一般的と思われる喰いタン後付けありの、
いわゆる「ありあり」ルールを原則としました。
それから、
天和、地和、人和、流し満貫、ローカルな役、
積み場、供託リーチ料、包(パオ)
については自明なので計算する必要なかったり、
自動で計算するのが困難だったりするので対応しないことにしました。
ただ、数え役満、ダブル役満以上、符計算の差異などについては、
ある程度設定で対応することにしました。

 それから、 
役の複合や高点法については、
参考にしたソースコードにしたがって実装しているので、
問題は起こらないと思うのですが、
おかしな結果になったりした場合は報告してもらえると助かります(^_^;)
ひと通りはチェックしているつもりですが、
役の複合とかは組み合わせが多いので網羅し切れないので。

 ちなみに、
今回初めて知ったのですが、
「翻」の文字は「飜」というのもあるそうです。
どっちが間違っているというわけではなく、どっちでも良いそうです。
個人的には後者の方がなんとなく格好良い感じがします。
ただ画数が多いので書くとなったら面倒そうですね(^_^;)

 ということで、
麻雀点数計算機を試してみるにはこちらからどうぞ。

★2019-10-03追記。
加カンした時の牌が赤牌だった場合に、赤ドラの役判定していなかった問題を修正しました。

★2019-11-08追記。
無駄なデータを削除するなどして、読み込み時間の短縮を図ってみました。

★2021-02-19追記。
とある数牌について、暗刻+4つ目の牌で嵌張待ちとかのロン和了の場合に、暗刻ではなく明刻と判定してしまうバグ(^_^;)がありましたので、修正しました。嵌張待ち三暗刻なのに、三暗刻が成立してなかったりしてましたm(__)m

コメントする

メールアドレスが公開されることはありません。が付いている欄は必須項目です。