]> wirehaze git hosting - solitaire.git/commitdiff

wirehaze git hosting

add waste
authorphfr24 <phfr24@inf.ufpr.br>
Sun, 9 Aug 2026 04:53:11 +0000 (01:53 -0300)
committerphfr24 <phfr24@inf.ufpr.br>
Sun, 9 Aug 2026 04:53:11 +0000 (01:53 -0300)
src/solitaire/Main.java
src/solitaire/Rank.java
src/solitaire/Stock.java [moved from src/solitaire/Deck.java with 56% similarity]
src/solitaire/Suit.java
src/solitaire/Waste.java [new file with mode: 0644]

index 1dd7555ec96c811c658dedfc2f223e709f51f276..75d65d91e811a60512c809fd2c313dc5d003cf1b 100644 (file)
@@ -1,18 +1,25 @@
 package solitaire;
 
 class Main {
+    private static Stock stock = new Stock();
+    private static Waste waste = new Waste();
+
+    private static void printTable() {
+       System.out.printf("%s   %s\n", stock, waste);
+    }
 
     public static void main(String[] args) {
-       Deck d = new Deck();
-       System.out.println(d);
+       Card c;
+
+       while (!stock.isEmpty()) {
+           printTable();
 
-       while (!d.isEmpty()) {
-           Card c = d.draw();
+           c = stock.draw();
            c.reveal();
-           System.out.println(c);
+           waste.add(c);
        }
 
-       System.out.println(d);
+       printTable();
     }
 
 }
index 4a735abdb99984484f6fc3cc4e9de54f242b3b13..0bd1c2508d9ac77b5c29002b13e82ea4a3f949ee 100644 (file)
@@ -1,9 +1,13 @@
 package solitaire;
 
+import java.util.List;
+
 enum Rank {
     ACE("A"), TWO("2"), THREE("3"), FOUR("4"), FIVE("5"), SIX("6"), SEVEN("7"), EIGHT("8"), NINE("9"), TEN("10"),
     JACK("J"), QUEEN("Q"), KING("K");
 
+    static final List<Rank> RANKS = List.of(Rank.values());
+
     private final String symbol;
 
     Rank(String symbol) {
similarity index 56%
rename from src/solitaire/Deck.java
rename to src/solitaire/Stock.java
index 6d08a69207148c867e35cb7f499ad0746bd7eb9f..3f3a951e355e6bf2234d7eb577f871136db79b23 100644 (file)
@@ -1,24 +1,19 @@
 package solitaire;
 
-import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
 
-final class Deck {
-    private static final Suit[] suits = Suit.values();
-    private static final Rank[] ranks = Rank.values();
-
+final class Stock {
     private final List<Card> cards;
 
-    Deck() {
-       this.cards = new ArrayList<>(suits.length * ranks.length);
+    Stock() {
+       this.cards = new LinkedList<>();
 
-       for (Suit s : suits)
-           for (Rank r : ranks)
+       for (Suit s : Suit.SUITS)
+           for (Rank r : Rank.RANKS)
                cards.add(new Card(s, r));
-    }
 
-    void shuffle() {
        Collections.shuffle(cards);
     }
 
index 45bb8a0d4811591500465b9e01b9b8228ebe104d..9f79b6890138624c45d31132b7cddbf7229fe5a5 100644 (file)
@@ -1,8 +1,12 @@
 package solitaire;
 
+import java.util.List;
+
 enum Suit {
     CLUBS("♣", false), DIAMONDS("♦", true), HEARTS("♥", true), SPADES("♠", false);
 
+    static final List<Suit> SUITS = List.of(Suit.values());
+
     private final String symbol;
     private final boolean red;
 
diff --git a/src/solitaire/Waste.java b/src/solitaire/Waste.java
new file mode 100644 (file)
index 0000000..763fea9
--- /dev/null
@@ -0,0 +1,33 @@
+package solitaire;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+final class Waste {
+    private final List<Card> cards;
+
+    Waste() {
+       this.cards = new LinkedList<>();
+    }
+
+    void add(Card card) {
+       cards.add(card);
+    }
+
+    Card draw() {
+       return cards.removeLast();
+    }
+
+    boolean isEmpty() {
+       return cards.isEmpty();
+    }
+
+    @Override
+    public String toString() {
+       if (isEmpty())
+           return "{   }";
+
+       return cards.stream().map(String::valueOf).collect(Collectors.joining("", "{ ", " }"));
+    }
+}