Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.67 KB | None | 0 0
  1. package org.elsys.cardgame.factory;
  2.  
  3. import java.util.*;
  4.  
  5.  
  6. import org.elsys.cardgame.api.*;
  7.  
  8.  
  9. public abstract class AbstractDeck implements Deck {
  10.    
  11.     private ArrayList<Card> deck = new ArrayList<>();
  12.     private HandImpl hand;
  13.     private List<Rank> ranking;
  14.     private int handSize;
  15.    
  16.     public AbstractDeck(List<Rank> ranking, int handSize) {
  17.         this.ranking = ranking;
  18.         this.handSize = handSize;
  19.        
  20.         for(Suit suit : Suit.values()) {
  21.             for(Rank rank : ranking) {
  22.                 deck.add(new CardImpl(suit, rank));
  23.             }
  24.         }
  25.     }
  26.    
  27.     @Override
  28.     public List<Card> getCards() {
  29.         return deck;
  30.     }
  31.  
  32.     @Override
  33.     public int size() {
  34.         return deck.size();
  35.     }
  36.  
  37.     @Override
  38.     public int handSize() {
  39.         return hand.size();
  40.     }
  41.  
  42.     @Override
  43.     public Card drawTopCard() {
  44.         Card cardToAdd = deck.get(0);
  45.         hand.addCard(cardToAdd);
  46.         deck.remove(0);
  47.         return cardToAdd;
  48.     }
  49.  
  50.     @Override
  51.     public Card topCard() {
  52.         return deck.get(0);
  53.     }
  54.  
  55.     @Override
  56.     public Card drawBottomCard() {
  57.         Card cardToAdd = deck.get(deck.size() - 1);
  58.         hand.addCard(cardToAdd);
  59.         deck.remove(deck.size());
  60.         return cardToAdd;
  61.     }
  62.  
  63.     @Override
  64.     public Card bottomCard() {
  65.         return deck.get(deck.size() - 1);
  66.     }
  67.  
  68.     @Override
  69.     public Hand deal() {
  70.         for(int i = 0; i < handSize; i++) {
  71.             hand.addCard(deck.remove(0));
  72.         }
  73.         return hand;
  74.     }
  75.  
  76.     @Override
  77.     public void sort() {
  78.         deck.sort((c1, c2) -> {
  79.             if(c1.getSuit() == c2.getSuit()) {
  80.                 if(ranking.indexOf(c1.getRank()) > ranking.indexOf(c2.getRank())) {
  81.                     return 1;
  82.                 }
  83.                     return 0;
  84.             }else{
  85.                 return c1.getSuit().compareTo(c2.getSuit());
  86.             }
  87.         });
  88.  
  89.     }
  90.  
  91.     @Override
  92.     public void shuffle() {
  93.         Collections.shuffle(deck);
  94.     }
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement