Java poker implementation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AceFiveLowHand.java 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Copyright (c) Chris 'MD87' Smith, 2007. All rights reserved.
  3. *
  4. * This code may not be redistributed without prior permission from the
  5. * aforementioned copyright holder(s).
  6. */
  7. package com.md87.cardgame.hands;
  8. import com.md87.cardgame.Card;
  9. import com.md87.cardgame.Deck;
  10. import com.md87.cardgame.Rank;
  11. import com.md87.cardgame.interfaces.Hand;
  12. /**
  13. *
  14. * @author Chris
  15. */
  16. public class AceFiveLowHand extends AbstractHand {
  17. public static enum Ranking {
  18. NO_PAIR,
  19. NON_QUALIFIER
  20. }
  21. protected Ranking bestRank;
  22. public AceFiveLowHand(final Deck cards) {
  23. this.cards = cards;
  24. bestRank = AceFiveLowHand.Ranking.NON_QUALIFIER;
  25. while (isOnePair(cards)) {
  26. cards.removeByRank(high, 1);
  27. }
  28. boolean valid = true;
  29. if (cards.size() >= 5) {
  30. kickers = new Deck(cards);
  31. kickers.reverseLimitTo(5);
  32. for (Card kicker : kickers) {
  33. if (kicker.getRank().compareTo(Rank.NINE, true) <= 0) {
  34. valid = false;
  35. }
  36. }
  37. } else {
  38. valid = false;
  39. }
  40. if (valid) {
  41. bestRank = Ranking.NO_PAIR;
  42. }
  43. }
  44. public String getFriendlyName() {
  45. switch (bestRank) {
  46. case NO_PAIR:
  47. return kickers.toString();
  48. case NON_QUALIFIER:
  49. return "(Doesn't qualify)";
  50. default:
  51. return "Unknown hand";
  52. }
  53. }
  54. public Ranking getBestRank() {
  55. return bestRank;
  56. }
  57. public int compareTo(Hand ob) {
  58. final AceFiveLowHand o = (AceFiveLowHand) ob;
  59. if (o.getBestRank() == bestRank) {
  60. if (bestRank == Ranking.NON_QUALIFIER) {
  61. return 0;
  62. } else {
  63. return -1 * kickers.compareTo(o.getKickers(), true);
  64. }
  65. } else {
  66. return -1 * bestRank.compareTo(o.getBestRank());
  67. }
  68. }
  69. }