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



所以对于我的类,我们应该制作一个简化版本的扑克。例如,数组 {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[] counts" 包含值 {4,0,1,0,0},它将是 4 种,而值 {1,1,1,1,1} 将是直的。我将如何以某种方式将其用作语句?

简单扑克手牌评估器的常见一般程序是:

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

最新更新