diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..efbe0da
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,106 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Java template
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### JetBrains template
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+.idea/.gitignore
+.idea/description.html
+.idea/encodings.xml
+.idea/misc.xml
+.idea/modules.xml
+.idea/project-template.xml
+.idea/vcs.xml
diff --git a/CardGame.iml b/CardGame.iml
new file mode 100644
index 0000000..fa907c3
--- /dev/null
+++ b/CardGame.iml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Card.java b/src/Card.java
new file mode 100644
index 0000000..485b3a0
--- /dev/null
+++ b/src/Card.java
@@ -0,0 +1,9 @@
+public class Card {
+ int number;
+ Suit suit;
+
+ public Card(int number, Suit suit) {
+ this.number = number;
+ this.suit = suit;
+ }
+}
diff --git a/src/CardGame.java b/src/CardGame.java
new file mode 100644
index 0000000..f6cf2d7
--- /dev/null
+++ b/src/CardGame.java
@@ -0,0 +1,63 @@
+import java.util.ArrayList;
+
+public class CardGame {
+ public Player[] players;
+ ArrayList Pot;
+ Card[] draws;
+
+ /**
+ * @param numberOfCards
+ * @param numberOfPlayers
+ */
+ public CardGame(int numberOfCards, int numberOfPlayers) {
+ Pile deck = createDeck(10);
+ this.players = new Player[numberOfPlayers];
+ draws = new Card[numberOfPlayers];
+ for (int i = 0; i < numberOfPlayers; i++) {
+ players[i] = new Player(deck.getCardsForPlayer(numberOfPlayers));
+ }
+ }
+
+ private Pile createDeck(int numberOfCards) {
+ Pile deck = new Pile();
+ for (int number = 0; number < numberOfCards * Suit.COUNT; number++) {
+ for (int suit = 0; suit < Suit.COUNT; suit++) {
+ deck.add(new Card(number + 1, new Suit(suit)));
+ }
+ }
+ return deck;
+ }
+
+ public void play() {
+ while (noWinner()) {
+ round();
+ }
+ }
+
+ private void round() {
+ for (int i = 0; i < draws.length; i++) {
+ if (!players[i].broke()) {
+ draws[i] = players[i].draw();
+ System.out.printf("Player %i (%i cards): %i", i, players[i].count(), draws[i].number);
+ Pot.add(draws[i]);
+ }
+ }
+ int winner = getWinner(draws);
+ players[winner].addPot(draws);
+
+ }
+
+ private int getWinner(Card[] drawn) {
+ return 0;
+ }
+
+ private boolean noWinner() {
+ int notBroke = 0;
+ for (int i = 0; i < players.length; i++) {
+ if (players[i].broke()) {
+ notBroke++;
+ }
+ }
+ return notBroke > 1;
+ }
+}
diff --git a/src/CardGameTest.java b/src/CardGameTest.java
new file mode 100644
index 0000000..7afb8b3
--- /dev/null
+++ b/src/CardGameTest.java
@@ -0,0 +1,8 @@
+import static org.junit.jupiter.api.Assertions.*;
+
+class CardGameTest {
+
+ @org.junit.jupiter.api.Test
+ void play() {
+ }
+}
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
new file mode 100644
index 0000000..be2637a
--- /dev/null
+++ b/src/Main.java
@@ -0,0 +1,14 @@
+public class Main {
+ enum Suits {
+ CLUBS,
+ SPADES,
+ HEARTS,
+ DIAMONDS
+ };
+
+ public static void main(String[] args) {
+ System.out.println("Card Game");
+ CardGame cardGame = new CardGame(10, 2);
+ cardGame.play();
+ }
+}
diff --git a/src/NoMoreCardsException.java b/src/NoMoreCardsException.java
new file mode 100644
index 0000000..61f9baf
--- /dev/null
+++ b/src/NoMoreCardsException.java
@@ -0,0 +1,2 @@
+public class NoMoreCardsException extends RuntimeException {
+}
diff --git a/src/Pile.java b/src/Pile.java
new file mode 100644
index 0000000..1643751
--- /dev/null
+++ b/src/Pile.java
@@ -0,0 +1,37 @@
+import java.util.ArrayList;
+
+public class Pile {
+ ArrayList pile = new ArrayList();
+
+ public Boolean isEmpty() {
+ return pile.isEmpty();
+ }
+
+ public void shuffle() {
+ }
+
+ public void takeDiscarded() {
+ }
+
+ public void addAll(Card[] cards) {
+ for(Card card: cards)
+ pile.add(card);
+ }
+
+ public int count() {
+ return pile.size();
+ }
+
+ public Pile getCardsForPlayer(int numberOfPlayers) {
+ Pile cardsForPlayer = new Pile();
+ for (int i = 0; i < pile.size() / numberOfPlayers; i++) {
+ cardsForPlayer.add(pile.get(0));
+ pile.remove(0);
+ }
+ return cardsForPlayer;
+ }
+
+ public void add(Card card) {
+ pile.add(card);
+ }
+}
diff --git a/src/Player.java b/src/Player.java
new file mode 100644
index 0000000..979cd44
--- /dev/null
+++ b/src/Player.java
@@ -0,0 +1,48 @@
+public class Player {
+ Pile drawPile;
+ Pile discardPile;
+
+ public Player(Pile drawPile) {
+ this.drawPile = drawPile;
+ }
+
+ public Pile getDrawPile() {
+ return drawPile;
+ }
+
+ public Pile getDiscardPile() {
+ return discardPile;
+ }
+
+ public void setDrawPile(Pile drawPile) {
+ this.drawPile = drawPile;
+ }
+
+ public void setDiscardPile(Pile discardPile) {
+ this.discardPile = discardPile;
+ }
+
+ public Card draw() throws NoMoreCardsException {
+ if (getDrawPile().isEmpty()) {
+ if (getDiscardPile().isEmpty()) {
+ throw new NoMoreCardsException();
+ }
+ discardPile.shuffle();
+ drawPile.takeDiscarded();
+ }
+ Card draw = new Card(1, new Suit(Suit.SPADES));
+ return draw;
+ }
+
+ public boolean broke() {
+ return drawPile.isEmpty() && discardPile.isEmpty();
+ }
+
+ public void addPot(Card[] draws) {
+ discardPile.addAll(draws);
+ }
+
+ public int count() {
+ return drawPile.count() + discardPile.count();
+ }
+}
diff --git a/src/Suit.java b/src/Suit.java
new file mode 100644
index 0000000..6255a3a
--- /dev/null
+++ b/src/Suit.java
@@ -0,0 +1,14 @@
+public class Suit {
+ int suit;
+// public static Suit SPADES;
+ public static final int CLUBS = 0;
+ public static final int SPADES = 1;
+ public static final int HEARTS = 2;
+ public static final int DIAMONDS = 3;
+ public static final int COUNT = 4;
+
+ public Suit(int suit) {
+ this.suit = suit;
+ }
+
+}