見出し画像

麻雀学習支援ツール「局収支君」

割引あり

麻雀というゲームは、思考アプローチが多角的に存在することに加え、正しい判断をするためには状況に応じて情報の優先度付けをしたうえで対応しなければなりません。
麻雀にはこういった「脳リソースを多く使う」という性質があるため、新たに身につけたい技術があっても、様々な事象に気を取られて中々思うように学習が進まないというのはよくある事です。

守備に関して考えることは攻撃よりも多くありますが、本noteの趣旨から脱線してしまうことになるので、今回は「攻撃」に絞って話を進めていきます。

「攻撃」の面で、基本となる技術はやはり「牌効率」です。これに関しては、学習で伸びやすい部分ですね。今年リリースされたGウザクさんの「ウザク式何切る」アプリなんかは平面の牌効率を学習する上で非常に有用なツールだと思います。
ここまでは、体系的に学べるところ。しかし、麻雀にはこの上に「押し引き」という難しい問題が乗っかっています。
その「押し引き」を語るうえで、よく話題に出るのが「局収支」
これは、自身の打点期待値がベタオリした場合の局収支と比較して上回れば「押し優位」という考え方です。

因みに、局収支の計算式は下記のように表されます。

和了率×和了時取得点-放銃率×放銃時失点
-被ツモ率×被ツモ時失点-横移動率×横移動時失点
+流局率×流局時得点

みーにん著 「統計学」の麻雀戦術より

・・・これ、対局中計算できる?

いや、無理無理無理www
さらに打点期待値と打点はイコールではないので、期待値計算も必要。こんなん、誰が暗算で出来んねん。

ってことで、局収支についてはある程度暗記項目としてインプットしたうえで「これくらいだったら押しかなー」っていうふうにファジーに使っている方が大半だと思います。ガチ天才さん、対局中に計算してたらごめんよ。

巷でも、局収支がーとかって話をよく聞いてきましたが、僕は、それを瞬時に計算できないですし、自分の中に基準がない状態ではその時その時に語られている局収支が正しいデータなのかどうかさえ分からなかったんですよね。
そこで、先ほど引用させていただいたみーにんさんの「統計学」の麻雀戦術を参考にして、実際に自分で計算してみることにしました。

その計算をしているときに、ちょうど「筋カウント」をするアプリをノリで作っていて、「これ組み合わせたら面白いものができるんじゃない?」と思い立ったことが本アプリの製作に至った経緯です。

これらをできるだけ分かりやすく使いやすいユーザーインターフェースに落とし込めるよう試行錯誤した結果、以下のような感じに。

局収支君

ここからはこのアプリの中身について簡単に紹介させていただきます。
----------------------------------------------------
【基本事項について】

本アプリは、追っかけ立直(最後ひと牌を押してリーチするか否か)という場面を想定して制作しており、すべて11巡目の時点のデータで計算しています。この設定については、ベースとなる押し引きを学ぶ上では問題ないと考えておりますが、巡目によって押し引きの基準打点が異なる場合がありますので、その点につきましてはご留意ください。
また、本アプリは相手の待ちを両面と想定した上での放銃率を元に計算をおこなっているため、基本的には相手が両面と思われる時のみ有効です。
しかしながら、「愚形待ちを考慮してもっと精度高い放銃率が分かるぜ!」とか、「相手の愚形待ちに刺さる確率を自分で出すから、その場合の要求打点が知りたい!」という方もいらっしゃることと思います。
そんな方々のために、放銃率の手入力欄を追加実装検討中ですので、ご意見お寄せいただければと思います。
----------------------------------------------------
【内部計算の流れ】

〜50符、〜8翻までの立直時打点について個別に算出した「立直時打点期待値」を対応表に格納。

「筋カウント」を用いて、現段階での「放銃率」を算出し、それを用いてベタオリ時の局収支とイコールになる打点aを算出。

立直時打点期待値が打点a以上になるもののうち1番低い立直時打点(要求打点)を対応表から引っ張ってきて表示。
同時に要求打点の和了時得点期待値と、ベタオリ時の局収支と同等になる和了時得点との差を「局収支差」として表示。

