所以对于我的类,我们应该制作一个简化版本的扑克。例如,数组 {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} 将是直的。我将如何以某种方式将其用作语句?
简单扑克手牌评估器的常见一般程序是:
- 按等级对手牌进行排序(从高到低,平局低,王牌高(。 从最高的手牌(五张牌(
- 开始向下工作,确定这手牌是否属于该类型并返回(例如,如果检查五张牌,只需检查第一张和第五张牌是否相同 - 请记住它们是排序的 - 如果是这样,返回"五种",你就完成了(。您的简化版本似乎没有刷新或直接刷新,因此请跳过它们。 通过
- 手向下工作:对于四种,请检查XXXXY和XYYYY。对于满屋子,请检查XXXYY和XXYYY。对于旅行,请检查XXXYZ,XYYYZ和XYZZZ等。
- 对于直道,请选中五行,然后检查特殊情况 2345A(在您的版本中这可能不是特殊情况(。
- 如果每次检查都失败,只需返回"无对",卡片从高到低排序。