【发布时间】:2020-05-15 04:05:19
【问题描述】:
我在分析一手牌时试图检测一个小丑同花顺。
我需要在此手工作的地方添加一个功能8S JK 6S JK 4S。 JK 是小丑。我使用与https://www.codeproject.com/Articles/38821/Make-a-poker-hand-evalutator-in-Java 完全相同的代码逻辑。
cardsTable 代表手牌中牌位的分布。该数组的每个元素代表手中的牌的数量(从 1 到 13,1 是 ace)。所以对于8S JK 6S JK 4S,分布是
0 0 0 0 1 0 1 0 1 0 0 0 0 0注意位置 1 是 ace(因为它更简单)
我需要找到一种方法来检测 cardsTable[i] == 1 是否失败并减少使用的小丑数量 (numberOfJokers) 来检测小丑StraightFlush,因为在这段不完整的代码中,numberOfJokers 不减少,我不知道如何以一种很好的方式写它。我在这里要做的是检查该等级的卡是否存在cardsTable[i] == 1 或者它是否是小丑...但我不知道如何在其他连续排名中检查小丑
我不知道我是否清楚,这是一个扭曲的情况.. 如果我不让我知道。
straight = false; // assume no straight
int numberOfJokers = 2; //(the maximum number of jokers in a hand is 2)
for (int i = 1; i <= 9; i++) { // can't have straight with lowest value of more than 10
numberOfJokers = 2 //reset the number of jokers available after each loop
if ((cardsTable[i] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 1] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 2] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 3] == 1 || numberOfJokers > 0) &&
(cardsTable[i + 4] == 1 || numberOfJokers > 0)) {
straight = true;
break;
}
}
我也有此代码,但我不知道如何检测第一个条件是否失败,因此我可以减少剩余的小丑数量。
for (int i = 1; i <= 9; i++) {
numberOfJokers = 2
if (cardsTable[i] == 1 || numberOfJokers>0) {
if (cardsTable[i + 1] == 1 || numberOfJokers>0) {
if (cardsTable[i + 2] == 1 || numberOfJokers > 0) {
if (cardsTable[i + 3] == 1 || numberOfJokers > 0) {
if (cardsTable[i + 4] == 1 || numberOfJokers > 0) {
straight = true;
break;
}
}
}
}
}
}
【问题讨论】:
标签: java algorithm if-statement conditional-statements poker