import java.util.ArrayList; import java.util.Collections; import java.util.Random; public class Pile extends ArrayList { public static Pile createDeck(int numberOfCards) { Pile deck = new Pile(); for (int number = 1; number <= numberOfCards; number++) { for (Card.Suit suit : Card.Suit.values()) { deck.add(new Card(number, suit)); } } deck.shuffle(); return deck; } public Pile getCardsForPlayer(int number) { Pile cardsForPlayer = new Pile(); for (int i = 0; i < number; i++) { cardsForPlayer.add(get(0)); remove(0); } return cardsForPlayer; } /** * Fisher-Yates shuffle() * https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array */ public void shuffle(Random random) { for (int i = this.size() - 1; i > 0; i--) { Collections.swap(this, i, random.nextInt(i + 1)); } } public void shuffle() { Random random = new Random(); shuffle(random); } public boolean uniqueMaximum(Card max, int maxIndex) { for (int i = 0; i < this.size(); i++) { if (maxIndex != i && max.number == this.get(i).number) { return false; } } return true; } }