*All archives* |  *Admin*

<<05  2017/06  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  07>>
floodgate for mahjong へ参戦その5・国士チートイ偏重対策
単なる棒テン即リー全ツッパAIだと、チートイのシャンテン数<面子手のシャンテン数のときに、
暗刻から1枚切ったり、場に出てる牌を切ってシュンツを壊してしまうケースが散見されるという課題を前回挙げました。

同じことは国士に対しても言えます。
配牌がバラバラのときに、国士のシャンテン数が最も低かった時に国士決め打ちで初手赤5切りみたいなのがありました。

このあたりを改善するために、面子手・チートイ・国士のシャンテン数ごとに場合分けをして、微妙にアルゴリズムを変えてみます。

具体的なチャートは以下の通りです。

○国士シャンテン数について(国士のシャンテン数が最小のとき)
 国士2シャンテン以下→国士決め打ちで真ん中牌・ドラから切り出す。

 国士3シャンテン
  ・チートイシャンテン数
   チートイ3シャンテン
    面子手3シャンテン→1次有効牌が最も多い打牌
    面子手4シャンテン→対子・暗刻以外の牌で面子手4シャンテンをキープできる打牌(国士はみない)
    面子手5シャンテン以上→チートイに決め打ち(対子暗刻ドラ以外の牌で場に多く切れてる牌or真ん中牌)(国士は見ない)
   チートイ4シャンテン→面子手にしぼる(面子手1次有効牌が最も多い打牌)(国士はみない)
   チートイ5シャンテン以上かつ面子手5シャンテン以上→国士決め打ちで真ん中牌・ドラから切り出す。

 国士4シャンテン以上→面子手にしぼる(面子手1次有効牌が最も多い打牌)(国士はみない)

○チートイシャンテン数について(チートイのシャンテン数が最小のとき)
 チートイ1シャンテン以下
  面子手1シャンテン以下→1次有効牌が最も多い打牌
  面子手2シャンテン以上→チートイに決め打ち(対子暗刻ドラ以外の牌で場に多く切れてる牌or真ん中牌)
 
 チートイ2シャンテン
  面子手2シャンテン→1次有効牌が最も多い打牌
  面子手3シャンテン→対子・暗刻以外の牌で面子手3シャンテンをキープできる打牌
  面子手4シャンテン→チートイに決め打ち(対子暗刻ドラ以外の牌で場に多く切れてる牌or真ん中牌)

 チートイ3シャンテン
  面子手3シャンテン→1次有効牌が最も多い打牌
  面子手4シャンテン→対子・暗刻以外の牌で面子手4シャンテンをキープできる打牌
  面子手5シャンテン→チートイに決め打ち(対子暗刻ドラ以外の牌で場に多く切れてる牌or真ん中牌)

 チートイ4シャンテン以上→面子手にしぼる(面子手1次有効牌が最も多い打牌)

(チャート終わり)


一言で言えば「面子手優先・遠い国士チートイはみない」です。

とりあえずこのように変えてみて何戦か打たせたところ、一見まともそうな挙動になりました。

まぁ場合分けが多くてかなり大変でしたけど、多少プログラムの行数が増えてもビルド時間の増加とexeファイルのサイズがちょっと増えるだけで処理速度は多分落ちないなので、まぁよいことにします。アウトライン機能で非表示にまとめればコードの可読性もそこまで悪くないですし。

再帰計算の関数を作るのはまだこれからです。ぼちぼちがんばりましょう。
スポンサーサイト

コメントの投稿

Secret
(非公開コメント受付中)

コメント

プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード