麻雀プログラムの動作チェックは牌画を表示させることで格段に作業効率が向上するというお話です。
目次
動作チェックとバグ取りをしっかりやろう
完成したと思ったプログラムでも思わぬバグが潜んでいることがあります。一見正常に動いていても正しい結果が返ってこないこともあります。たとえば、シャンテンチェックプログラムにも次のような不具合が残っています。なお、これら不具合は現在は解決済です(2015/03/18現在)
不具合その1~手牌にカンツがあるケース
雀頭で抜き出した残り2枚がメンツ候補としてカウントされたり、コーツで抜き出した残り1枚が単騎待ち牌になったりします。したがって正確なシャンテン数が算出されません。


不具合その2~メンツがターツ扱いになる
抜き出し方でメンツがターツ扱いになるパターンがあるのは当然なのですが、メンツとして認識されるパターンが出現しないのは深刻です。同じく、このケースも正確なシャンテン数を得ることができません。


- 赤ドラに対応
- 手牌入力操作の改善
- 赤ドラがリセットされない不具合を修正
同種牌のシャンポン待ちができないようにした5枚目の単騎待ちができないようにした- コードを大幅に見直し修正。2015年4月3日現在
- シュンツの抜き方を大幅に見直し修正。2015年12月01日現在
再帰呼び出しで組み直したプログラムも紹介しています。シュンツ抜き取り漏れが解決しています。ご参考ください。通常手のアガリとシャンテン数を算出する~再帰呼び出し版
動作チェックプログラムの実行
抜き出しパターンは手牌でも10通り以上、一色手になると50回以上の抜き出しパターンが現れることがあります。ここから最適化されたパターンを探しだすのは非常に困難です。シャンテン数が合っていてもそれが正しいのかを見極めるのは難しいです。というわけで、抜き出しパターンを牌画で視覚化して見やすくなるようにしてみました。作業効率が飛躍的に向上しました。実際に運用した感想です。おかげで沢山のバグが見つかり、プログラムの見直しの機会を得ることができました(笑)
実行してみよう
今回は通常手のアガリとシャンテン数をチェックするプログラムの動作チェックをします。牌画をクリックして手牌を作り、[動作チェックする]ボタンを押してシャンテン数と抜き出しパターンを出力します。以上です。
今後の展望
プログラムは試行回数を減らしたりコードをスッキリさせるなど、見直す必要があると思います。今後も新しい不具合が見つかるかもしれません。チェックを重ねてより良いプログラムを公開できるように努めるつもりです。
JavaScriptソースコード
本記事で紹介したサンプルプログラムをダウンロードできます。
ダウンロードをする前にお読みください
- サイトで紹介している記事の内容や公開しているプログラムの動作は100%保障するものではありません。
- 当プログラム使用による如何なる不具合やトラブル、損害の責任も負いかねます。
- 当プログラムは断り無く内容が変わることがあります。
- 当プログラムを別サイトで配布することは禁止します。
- サポートはいたしません。
- 自己責任にてご利用くださいませ。
以上をご確認の上、プログラムのダウンロードをお願いいたします。
- 本プログラムはjQueryを組み込んだ状態じゃないと動作しません。ご注意ください。
- アガリ判定とシャンテン数を算出する処理は「麻雀C言語プログラム集」のシャンテン数を参考にしています。
サンプルプログラムのソースコード
ソースコードは折りたたんであります。[+]を押すと、折りたたまれたソースコードが開きます。[-]を押すと、コードは折りたたまれます。
おすすめレンタルサーバー
エックスサーバー|高速・高機能レンタルサーバー
「オールSSDの快適ハイスペック環境」「国内管理、大容量バックボーン」「独自SSLが無料」「FastCGIなどの高速化機能」「最新のPHP7を実装」など、高機能・高コストパフォーマンスなレンタルサーバーです。※当サイトも「エックスサーバー」で運用しています。