我是否在确定扑克手牌类型的正确轨道上?

时间:2017-03-17 22:56:51

标签: arrays if-statement poker

因此,对于我的班级,我们应该制作一个简化版的扑克。例如,数组{1,2,3,4,5}将是直的,而数组{1,1,1,4,5}将是三种类型。我已经完成了所有事情,除了确定用户拥有什么样的牌之外,这是我到目前为止所拥有的:

public class handTypes {

public static void main(String[] args) {
    int[] testHand = {1,1,3,3,5}; //Just a test array
    int[] counts = new int [6];
    int counter = 0;

    for(int i=0; i < testHand.length ; i++){
        counts[testHand[i]]++;
    }

    // Determines a pair or 2 pairs
    for(int i =0; i <counts.length; i++){
        if(counts[i] == 2)
            counter++; }

    int option = counter;

    switch(option){
    case 1:
        System.out.println("You have one pair!");
        break;
    case 2:
        System.out.println("You have 2 pairs!");
        break;
    }

   }
}

当然这不适用于同花顺,4种,5种等等。但我在网上阅读了一些有助于确定它的算法。让我们说创建的数组“int [] count”保存值{4,0,1,0,0},它将是4种,而值{1,1,1,1,1}将是直行。我怎么会以某种方式将其用作声明?

1 个答案:

答案 0 :(得分:0)

简单的扑克手评估员的一般常规程序是:

  1. 按等级排序(从高到低,低,低,高)。
  2. 从最高牌(五种)开始并向下工作,确定该牌是否属于该类型并返回(例如,如果检查五种,只需检查第一张和第五张牌是否相同等级 - 记住它们已被分类 - 如果是这样,返回“五种”并且你已经完成了。您的简化版本似乎没有刷新或直接刷新,因此请跳过它们。
  3. 通过双手向下工作:对于四种类型,检查XXXXY和XYYYY。对于满堂红,请检查XXXYY和XXYYY。如需旅行,请查看XXXYZ,XYYYZ和XYZZZ等
  4. 对于直道,检查五行,然后检查特殊情况2345A(这可能不是您的版本中的特殊情况)。
  5. 如果每次检查都失败,只需返回“无配对”,卡片从高到低排序。