これが内部計算の大まかな流れで、これにトグルボタンの分岐を絡ませています。
当たり前ですが、要求打点については、自家が親の時は親の打点を、子の時は子の打点を表示するようにしています。因みに愚形立直の場合については、30符がないので40符以降の得点が要求打点として表示されます。
----------------------------------------------------
【マニュアル的なやつ】

○カウンターボタン
通った筋の数を押しましょう。4枚見えの牌を見落とさないように注意。

○両面放銃率
「相手が両面待ちである」という想定の元算出した放銃率です。

○要求打点
ベタオリ時局収支と同等の局収支になる打点aを算出し、それを立直時打点期待値と照らし合わせて逆算したものです。なお、表示されている打点は立直を含んだものとなっています。
※打点が同じでも翻数によって打点期待値は異なるので、表示を分けています。例えば、8000(4翻)は、立直込みで4翻になる満貫のことです。

○局収支差
「要求打点でリーチをかけた時の和了時打点期待値」と「ベタオリ時局収支」との差です。どれだけ押し優位かを図るための判断材料にして下さい。
野暮な解説かもしれませんが、プラスで書かれているからといって局収支が0を上回るという意味ではありません。あくまでもベタオリした時と比べてどれだけプラスかということです。

自身の待ちは愚形の立直判断。片スジの通常牌(一発やドラではない)を押そうとしている場面だと考えて下さい。
通っている筋は、対面:10筋 上家:4筋

例えば、上記画像のような状態だと、
●対面に対しては、立直時打点が2600点あれば、押して立直するとベタオリした時よりも局収支が+1364点高くなります。これは局収支差が大きいため、かなり押し優位という判断ができますね。

●上家に対して片筋になっている牌を1300点の立直のみで打った場合、ベタオリ時との局収支差が35点しかありません。一応、ベタオリ時よりも局収支は上回ってはいるものの、これは有って無いような差なので、押すのであればもうひとつ上の打点が欲しいという判断ができると思います。

○トグルボタン
●子/親ボタン
誰が親かを設定するボタンです。親に設定したところ以外は、自動で「子」に切り替わります。

●愚形/良形ボタン
自身の待ちが愚形なら「愚形」、良形なら「良形」を選択して下さい。

●通常/一翻UPボタン
自身が押そうとしている牌が一翻アップの場合、トグルボタンをオンにして下さい。
一発でもなく、ドラでもない牌を押そうとしている場合は「通常」を選択。
----------------------------------------------------
【!使用上の注意!】

雀魂の段位戦では外部ツールの利用は禁止されていますので、実戦利用については、友人戦(勉強会)などに限定してご活用ください。
もし、当ツールを段位戦で使ってBanされても私は一切の責任を負うことができませんので、その点につきましては予めご了承いただきますようお願い申し上げます。
因みに天鳳についてはやっていないので分からないですが、無用なトラブルを避けるためにも段位戦で使うのはやめていただければと思います。
あくまで学習用ツールですので、基本的には牌譜検討で使ったり、放送対局や配信などを見ながら使うことを想定しています。
なお、本exeファイルついてウイルス誤検知される場合は、お手数ですがセキュリティーソフトの除外設定等で対応をお願いいたします。
また、サンマモードについては、現時点では筋カウントのみの実装となっていますのでご了承ください。
----------------------------------------------------
【あとがきみたいなやつ】

プログラミングについては独学でちょっとだけかじった程度だったので作成には難儀しましたが、ChatGPT-4oという文明の利器を最大限活用して何とか1週間程度で形にすることができました。
基本的には、親トグルボタンを設定し、カウントボタンをクリックするだけの簡単仕様なので、何度も繰り返し見て自然に覚えられるのが利点だと思っています。
本アプリを使用することにより、放銃率○%で対親、一発ドラなしなら要求打点△だな〜を「点数計算何回も見てたら自然と覚えた!」に似た感じで学習できればいいなと思っています。
みんな、局収支インプットしていこうぜー!

※本noteを購入して下さった方については、デスクトップアプリ「局収支君」のダウンロードが可能となっています。
なお、本アプリの著作権は、私まぐろふぉんに帰属します。当然ではありますが、二次配布や内容を改変しての販売など、著作権を侵害する行為はすべて禁止とさせていただきます。

ここから先は

0字 / 1ファイル

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?