Pages

Monday, April 7, 2014

Baccarat Supporting classes

/** 
 * Class to hold Baccarat statistics.   * @author Wilson Soethe Cursino   * @since 1.0   */
@Getter
@Setter
public class BaccaratStats {
    private double playerWinnerCombinations;
    private double bankerWinnerCombinations;
    private double tieCombinations;
    private double totalCombinations;
    private double bankerWinnerProbability;
    private double playerWinnnerProbability;
    private double tieProbability;
    private double bankerOdds;
    private double playerOdds;
    private double tieOdds;
}

/** 

 * Baccarat result; 

 * @author Wilson Soethe Cursino 

 * @since 1.0 

 */


@Getter 


@Setter


public class BaccaratResult {


    private GameResult gameResult;


    private Hand playerHand;


    private Hand bankerHand;


}



/**   * GameResult will represent the possible outcomes for the game.   * @author Wilson Soethe Cursino   * @since 1.0   */ public enum GameResult {     PLAYER, BANKER, TIE, FINAL_GAME; }; 

/**   * The class Card, will hold a suit (heart, club, spade and diamond) and value (ace,2-10, jack, queen and king).   * @author Wilson Soethe Cursino   * @since 1.0   */ @AllArgsConstructor @Setter @Getter @EqualsAndHashCode(exclude={"suit"}) @ToString public class Card {     private CardValue value;     private CardSuit suit; }

/**   * Card suit enum.   * @author Wilson Soethe Cursino   * @since 1.0   */ @AllArgsConstructor @Getter public enum CardSuit {     CLUBS(1), DIAMONDS(2), HEARTS(3), SPADES(4);     private final int suit; } /**   * Card value ENUM.   * @author Wilson Soethe Cursino   * @since 1.0   */ @AllArgsConstructor @Getter public enum CardValue {     ACE(1), TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(0), JACK(0), QUEEN(0), KING(0);     private final int value; }

/**   * Hand class, will represent a baccarat cards, providing a custom print for the cards and the points for the cards.   * @author Wilson Soethe Cursino   * @since 1.0   */ public class Hand {     private List cards;      public Hand() {          cards = new ArrayList();      }      public void addCard(Card card) {          cards.add(card);      }      public int points() {          int value = 0;          for (Card card : cards) {              value += card.getValue().getValue();          }          return value % 10;      }       public List getCards() {          return cards;      }  } 

/**   * Shoedeck class, will represent a simple shoe deck of cards.   * @author Wilson Soethe Cursino   * @since 1.0   */  public class Shoedeck {      private LinkedList shoe;// "stack" capability for the list      public LinkedList getShoe() {          return shoe;      }      public Shoedeck(int decks) {          shoe = new LinkedList();          // for each shoe          for (int i = 0; i < decks; i++) {              // create cards with value               for (CardValue value : CardValue.values()) {                  // and suit                  for (CardSuit type : CardSuit.values()) {                      shoe.add(new Card(value, type));                  }              }          }      }      public Card popCard() {          return shoe.pop();      }      public void shuffle() {          // We could use a better implementation, like the Collections.shuffle(..);          // Let's just create a simple shuffle          Random random = new Random();          for (int i = 0; i < shoe.size(); i++) {              int index = random.nextInt(i + 1);              // Simple swap              Card card = shoe.get(index);              shoe.set(index, shoe.get(i));              shoe.set(i, card);          }      }      /**       * Gets the qty cards in shoe by card value.       * @return the qty in shoe by value       */      public int[] getQtyInShoeByValue() {          int[] result = new int[10];          for (Card card : shoe) {              result[card.getValue().getValue()] = ++result[card.getValue().getValue()];          }          return result;      }  }
Don'f forget to use the lombok! :-)
 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.12.6</version>
     <scope>provided</scope>
 </dependency>

No comments :