麻雀のアルゴリズム1
麻雀を作るために必要な処理は、
- 麻雀のルールの実装
- CPUの思考ルーチン
となります。
まあ、ゲームの本質は「ルール」と「遊び相手」ですから、
当たり前といえば当たり前なのですが…。
とりあえず、CPUの思考ルーチンは後回しです。
そもそも、ルールが確立できていなければ、思考ルーチンなんて作れませんよね。
そして、「麻雀のルールの実装」は
- 全体の流れ
- 役判定
- 得点計算
に分けることができます。
これも全体の流れは、一応考えておかなければいけませんが、
「役判定」ができていないとなんともならないので、
それから作るものとします。
で、「役判定」ですが、さらに(まだ細分化するのか…)
- 上がり判定
- 役そのものを判定
というものに分けられます。
「上がり判定」は簡単です。
↓ここを参考にすればいいからです。
http://www.onionsoft.net/hsp/mahjong.txt(こらこら…(´Д`;
問題は役判定ですね。
麻雀は役の数が多いので、力技の作業になります。
ただ、特殊な役を除いては判定は簡単です。
- 役牌
- イーペーコー
- タンヤオ
- 三色同順
- 三色同刻
- イッツー
- チャンタ
- トイトイ
- 小三元
- ホンロー
- ホンイツ
- 純チャン
- リャンペーコー
- チンイツ
- 大三元
- チンロー
- 緑一色
- 字一色
- 小四喜
- 大車輪
- 大四喜
ここらへんは簡単です。
なぜ簡単なのかというと、
- 明刻・暗刻・カンツの区別がない
- 待ちによって成立しない、ということはない
- 特殊な形でない
からです。
どういうことかというと、
とりあえず、先ほどのリンク先の手法を用いて、
- 鳴き属性
- 並び属性(頭/順子/刻子)
という属性を持たせれば、実装が可能だからです。
ですが、他の役は大変です。
チートイや国士なんかは特殊ですよね。
ピンフもなにげに大変です。
他の属性をどうするか。
とりあえず、私の中では、
- ツモ属性(ツモかロンか何もなし)
- 待ち属性(両面・ペンチャンなど)
が必要となりそうな気がします。
これで符計算もできそうです。
まあ、、、チートイとか国士とかリーチとか、特殊な役は、
個別に実装するしかないのですが、、、。
麻雀作成に参考になりそうなページのリンク集
まうじゃん制作秘話
制作秘話
P/ECEで麻雀ゲームプロジェクト
http://www.jc2.co.jp/p/contents2.html
「電撃麻雀遊戯」の思考法
http://homepage3.nifty.com/nonchansoft/shikouhou.htm
麻雀の あがり を調べるアルゴリズム
http://www.sinryow.net/hitori/mahjong-algorithm.html
牌の安全度を決めるアルゴリズム
http://www.jan-x.jp/engine/04-algorithm.htm
おおおー、結構いいページありますなー。