纸牌游戏模拟器 - 如何判断卡是高还是低

时间:2016-04-11 00:22:10

标签: java

我正在开发纸牌游戏。

我遇到了一个问题,试图测试卡是高还是低。

在扑克中看到有人是否有直线。这是所有连续的卡......所以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;

}

1 个答案:

答案 0 :(得分:-1)

AFAIK,Ace只被视为以完成包含2,3,4,5的直线。你唯一需要担心直线加注的是完成10,J,Q,K。这就是你如何判断它是低还是高的原因。