09/08/16 07:17:18
>>41
役の判定を手続きで考えると複雑すぎてはまるよ。
まず、牌じゃなくて子と状態(場や鳴きの有無など)を与えて役判定を行うメソッド
(戻り値は、符と翻と点数と役のIDのリスト)を作成する。
それが出来たら、現在の牌で作れる全ての子のリストを作成して、そのそれぞれに対して
上記のメソッドを呼び出すようにする。結果、一番点数の大きいものを選択している。
気をつけるのは同一点数の時だが、その場合翻を優先している。
翻も同一の場合は、なんらかの順番が必要だけど(見つかった順とか)どれになっても
実害はないから、それほど神経質にならなくてもいい。
ただ役満だけは変な形のものがあるので(天和とか国士とか)先に判定する。
青天井の場合は、特殊な役満だけ先に計算して、一般的な子の形を持っているものは、
最後に判定し、該当するものがあれば比較リストに繋いでおけばOK。
ちょっと力業だが、これがシンプルかつ、ルールに対する柔軟性があっていいよ。