c++ - 为德州扑克编写逻辑子底池系统

标签 c++ containers poker

编辑 似乎我对游戏的实际运作方式有不同的 react ,在阅读了官方规则并与众多扑克伙伴交谈后,我想我自己也不知道规则.如有任何澄清,我们将不胜感激。

我正在 MSVC++ 2010 Express 中开发一个小扑克游戏,并且一直在尝试想出一种方法来编写子底池系统。出于某种原因,我无法理解它应该如何工作,并且想知道 SO 是否可以发布一些解决方法。这是德州扑克游戏中可能并且很可能会出现的一种特殊情况。

情况:

玩家 A 以 50 美元的筹码首先采取行动,并决定全押。玩家 B 加注到 150 美元。玩家 C 只有值(value) 70 美元的筹码并决定全押。玩家 D 只有 20 美元并全押。现在,我如何设计一个子底池机制来跟踪所有这些。

据我了解,会发生什么:

玩家 A 用 50 美元创造了主彩池。您将 B 和 C 的 50 美元加在一起,使主彩池达到 150 美元。然后,您将玩家 B 剩余的 100 美元分成 80 美元和 20 美元。然后你为玩家 B 和 C 做一个值(value) 40 美元的子底池(玩家 C 从 70 美元中剩下的),然后你还给玩家 B 的 80 美元,因为没有人可以支付它。玩家 D 的 20 美元赌注进入玩家 B,C 的 40 美元子底池现在值(value) 60 美元。 *(或者这不会被添加?它是否不会被添加到任何赌注中,因为它不能覆盖 50 美元的主底池,如果是这样,那么它们就不会被添加到任何东西中 *

现在,当它向下评估时。如果玩家 A 赢了,他会从玩家 A、B 和 C 那里赢得 150 美元。接下来,玩家 B、C 和 D 将获得值(value) 60 美元的子底池。

如果玩家 B 获胜,他将赢得一切。

如果玩家 C 赢了,他会从玩家 A、B 和 C 那里赢得 150 美元。然后他向玩家 B 和 D 挑战 60 美元。

玩家 D 只能赢得 60 美元,而玩家 A、B 和 C 的底池下降到这种程度时,已经有人赢了。 (取决于这是否被添加到 B 和 C 的底池,因为它不包括主要的 50 美元赌注)

一切都应该这样吗?我很难弄清楚如何跟踪每个赌注和子底池。任何想法或实现它的逻辑方法都会有很大帮助。感谢您的时间。 :-)

我在考虑让每个赌注都有一个唯一的 ID,或者每一轮都有一个 ID,然后将每个赌注添加到一个数组中进行评估,该数组还指向包含玩家信息的容器。我还必须考虑到一些玩家可能处于子底池并且已经在手牌并弃牌,这意味着我也必须跟踪这一点。

最佳答案

在这个例子中,主锅和副锅都计算错误。

规则:规则原则是每个玩家都匹配对手的赌注,因为他留在筹码中。

计算:

1) 首先,我们考虑筹码最少的玩家(全押)。在当前示例中,这是一个拥有 20 美元的玩家 D。

2) 接下来我们从每个玩家 (A,B,C,D) 中加总 20 美元,形成等于 80 美元的主底池,由所有玩家争夺。

3) 玩家剩下的筹码 A – $30, B – $130, C – $50, D – $0

4) 接下来我们考虑第二小的筹码,在当前的例子中,玩家 A 还剩 30 美元。边池 1 等于 $30(A) + $30(B) +$30(C)= $90。玩家 D 没钱了,无法赢得这个边池。

5) 玩家剩下的筹码 A – $0, B – $100, C – $20

6) 边池 2 等于 $20(B) + $20(C)= $40。玩家 A 没钱了,无法赢得这个边池。

7) 玩家 B 还剩 80 美元,这笔钱退还给他。

所以我们最终得到:

主底池 = $80,由所有玩家 A、B、C、D 争夺

边池 1 = $90,由 A、B、C 竞争

边池 2 = $40,由 B、C 竞争

$80 返回玩家 B

关于c++ - 为德州扑克编写逻辑子底池系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12616086/

相关文章:

Pod 中的 Kubernetes 最佳实践

java - 最简单的扑克手评估算法

c++ - 错误 : no such file or directory: '–std=c++11' after compiling makefile

c++ - 用非基元填充 CapnProto 列表

docker - 在Bluemix用户界面中使用命令

docker - kairosdb服务未在容器中启动

sql - 扑克和使用 SQL 事务处理彩池中的钱以保持一致性

algorithm - 扑克游戏的商业级随机化

c++ - 打开一个文件,修改每个字符然后做反向操作不输出原始文件

c++ - 运算符重载(相同的参数,不同的返回类型)