--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-25">
+ <attributes>
+ <attribute name="module" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+bin/
+.settings/
+*.class
+*.swp
+*.swo
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>solitaire</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+package solitaire;
+
+final class Card {
+ private final Suit suit;
+ private final Rank rank;
+ private boolean hidden;
+
+ 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);
+ }
+
+ Suit getSuit() {
+ return this.suit;
+ }
+
+ Rank getRank() {
+ return this.rank;
+ }
+
+ boolean isHidden() {
+ return this.hidden;
+ }
+
+ void reveal() {
+ this.hidden = false;
+ }
+
+ @Override
+ public String toString() {
+ if (this.hidden)
+ return " * ";
+
+ return String.format("%s%2s", this.suit, this.rank);
+ }
+}
--- /dev/null
+package solitaire;
+
+class Main {
+
+ public static void main(String[] args) {
+ Card c = new Card(Suit.SPADES, Rank.TEN);
+ c.reveal();
+ System.out.println(c);
+ }
+
+}
--- /dev/null
+package solitaire;
+
+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");
+
+ private String symbol;
+
+ Rank(String symbol) {
+ this.symbol = symbol;
+ }
+
+ @Override
+ public String toString() {
+ return this.symbol;
+ }
+}
--- /dev/null
+package solitaire;
+
+enum Suit {
+ CLUBS("♣", false),
+ DIAMONDS("♦", true),
+ HEARTS("♥", true),
+ SPADES("♠", false);
+
+ private String symbol;
+ private boolean red;
+
+ Suit(String symbol, boolean red) {
+ this.symbol = symbol;
+ this.red = red;
+ }
+
+ boolean isRed() {
+ return this.red;
+ }
+
+ boolean isBlack() {
+ return !this.red;
+ }
+
+ @Override
+ public String toString() {
+ return this.symbol;
+ }
+}