ノーリミットホールデムのポット計算に関連するロジックをまとめておきたいと思います。これから作っていく中で、内容を付け足す部分が出てくるかもしれません。
ゲーム進行に関連するベット金額の制約
ノーリミットホールデムの場合、ゲームに参加するプレイヤーは、全員が同じ金額をテーブル上にかけることで、次のラウンドに進みます。
ここでのラウンドの意味は、次のハンドという意味ではなく、プリフロップからフロップへの移行、フロップからターンへの移動という意味です。
例えば、Aさん、Bさん、Cさんの3人でプレイしていた時のことを考えます。Aさんが100ドルベットしたとします。
それ以外の2人がゲームに参加しつづけたいと思ったら、他のBさん、Cさん、2人とも100ドルずつかけなくてはいけません。
メインポットの作り方
テーブル上でかけられた基準となるベット金額と、ゲームに参加しているプレイヤー数をかけると、メインポットを作ることができます。
例えば上記の例だと、100ドルが基準となるベット金額です。ゲームに参加している人数は3人なので、100ドル×3人=300ドルがメインポットになります。
サイドポットの作り方
サイドポットができる条件
誰かがオールインした金額よりも、多くのチップをかけるプレイヤーが2人以上いるとき。
サイドポットの作成ロジック
- ゲームに参加している各プレイヤーのベット金額を記録しておく。
- ベッティングのアクションが終了したら、そのあとでポットの計算を行う。
- オールインしているプレイヤーの中で最もベットの金額が小さいものを基準にする。これをMinimum All In Chips(MAC)とする。
- MAC×ゲームに参加している人数でメインポットを作る。
- 各プレイヤーがベットしている金額から、MACを減算する。その時点で0以外の、1番少ないベット金額を基準にする。これをSecond Minimum All In Chips(SMAC)とする。
- SMAC×ゲームに参加している人数でサイドポットを作る。
- これを繰り返して、ゲームに参加している人数が1になったら処理を終了する。
例えば4人でプレイしているとします。Aは10000、Bは100、Cは10、Dは1000のポイントを持っているとします。
ここでどのような順序かわかりませんが、全員がオールインになった場合を考えます。Aについては、最大でかけられる金額が1000になりますが、ここではシステム的に、さらに多くのチップを賭けられても大丈夫なようにしておきます。
まず最小のオールインの値(MAC)であるCの10ポイントを基準にします。
全員が参加するメインポットは、最小のオールインMAC×プレイヤー数になるので、10×4=40がメインポットになります。
続いて、MACの値を各プレイヤーがベットしている値から、減算します。そうすると、Aは9990、Bは90、Cは0、Dは990になります。この時、Cは0ポイントになるので、今後は考えません。
今度は、A、B、Dのプレイヤーの中で最も少ないオールイン金額を考えます。今回はBの90ポイントです。これがSMACになります。
サイドポットはSMAC×プレイヤーの参加人数なので、90×3=270がサイドポットになります。
続いて、SMACの値を各プレイヤーがベットしている値から減算します。すると、Aは9900、Bは0、Dは900になります。
このAとDのプレイヤーを比較して、少ないベット金額を基準にします。今回はDの900ポイントです。これをTMACとします。
サイドポットはTMAC×参加プレイヤー数なので、900×2=1800となります。
同様にTMACの値を各プレイヤーのベット金額から減算します。すると、Aは9000、Dは0になります。これで参加プレイヤーが1人になりました。
ポットの各種制御について
- ポットには、参加しているプレイヤーの情報を持たせて置き、勝敗が決定したら、ポットに参加しているプレイヤーの中で、金額が移動するようにする。
- ポットの金額に端数が出た場合、SBに近い人に端数が与えられるようにする。
まとめ
ということで、ノーリミットホールデムのポット計算のロジックについてまとめました。
ベッティングのアクションが終わるまでは、特にポット計算はしなくて大丈夫です。ベッティングアクションがすべて決まってから、ポットの計算を開始するという認識でいいかと思います。