麻雀の副露判断アルゴリズム(3) - koba::blog で喰い仕掛けで手を完成させることができるようになったが、打牌を見ていると無駄がありそうである。例えば
の場合、打 は 、、、、、 の6種20枚待ち、打 だとそれに加えて 3枚も待ちになるが、 の面子が完成するのでタンヤオに移行できなくなってしまう。打 であれば、、 ポン、、 チーでも手を進めることができる。
続きを読む麻雀の副露判断アルゴリズム(3) - koba::blog で喰い仕掛けで手を完成させることができるようになったが、打牌を見ていると無駄がありそうである。例えば
の場合、打 は 、、、、、 の6種20枚待ち、打 だとそれに加えて 3枚も待ちになるが、 の面子が完成するのでタンヤオに移行できなくなってしまう。打 であれば、、 ポン、、 チーでも手を進めることができる。
続きを読む麻雀の副露判断アルゴリズム(2) - koba::blog で役ありの向聴数が計算できるようになったので、基本的には向聴数が減る場合に鳴けばよいのであるが、実際に動かしてみると以下の問題があった。
今回はこれを調整する。
*1:これは大明槓する条件を「向聴数が増えないとき」にしていたから
麻雀の副露判断アルゴリズム(1) - koba::blog で準備ができたので、今回は特定の役に対する向聴数計算ルーチンを実装していく。
日本の麻雀では以下の役について向聴数が計算できればすべての喰い仕掛けがカバーできる。
5以下はレアケースなので、1〜4の向聴数計算ルーチンを実装することにした*5。
電脳麻将 ver.0.6 では喰い仕掛けを実装した。基本的に向聴数が減るように鳴いていけばいずれ聴牌する*1のであるが、やみくもに鳴くと役なし聴牌となり和了できない状態になってしまう。実は以前から向聴数の減るときに鳴くという処理は実装済みなのだが封印してあったのだ。*2
役なし聴牌を回避するアイデアとして、特定の条件のときにのみに鳴くという方法が考えられる。例えば「役牌は鳴いてよい」、「幺九牌のないときに中張牌は鳴いてよい」などであるが、いかにも付け焼き刃な方法で一貫性がない。それより汎用的な方法として、
という方法を思いついたので、それにしたがって実装することにした。
続きを読む電脳麻将 を ver.0.6 にバージョンアップしました。
今回のバージョンアップでは
ようになりました。
これでようやく麻雀ゲームとしては一人前になりました。
ver.0.7 ではAIの改良は一旦中断し、牌譜エディタの機能を追加しようと考えています。
麻雀の打牌選択アルゴリズム(1) - koba::blog、麻雀の打牌選択アルゴリズム(2) - koba::blog で待ち受けを広くする打牌はある程度選択できるようになったのだが、孤立牌の打牌に問題が残っていた。
例えば
の牌姿の場合、打 、 ともに の5種14枚の待ちとなるのだが、赤ドラかつ中張牌でくっつきの可能性が高い を打牌してしまう(評価が同じ場合手牌の右側から切るため)。
今回は牌の評価値を求めることで中張牌やドラを残すよう改善する。
続きを読む