アクセス解析してみると……
ごくわずかですが、このブログに麻雀のプログラミングの情報を求めて検索サイトから訪れる方もいるみたいです。時々有益な情報を載せていきたいですが、基本的に作業記録なんであまり情報が無いです、すいません。
初めての方なら以下の手順で進めると、最低限、上がりに向かうアルゴリズムは作れます。
1. 手牌を表現するクラス(構造体)の作成
2. 手牌を面子候補(ターツ、順子、刻子、対子、孤立牌)に分類する全パターンをリストアップする。
3. 分類した手牌のシャンテン数を調べるアルゴリズムの作成。
4. シャンテン数を上げるための受け入れ牌をリストアップする処理の作成
5. 1枚牌を取り除いて、シャンテン数を下がらず、受け入れ牌が一番多い牌を切る。
1は、2パターンのデータの表現方法を用意します。1つは単純に、どの牌を何枚持っているかを記録する方法。もう一つは手牌を面子(面子候補)に分類したときのデータの表現。
2の処理が最初思いつかなくて大変かもしれませんが、これは、再帰呼び出しを使ったバックトラック法で行えます。或る程度レベルのアルゴリズムの本なら、パズルを解く方法としてバックトラック法の処理は紹介されていますので、それを麻雀の場合に応用すればプログラムは組めます。
シャンテン数のカウントはターツ、面子、対子の数を数えることで行えます。
上記の処理ができれば得点計算も、ゲーム進行部分も根気で何とかなります。
| 固定リンク
この記事へのコメントは終了しました。
コメント