创造一些东西来检查它是否是皇家同花顺

时间:2014-11-24 18:27:35

标签: java methods boolean poker

我试图检查扑克中的牌是否是皇家同花顺。但是,当我继续检查它时,它会出现为Straight Flush而不是Royal Flush。我稍微修改了它但是我无法检查它,因为我忘了给自己发送一个我需要的主要程序。但问题仍然存在。

private boolean isRoyalFlush(){//check if from 10-Ace and All of same suit---
  if(isFlush()==true){
      sortByValue();
      if((cards[0].rank==10)&&(cards[1].rank==11)&&(cards[2].rank==12)&&(cards[3].rank==13)&&(cards[4].rank==14)){
          return true;
      }
      else{
          return false;
      }
  }
  else{
      return false;
  }
}

理论上卡[i] .rank获得卡的等级,其中11 ==杰克,12 ==女王等等isFlush()检查是否所有相同的诉讼。 sortByValue();将卡分类为数值。

其他代码:

卡片文件

package playingcards;

public class Card {

 public final static int CLUBS = 0, DIAMONDS = 1, HEARTS = 2, SPADES = 3;
 public final static int JACK = 11, QUEEN = 12, KING = 13, ACE = 14;

 public final int suit; // 0 .. 3
 public final int rank; // 0 .. 12

 private final static String[] suits = { "Clubs", "Diamonds", "Hearts",
   "Spades" };
 private final static String[] ranks = { "2", "3", "4", "5", "6", "7", "8",
   "9", "10", "Jack", "Queen", "King", "Ace" };

/ **   *创建一张价值为v的卡片,按照西装(俱乐部,钻石,   *心,黑桃,按升序排列),按等级(高位)。对于   例如,值1对应于2个俱乐部,12对应于Ace   *俱乐部,13至2钻石。   *   * @param v   * 1到52之间的值   * @throws IllegalArgumentException   *如果v小于1或大于52   * /

 public Card(int v) {
  // PRE:
  if (!(1 <= v && v <= 52)) {
   throw new IllegalArgumentException("Bad constructor arguments " + v);
  }
  suit = (v - 1) / 13;
  rank = (v - 1) % 13;
 }

/ **   *创建一张等级为r且适合s的卡片。排名值是数字的字面值   *排名,Jacks为10,Aces为14,依此类推。西装从0到   * 3,对应于俱乐部,钻石,心形和黑桃。请注意这一点   * class包括所有rank和suit值的符号常量。   *   * @param r   *卡的等级介于2和Card.ACE之间(14)   * @param s   *套装,Card.CLUBS(0)和Card.SPADES(3)之间的价值   *   * @throws IllegalArgumentException   *如果r不在2和14之间(包括)或s不是   *介于0和3之间(含)   * /

 public Card(int r, int s) {
  // PRE: (0 <= s <= 3) AND (2 <= r <= 14)
  if (!((0 <= s && s <= 3) && (2 <= r && r <= 14))) {
   throw new IllegalArgumentException("Bad constructor arguments " + r
     + "," + s);
  }
  suit = s;
  rank = r - 2;
 }

/ **   *返回此卡的字符串表示形式,包括其套装和   *它的价值。样本返回值为:“心之女王”,“钻石之10”,   * “黑桃王牌”   * /

     public String toString() {
      return ranks[rank] + " of " + suits[suit];
     }

 // New things:

/ **   *根据此卡是否大于,更少,返回-1,1或0   *大于或等于其论点。传统的抽奖顺序   *扑克:排名第一(高位),然后是西装。   *   * @throws NullPointerException   *如果c为null   * /

 public int compareTo(Card c) {
  if (c.rank > this.rank || (c.rank == this.rank && c.suit > this.suit)) {
   return -1;
  } else if (this.rank > c.rank
    || (this.rank == c.rank && this.suit > c.suit)) {
   return 1;
  } else {
   return 0;
  }
 }

 public boolean equals(Card c) {
  return this.compareTo(c) == 0;
 }

} // Card

0 个答案:

没有答案