]> wirehaze git hosting - solitaire.git/blob - src/solitaire/Foundation.java

wirehaze git hosting

af9751084cae537a917447687f7799c87417d6ac
[solitaire.git] / src / solitaire / Foundation.java
1 package solitaire;
2
3 import java.util.LinkedList;
4 import java.util.List;
5
6 final class Foundation {
7 private final List<Card> cards;
8 private final Suit suit;
9
10 Foundation(Suit suit) {
11 this.cards = new LinkedList<>();
12 this.suit = suit;
13 }
14
15 Suit getSuit() {
16 return suit;
17 }
18
19 boolean isFull() {
20 return cards.size() == Rank.RANKS.size();
21 }
22
23 private boolean isValidNextCard(Card nextCard) {
24 if (nextCard.getSuit() != this.suit)
25 return false;
26
27 if (cards.isEmpty())
28 return nextCard.getRank() == Rank.ACE;
29
30 Card lastCard = cards.getLast();
31
32 return nextCard.getRank().isSuccessorOf(lastCard.getRank());
33 }
34
35 boolean add(Card card) {
36 if (!isValidNextCard(card))
37 return false;
38
39 cards.add(card);
40 return true;
41 }
42
43 @Override
44 public String toString() {
45 if (cards.isEmpty())
46 return String.format("( %s )", suit);
47
48 return String.format("(%s)", cards.getLast());
49 }
50 }