麻雀のアルゴリズム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
 
おおおー、結構いいページありますなー。