『しらぎくモバイル麻雀』に於けるバグのご報告とお詫び(令和 2年12月25日)

  • トゥィッターで言及(トゥィート)
  • はてなブックマークに登録
  • フェイスブックで共有
  • タンブラーで共有
  • ラインに送る

しらぎくモバイル麻雀』HTML5 版に重大なバグが確認されました。

この度はご迷惑をお掛けした事を深くお詫び申し上げます。

不具合の概要

今回の不具合は、ある条件のもとで役が正常に判定されないと言うものでした。

既にバグの原因を特定して修正しており、現在のヴァージョンでは問題なく判定されるようになりました。

  • 画像は、全く同じ手を与えておいて修正前の不具合を再現したものと、修正後に問題が起こっていない事を確認した際のスクリーンショットです。

不具合の原因

今回の不具合の原因は、

  • 一色三順を完全に判定するため
  • 立直後に正しく暗槓出来ない牌をチェックするため

に導入した機能が原因でした。

具体的には、従来『しらぎくモバイル麻雀』では

  • 下から順子優先で門子分けしての役判定(順子→雀頭→刻子)
  • 下から刻子優先で門子分けしての役判定(刻子→雀頭→順子)

の二つの門子判定を導入していたのですが、これに加えて、

  • 上から順子優先で門子分けしての役判定(順子→雀頭→刻子)

を追加した際このコードにバグが有ったのです。

追加したコードが何故必要か

従来。『しらぎくモバイル麻雀』では役判定の際には

  • 下から順子優先で門子分けしての役判定
  • 下から刻子優先で門子分けしての役判定

の二つの方法だけで判定し、高い方を採用すると言うものでした。

これに依り、例えば

  • [両索][両索][三索][三索][四索][四索][五索][五索][両筒][三筒][四筒][二万][四万] [三万]栄和

と言う手であれば前者の方法だと

  • [両索][三索][四索]の順子, [両索][三索][四索]の順子, [五索][五索]の雀頭, [両筒][三筒][四筒]の順子, [二万][三万][四万]の順子

となって、断幺九三色同順一盃口の四翻、後者の場合は

  • [両索][両索]の雀頭, [三索][四索][五索]の順子, [三索][四索][五索]の順子, [両筒][三筒][四筒]の順子, [二万][三万][四万]の順子

となって、断幺九・一盃口の両翻となり、前者の方を取る事となります。

一方、

  • [両索][両索][三索][三索][四索][四索][五索][五索][三筒][四筒][五筒][三万][伍万] [四万] 栄和

と言う手であれば前者の方法だと

  • [両索][三索][四索]の順子, [両索][三索][四索]の順子, [五索][五索]の雀頭, [三筒][四筒][五筒]の順子, [三万][四万][伍万]の順子

となって、断幺九・一盃口の両翻、後者の場合は

  • [両索][両索]の雀頭, [三索][四索][五索]の順子, [三索][四索][五索]の順子, [三筒][四筒][五筒]の順子, [三万][四万][伍万]の順子

となって、断幺九・三色同順・一盃口の四翻となり、後者の方を取る事となります。

二パターンだけでは問題が生じる例

ところが、一色三順ありのルールで

  • [両索][両索][三索][三索][三索][四索][四索][四索][五索][五索][三筒][四筒][五筒] [五索] 栄和

と言う手であれば前者の方法だと

  • [両索][三索][四索]の順子, [両索][三索][四索]の順子, [三索][四索][五索]の順子, [五索][五索]の雀頭, [三筒][四筒][五筒]の順子

となり、断幺九・平和・一盃口の三翻、後者の方法でも

  • [両索][両索]の雀頭, [三索][三索][三索]の暗刻, [四索][四索][四索]の暗刻, [五索][五索][五索]の明刻, [三筒][四筒][五筒]の順子

となり、断幺九のみ(栄和なので [五索] の刻子は明刻で従って三暗刻にならない)、三連刻ありでも三翻となり、いずれの場合にも一色三順が判定されません。

そこで、上から順子優先で判定する事で、上記の手も

  • [三筒][四筒][五筒]の順子, [三索][四索][五索]の順子, [三索][四索][五索]の順子, [三索][四索][五索]の順子, [両索][両索]の雀頭

となってやっと断幺九・平和・一色三順の四翻と判定出来るようになります。

他にも必要な例

ここまで書くと、「一色三順なんてローカル役など採用しなければいいだけの話じゃないか」と言いたくなるかも知れません。

ですが、新たに加えた「上から順子優先で門子を落とす」のは、

  • 立直後に正しく暗槓出来ない牌を判定する

のにも必要でした。

しらぎくモバイル麻雀』及び『しらぎく麻雀』では、立直後の暗槓の可否を判定するため、以下の方法を採っております:

  1. 初めに手の中にある三枚持ちの牌をリストアップする
  2. 各待ち牌で順子優先で門子分けを行い、リストされた牌が暗刻とならなければリストから削除する
  3. 最終的にリストに残った牌は立直後も暗槓出来るものとする

しらぎくモバイル麻雀』では従来は下から順子優先で門子を落とす方法だけを採っていたため、例えば

  • [一索][一索][一索][両索][両索][両索][三索][三索][三索][四索][四索][四索][九万]

と言う手の場合、先ず暗槓可能牌候補リストには取敢えず[一索], [両索], [三索], 及び[四索]の四種がリストに挙げられます。

さて、唯一の待ち牌となる[九万]を加えて下から順子優先で門子分けすると、

  • [一索][両索][三索]の順子, [一索][両索][三索]の順子, [一索][両索][三索]の順子, [四索][四索][四索]の暗刻, [九万][九万]の雀頭

と解析されて[一索], [両索]と[三索]は暗刻とはならず、このため暗槓可能牌リストから除外されました。

しかし[四索]は暗刻となっているためリストからは消えず、従ってこのままだと[四索]は立直後に暗槓出来る牌と誤認してしまいます

  • 勿論、これは違反行為ですよね?

そこで、下からだけでなく上からも順子優先で落とせば、

  • [九万][九万]の雀頭, [両索][三索][四索]の順子, [両索][三索][四索]の順子, [両索][三索][四索]の順子, [一索][一索][一索]の暗刻

となって[四索]も暗刻とならず従ってリストから除外され、結果[一索], [両索], [三索], 及び[四索]のいずれの牌も立直後には暗槓出来ないと言う事が明らかになります。