当前位置:  开发笔记 > 编程语言 > 正文

确定扑克牌是否是直线的功能?

如何解决《确定扑克牌是否是直线的功能?》经验,为你挑选了1个好方法。

对于家庭作业,我获得了一个卡类,其中列举了Rank和Suit的类型.我需要比较两个扑克牌(每手牌是ArrayList5张牌)并决定胜者.

这个isStraight()功能真让我烦恼,因为我必须在Ace之后重新计算.例如,

女王,王,ACE,两,三

仍被认为是直的.编写此功能的最佳方法是什么?

这是Rank/Suit枚举类型代码,如果有帮助的话.

public enum Rank
{
    TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9),
    TEN(10), JACK(11), QUEEN(12), KING(13), ACE(14);

    private final int points;

    private Rank(int points)
    {
        this.points = points;
    }

    public int points()
    {
        return this.points;
    }
}

public enum Suit
{
    DIAMONDS, CLUBS, HEARTS, SPADES;
}

shsteimer.. 9

你是否意识到,根据任何扑克游戏的规则,我曾经玩过或听说过直的不能包裹好吗?Ace可以是低[A,2,3,4,5]或高[10,J,Q,K,A],但它不能包裹.根据这些规则(不是你的规则),我之前已经实现了类似的规则.基本上你对数组进行排序并走它,确保当前的卡比前一个更高.在第一次迭代中,如果它是一个ace,那么你明确检查[A,2,3,4,5].如果是,则返回true,如果不是,则继续使用正常的直线逻辑.这应该让你朝着正确的方向前进.



1> shsteimer..:

你是否意识到,根据任何扑克游戏的规则,我曾经玩过或听说过直的不能包裹好吗?Ace可以是低[A,2,3,4,5]或高[10,J,Q,K,A],但它不能包裹.根据这些规则(不是你的规则),我之前已经实现了类似的规则.基本上你对数组进行排序并走它,确保当前的卡比前一个更高.在第一次迭代中,如果它是一个ace,那么你明确检查[A,2,3,4,5].如果是,则返回true,如果不是,则继续使用正常的直线逻辑.这应该让你朝着正确的方向前进.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有