我正在开发纸牌游戏。
我遇到了一个问题,试图测试卡是高还是低。
在扑克中看到有人是否有直线。这是所有连续的卡......所以2,3,4,5,6将是直的。
但是对于ace,它可以是高或低...所以它可能是Ace,2,3,4,5或
10,杰克,女王,国王和王牌。问题是我不确定如何测试ace是否应该是高或低时确实发生。
我知道我可以对这些卡片进行排序并将其弄清楚,但我不确定如何对卡片进行分类。卡是一个类,用于存储卡的数组只是一个基本数组。
那么如何进行测试以确定ace是高还是低?如果ace不是他们的,继续检查这些卡是否是直的。
这是我到目前为止的代码,除了卡片按以下顺序排列外,它适用于所有内容:king,Ace,2,3,4。但这个顺序不是扑克规则的直接。
代码:
public static boolean hasStraight(Card[] cards) {
// START COUNT AT 1 BECAUSE WE KNOW WE HAVE ATLEAST 1 CONSECTUTIVE
// NUMBER IN EVERYHAND.
int count = 1;
boolean hasStraight = false;
int lastNum = 0;
for (int i = 0; i < cards.length; i++) {
for (int j = 0; j < cards.length; j++) {
if (i != j && cards[j].getValue() != lastNum
&& cards[i].getValue() + 1 == cards[j].getValue()
|| cards[i].getValue() == 13
&& cards[j].getValue() == 1) {
count++;
lastNum = cards[j].getValue();
}
}
}
if (count >= 5) {
hasStraight = true;
}
return hasStraight;
}
答案 0 :(得分:-1)
AFAIK,Ace只被视为低以完成包含2,3,4,5的直线。你唯一需要担心直线加注的是完成10,J,Q,K。这就是你如何判断它是低还是高的原因。