From: phfr24 Date: Mon, 10 Aug 2026 01:47:17 +0000 (-0300) Subject: cleanup X-Git-Url: https://git.wirehaze.ovh/solitaire.git/commitdiff_plain/HEAD?ds=sidebyside;hp=626d75d21593081644437dc6fa7392d6990df782 cleanup --- diff --git a/src/solitaire/Card.java b/src/solitaire/Card.java index bace9ae..1f75859 100644 --- a/src/solitaire/Card.java +++ b/src/solitaire/Card.java @@ -5,24 +5,32 @@ final class Card { private final Rank rank; private boolean hidden; + Card(Suit suit, Rank rank) { + this(suit, rank, true); + } + Card(Suit suit, Rank rank, boolean hidden) { this.suit = suit; this.rank = rank; this.hidden = hidden; } - Card(Suit suit, Rank rank) { - this(suit, rank, true); - } + @Override + public String toString() { + if (isHidden()) + return " * "; - Suit getSuit() { - return suit; + return String.format("%s%2s", suit, rank); } Rank getRank() { return rank; } + Suit getSuit() { + return suit; + } + boolean isHidden() { return hidden; } @@ -30,12 +38,4 @@ final class Card { void reveal() { hidden = false; } - - @Override - public String toString() { - if (isHidden()) - return " * "; - - return String.format("%s%2s", suit, rank); - } } diff --git a/src/solitaire/Depot.java b/src/solitaire/Depot.java index ad99aff..2e6e764 100644 --- a/src/solitaire/Depot.java +++ b/src/solitaire/Depot.java @@ -6,6 +6,26 @@ import java.util.Optional; import java.util.stream.Collectors; final class Depot { + private static boolean isValidNextCard(Card lastCard, Card nextCard) { + if (nextCard.getSuit().isRed() == lastCard.getSuit().isRed()) + return false; + + return lastCard.getRank().isSuccessorOf(nextCard.getRank()); + } + + private static boolean isValidRun(List run) { + Card prev = null; + + for (Card next : run) { + if (next.isHidden() || (prev != null && !isValidNextCard(prev, next))) + return false; + + prev = next; + } + + return true; + } + private final List cards; Depot(List cards) { @@ -16,11 +36,12 @@ final class Depot { this.cards.getLast().reveal(); } - private static boolean isValidNextCard(Card lastCard, Card nextCard) { - if (nextCard.getSuit().isRed() == lastCard.getSuit().isRed()) - return false; + @Override + public String toString() { + if (cards.isEmpty()) + return "< >"; - return lastCard.getRank().isSuccessorOf(nextCard.getRank()); + return cards.stream().map(String::valueOf).collect(Collectors.joining("\n")); } private boolean isValidPlacement(Card card) { @@ -30,17 +51,8 @@ final class Depot { return isValidNextCard(cards.getLast(), card); } - private static boolean isValidRun(List run) { - Card prev = null; - - for (Card next : run) { - if (next.isHidden() || (prev != null && !isValidNextCard(prev, next))) - return false; - - prev = next; - } - - return true; + boolean add(Card card) { + return add(List.of(card)); } boolean add(List run) { @@ -55,10 +67,6 @@ final class Depot { return true; } - boolean add(Card card) { - return add(List.of(card)); - } - Optional> remove(int size) { if (size < 1) throw new IllegalArgumentException("Size must be a positive integer"); @@ -79,12 +87,4 @@ final class Depot { return Optional.of(run); } - - @Override - public String toString() { - if (cards.isEmpty()) - return "< >"; - - return cards.stream().map(String::valueOf).collect(Collectors.joining("\n")); - } } diff --git a/src/solitaire/Foundation.java b/src/solitaire/Foundation.java index af97510..48995c0 100644 --- a/src/solitaire/Foundation.java +++ b/src/solitaire/Foundation.java @@ -8,20 +8,20 @@ final class Foundation { private final Suit suit; Foundation(Suit suit) { - this.cards = new LinkedList<>(); + cards = new LinkedList<>(); this.suit = suit; } - Suit getSuit() { - return suit; - } + @Override + public String toString() { + if (cards.isEmpty()) + return String.format("( %s )", suit); - boolean isFull() { - return cards.size() == Rank.RANKS.size(); + return String.format("(%s)", cards.getLast()); } private boolean isValidNextCard(Card nextCard) { - if (nextCard.getSuit() != this.suit) + if (nextCard.getSuit() != suit) return false; if (cards.isEmpty()) @@ -40,11 +40,11 @@ final class Foundation { return true; } - @Override - public String toString() { - if (cards.isEmpty()) - return String.format("( %s )", suit); + Suit getSuit() { + return suit; + } - return String.format("(%s)", cards.getLast()); + boolean isFull() { + return cards.size() == Rank.RANKS.size(); } } diff --git a/src/solitaire/Main.java b/src/solitaire/Main.java index 18e5629..922d824 100644 --- a/src/solitaire/Main.java +++ b/src/solitaire/Main.java @@ -5,10 +5,6 @@ class Main { private static Waste waste = new Waste(); private static Foundation foundation = new Foundation(Suit.CLUBS); - private static void printTable() { - System.out.printf("%s %s\n\n%s\n\n", stock, waste, foundation); - } - public static void main(String[] args) { Card c; @@ -25,4 +21,8 @@ class Main { printTable(); } + private static void printTable() { + System.out.printf("%s %s\n\n%s\n\n", stock, waste, foundation); + } + } diff --git a/src/solitaire/Rank.java b/src/solitaire/Rank.java index f85d1d2..eda02f9 100644 --- a/src/solitaire/Rank.java +++ b/src/solitaire/Rank.java @@ -14,12 +14,12 @@ enum Rank { this.symbol = symbol; } - boolean isSuccessorOf(Rank rank) { - return this.ordinal() == rank.ordinal() + 1; - } - @Override public String toString() { return symbol; } + + boolean isSuccessorOf(Rank rank) { + return ordinal() == rank.ordinal() + 1; + } } diff --git a/src/solitaire/Stock.java b/src/solitaire/Stock.java index 91907fb..704f032 100644 --- a/src/solitaire/Stock.java +++ b/src/solitaire/Stock.java @@ -8,7 +8,7 @@ final class Stock { private final List cards; Stock() { - this.cards = new LinkedList<>(); + cards = new LinkedList<>(); for (Suit s : Suit.SUITS) for (Rank r : Rank.RANKS) @@ -17,14 +17,6 @@ final class Stock { Collections.shuffle(cards); } - Card draw() { - return cards.removeLast(); - } - - boolean isEmpty() { - return cards.isEmpty(); - } - @Override public String toString() { if (isEmpty()) @@ -32,4 +24,12 @@ final class Stock { return String.format("{%s}", cards.getLast()); } + + Card draw() { + return cards.removeLast(); + } + + boolean isEmpty() { + return cards.isEmpty(); + } } diff --git a/src/solitaire/Suit.java b/src/solitaire/Suit.java index 9f79b68..af10ae9 100644 --- a/src/solitaire/Suit.java +++ b/src/solitaire/Suit.java @@ -15,16 +15,16 @@ enum Suit { this.red = red; } - boolean isRed() { - return red; + @Override + public String toString() { + return symbol; } boolean isBlack() { return !red; } - @Override - public String toString() { - return symbol; + boolean isRed() { + return red; } } diff --git a/src/solitaire/Waste.java b/src/solitaire/Waste.java index 24ee6f5..3a2acac 100644 --- a/src/solitaire/Waste.java +++ b/src/solitaire/Waste.java @@ -8,7 +8,15 @@ final class Waste { private final List cards; Waste() { - this.cards = new LinkedList<>(); + cards = new LinkedList<>(); + } + + @Override + public String toString() { + if (isEmpty()) + return "{ }"; + + return cards.stream().map(String::valueOf).collect(Collectors.joining("|", "[", "]")); } void add(Card card) { @@ -22,12 +30,4 @@ final class Waste { boolean isEmpty() { return cards.isEmpty(); } - - @Override - public String toString() { - if (isEmpty()) - return "{ }"; - - return cards.stream().map(String::valueOf).collect(Collectors.joining("|", "[", "]")); - } }