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

wirehaze git hosting

add Foundation
[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 card) {
24 Rank cardRank, lastRank;
25
26 if (card.getSuit() != this.suit)
27 return false;
28
29 cardRank = card.getRank();
30
31 if (cards.isEmpty())
32 return cardRank == Rank.ACE;
33
34 lastRank = cards.getLast().getRank();
35
36 return cardRank.isSuccessorOf(lastRank);
37 }
38
39 boolean add(Card card) {
40 if (!isValidNextCard(card))
41 return false;
42
43 cards.add(card);
44 return true;
45 }
46
47 @Override
48 public String toString() {
49 if (cards.isEmpty())
50 return String.format("( %s )", suit);
51
52 return String.format("(%s)", cards.getLast());
53 }
54 }