テキサスホールデムポーカーの役判定のロジック

今回はテキサスホールデムポーカーの役判定のロジックについてまとめておきたいと思います。ソースコードなどはなく、役判定に対しての考え方の部分を示してあります。

強い役から順番に判定する

ポーカーの役判定は、強い役から判定することが基本です。例えばフォーカードの役判定になったなら、フォーカードという判定があった時点で、役判定のロジックから抜けるという意味です。

テキサスホールデムポーカーにおける役の強さは以下の通りになっています。

  1. ロイヤルストレートフラッシュ
  2. ストレートフラッシュ
  3. フォーカード
  4. フルハウス
  5. フラッシュ
  6. ストレート
  7. スリーカード
  8. ツーペア
  9. ワンペア
  10. ハイカード

ポーカーの役判定のロジック

ロイヤルストレートフラッシュ

7枚のカードの中から、10、11、12、13、1を取り出せて、かつ5枚のカードのスートがすべて同じであること。

 

同じ役の場合

ポットをチョップする

ストレートフラッシュ

7枚のカードの中から、5枚以上同じスートのカードを取り出して、そのカードでストレートができていること。

 

同じ役の場合

ストレートの役の強い順を判定しなくてはいけない。ストレートには1~5、2~6、3~7、4~8、5~9、6~10、7~11、8~12、9~13、10~1の10通りがあるので、どのストレートに当てはまるかを確認して、強弱を確認。全く同じなら、ポットをチョップ。

注意

もし7枚のカードで、ストレートもできていて、かつフラッシュであるというような判定にしたとする。すると2♡、3♡、4♧、5♡、6♡、7♧、8♡のような場合でも、ストレートフラッシュとして判定されてしまう。

フォーカード

7枚中に4枚以上同じ数字があること。

 

同じ役の場合

どの数字を4枚持っているのかを、保持しておく。

フルハウス

同じ数字が3枚が1組以上、同じ数字が2枚が1組以上あること。もしくは同じ数字が3枚が2組以上あること。

 

同じ役の場合

3枚のカードの数字を保持しておく。3枚のカードの数字が強い方が、ポットをとる。もし3枚のカードが同じ場合は、2枚のカードの方で優劣を決める。同じ場合はポットをチョップ。

注意

もし同じ数字が3枚が1組以上、同じ数字2枚が1組以上だと、「3332224」のような組み合わせが、フルハウスとして判定できなくなってしまう。

フラッシュ

7枚の手札の中で、同じスートが5枚以上あること。

 

同じ役の場合

フラッシュの完成形の中で最も強いカードを持っているかどうかを判定する。同じ場合はポットをチョップ。

ストレート

ストレートのパターンは、1~5、2~6、3~7、4~8、5~9、6~10、7~11、8~12、9~13、10~1の10通りを全て検索。例えば1~5のストレート判定については、7枚のうちに、1~5の数字が、それぞれ1枚もしくは1枚以上あれば、ストレート判定可能。同様にこれを10通り行えば、すべてのストレートを判定できる。

 

同じ役の場合

どのストレートができているかは判別できるように、ストレートの数字を保持しておく。同じ場合は、ポットをチョップ。

スリーカード

7枚中に3枚以上同じ数字があること。

 

同じ役の場合

3枚のカードの数字を保持しておき、数の大きい方が勝利。もし3枚のカードが同じ場合は、それ以外のキッカーも確認できるようにしておく。

ツーペア

7枚中に同じ数字が2枚以上が2組以上あること。

 

同じ役の場合

数字の強いペアを持っている方がポットをとる。

注意

たとえば、2組以上ではなく、2組と限定してしまうと、「KK22994」といったような3組のペアができた場合に、ツーペア判定ができなくなってしまう。

ワンペア

7枚中に2枚以上同じ数字があること。

 

同じ役の場合

数字の強いペアを持っている方がポットをとる。

ハイカード

上記以外であること。

 

同じ役の場合

どの数字を持っているか確認。強い方がポットをとる。

同じ役の強さだった場合の処理

カードの数値の情報は常に持っておかないといけません。そして同じ役判定になった場合は、カードの数値の情報を用いて、強弱を判定します。つまりシステム的に、各プレイヤーがカードを持っているかが、わかるようにしておくことです。

役判定結果が、参加しているプレイヤーですべて同じだった場合は、ポットがチョップされることになります。

まとめ

役判定についてまとめました。キッカーでの処理の部分については、一応ロジックとしてはこのような形ですが、実際にソースに落とすとどうなるかというのは、私もよくわかっていません。役判定を作って行くなかで、何かわかれば、またプラスしておきます。