diff --git a/pom.xml b/pom.xml
index c6ec0cc8..6f0824b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,18 @@
io.zipcoder
casino
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.7
+ 1.7
+
+
+
+
diff --git a/src/main/java/io/zipcoder/casino/Blackjack.java b/src/main/java/io/zipcoder/casino/Blackjack.java
new file mode 100644
index 00000000..e6b077dd
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Blackjack.java
@@ -0,0 +1,104 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Console.Console;
+import io.zipcoder.casino.Interfaces.Gamble;
+
+public class Blackjack extends CardGame implements Gamble{
+ BlackjackPlayer player;
+ BlackjackDealer dealer;
+ private double pot = 0;
+
+ public BlackjackPlayer getPlayer() {
+ return player;
+ }
+ public BlackjackDealer getDealer() {
+ return dealer;
+ }
+
+ public Blackjack(Player player){
+ this.player = new BlackjackPlayer(player);
+ Player dealer = new Player("Dealer",0,0);
+ this.dealer = new BlackjackDealer(dealer);
+ }
+
+ public void start(){
+ Console.print("Welcome to BlackJack");
+ play();
+ }
+
+ public void play(){
+ pot = takeBet();
+ System.out.println(pot);
+ deal(player,dealer,2);
+ askForHitOrStay();
+ dealerPlay();
+ checkWin();
+ if(playAgain()){
+ play();
+ }else{
+ gameOptions();
+ }
+ }
+
+ public boolean playAgain(){
+ String input = Console.getValidString("Would you like to play again?","yes","no");
+ return "yes".equalsIgnoreCase(input);
+ }
+
+ public void checkWin(){
+ if(playerWins()){
+ Console.print("Player wins\n");
+ casinoplayer.addToBalance(pot);
+ }else{
+ Console.print("Dealer wins\n");
+ }
+ Console.print("Dealer had\n"+dealer.getStringDisplayHand());
+ Console.print("Score of "+dealer.getScore());
+ }
+
+ public void askForHitOrStay(){
+ Console.print("Dealer is showing\n"+dealer.getHand().get(0).toString());
+ String hitOrStay;
+ do{
+ printHand(player);
+ Console.print("Score of "+player.getScore() + "\n");
+ if(player.getScore()>=21){
+ return;
+ }
+ hitOrStay = Console.getValidString("Would you like to hit or stay?","hit","stay");
+ if("hit".equalsIgnoreCase(hitOrStay)){
+ player.addCard(deck.getCard());
+ }else {
+ return;
+ }
+ }while(true);
+ }
+
+ public void dealerPlay(){
+ while(dealer.hitDealer()){
+ dealer.addCard(deck.getCard());
+ }
+ }
+
+ public double takeBet(){
+ Console.print("You current balance is "+format.format(casinoplayer.getBalance()));
+ double bet;
+ while(true){
+ bet = Console.getDouble("How much would you like bet?");
+ if(casinoplayer.getBalance() >= bet){
+ casinoplayer.addToBalance(-1*bet);
+ return bet;
+ }
+ Console.print("Invalid bet");
+ }
+ }
+
+ public boolean playerWins(){
+ if((player.getScore() == 21 && dealer.getScore() != 21) ||
+ (player.getScore() < 21 && dealer.getScore() < player.getScore()) ||
+ (player.getScore() < 21 && dealer.getScore() > 21)) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/io/zipcoder/casino/BlackjackDealer.java b/src/main/java/io/zipcoder/casino/BlackjackDealer.java
new file mode 100644
index 00000000..f7787ca9
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/BlackjackDealer.java
@@ -0,0 +1,12 @@
+package io.zipcoder.casino;
+
+public class BlackjackDealer extends BlackjackPlayer{
+
+ public BlackjackDealer(Player person) {
+ super(person);
+ }
+
+ public boolean hitDealer(){
+ return getScore() < 17;
+ }
+}
diff --git a/src/main/java/io/zipcoder/casino/BlackjackPlayer.java b/src/main/java/io/zipcoder/casino/BlackjackPlayer.java
new file mode 100644
index 00000000..11a7e9c0
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/BlackjackPlayer.java
@@ -0,0 +1,32 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Deck.Card;
+
+public class BlackjackPlayer extends CardPlayer{
+
+ public BlackjackPlayer(Player person) {
+ super();
+ }
+
+ public int getScore() {
+ int sum = 0;
+ for(Card card: hand) {
+ sum += card.getValue();
+ }
+
+ if(isAceInHand() && sum <= 11) {
+ sum += 10;
+ }
+ return sum;
+ }
+
+ private boolean isAceInHand() {
+ for(Card card: hand) {
+ if(card.getValue() == 1) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/casino/CardGame.java b/src/main/java/io/zipcoder/casino/CardGame.java
new file mode 100644
index 00000000..3921fec4
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/CardGame.java
@@ -0,0 +1,44 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Console.Console;
+import io.zipcoder.casino.Deck.Card;
+import io.zipcoder.casino.Deck.Deck;
+
+abstract class CardGame extends Casino {
+ Deck deck = new Deck();
+
+ public void deal(CardPlayer player,CardPlayer dealer,int amount){
+ clearHands(player,dealer);
+ deck.shuffle();
+ for(int i =0;i hand;
+
+ public CardPlayer() {
+ super("cardPlayer",0,0);
+ hand = new ArrayList<>();
+ }
+
+ public ArrayList getHand() {
+ return hand;
+ }
+
+ public void addCard(Card card) {
+ hand.add(card);
+ }
+
+ public void clearHand(){
+ hand.clear();
+ }
+
+ public String getStringDisplayHand(){
+ String output = "";
+ Card card;
+ for (int i=0; i hand){
+ this.hand = hand;
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/casino/Casino.java b/src/main/java/io/zipcoder/casino/Casino.java
index 74dfdd8c..68cfbf72 100644
--- a/src/main/java/io/zipcoder/casino/Casino.java
+++ b/src/main/java/io/zipcoder/casino/Casino.java
@@ -1,5 +1,52 @@
package io.zipcoder.casino;
+import io.zipcoder.casino.Console.Console;
+
+import java.text.DecimalFormat;
+import java.util.Arrays;
public class Casino {
+ DecimalFormat format = new DecimalFormat("0.00");
+ static Player casinoplayer;
+
+ public void startCasino(){
+
+ Console.print("Welcome to the casino");
+ String name = Console.getString("What is your name?");
+ int age = (int)Console.getDouble("How old are you?");
+ double money = Console.getDouble("How much coin you got?");
+ casinoplayer= new Player(name,money,age);
+
+ gameOptions();
+
+ }
+
+ public void gameOptions(){
+ String[] gameOptionList = {"CRAPS","BLACKJACK","GO FISH"};
+ Console.print("Game options:\n"+ Arrays.asList(gameOptionList).toString());
+ String input = Console.getValidString("What game would you like to play?",gameOptionList);
+ switch(input.toLowerCase()){
+ case "blackjack":
+ validAge();
+ new Blackjack(casinoplayer).start();
+ break;
+ case "go fish":
+ new GoFish(casinoplayer).goFishStart();
+ break;
+ case "craps":
+ validAge();
+ new Craps(casinoplayer).play();
+ break;
+ default:
+ gameOptions();
+ }
+ }
+
+ public void validAge(){
+ if(casinoplayer.getAge()<21){
+ Console.print("Too young sucka");
+ gameOptions();
+ }
+ }
+
}
diff --git a/src/main/java/io/zipcoder/casino/Console/Console.java b/src/main/java/io/zipcoder/casino/Console/Console.java
new file mode 100644
index 00000000..fddc4e12
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Console/Console.java
@@ -0,0 +1,57 @@
+package io.zipcoder.casino.Console;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.InputMismatchException;
+import java.util.Scanner;
+
+public class Console extends ArrayList {
+
+ public static String getString(String prompt) {
+ Scanner input = new Scanner(System.in);
+ System.out.println(prompt);
+ String userinput = input.nextLine();
+ return userinput;
+ }
+
+ public static double getDouble(String prompt) {
+ do {
+ try {
+ Scanner input = new Scanner(System.in);
+ System.out.println(prompt);
+ double userinput = input.nextDouble();
+ return userinput;
+ } catch (IllegalArgumentException | InputMismatchException e) {
+ System.out.println("INVALID AMOUNT\n");
+ continue;
+ }
+ } while (true);
+ }
+ public static void print(String prompt){
+ System.out.println(prompt);
+ }
+
+
+ @Override
+ public boolean contains(Object object){
+ String string = (String)object;
+ for (String str: this){
+ if(str.equalsIgnoreCase(string)){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static String getValidString(String prompt,String... validInputs){
+ String input;
+ while(true){
+ input = getString(prompt);
+ if (Arrays.asList(validInputs).contains(input)){
+ return input;
+ }
+ print("Invalid input");
+ }
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/casino/Craps.java b/src/main/java/io/zipcoder/casino/Craps.java
new file mode 100644
index 00000000..1eea5be3
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Craps.java
@@ -0,0 +1,100 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Console.Console;
+import io.zipcoder.casino.Interfaces.Gamble;
+import io.zipcoder.casino.Interfaces.Game;
+
+import java.util.Scanner;
+
+public class Craps extends Casino implements Gamble, Game {
+ Scanner input = new Scanner(System.in);
+ Player crapsplayer;
+ //double playerCash = crapsplayer.balance; null pointer
+ double bet;
+
+
+ public Craps(Player player) {
+ this.crapsplayer = player;
+ }
+
+ public boolean play() {
+ boolean play = true;
+ Console.print("Welcome to Craps");
+
+ while (play) {
+
+ Console.print("Player balance: " + format.format(crapsplayer.balance));
+
+ takeBet();
+
+ int rollONE = roll();
+ int target = rollONE;
+
+ if (rollONE == 7 || rollONE == 11) {
+ playerWin(bet);
+ } else if (rollONE == 2 || rollONE == 3 || rollONE == 12) {
+ playerLose(bet);
+ } else {
+ Console.print("Target is now " + rollONE);
+ int rollTWO = roll();
+ checkRollTwo(rollTWO, rollONE);
+ if (rollTWO == 7) {
+ playerLose(bet);
+ }
+ }
+ play = playAgain();
+ }
+ crapsplayer.setBalance(crapsplayer.balance);
+ gameOptions();
+ return true;
+ }
+
+
+ public int roll() {
+ Console.print("Press Enter key to roll");
+ input.nextLine();
+ int dice1 = (int) (Math.random() * 6) + 1;
+ int dice2 = (int) (Math.random() * 6) + 1;
+
+ int sum = dice1 + dice2;
+
+ Console.print("You rolled " + dice1 + " and " + dice2);
+ Console.print("Rolled " + sum);
+ return sum;
+ }
+
+ public int checkRollTwo(int rollTWO, int rollONE) {
+ while (rollTWO != 7) {
+ if (rollTWO == rollONE) {
+ playerWin(bet);
+ break;
+ } else {
+ Console.print("Target is " + rollONE);
+ }
+ rollTWO = roll();
+ }
+ return rollTWO;
+ }
+
+ private boolean playAgain() {
+ String userinput = Console.getString("Play again? Y/N");
+ return !userinput.equalsIgnoreCase("N") && !userinput.equalsIgnoreCase("no");
+ }
+
+ public double takeBet() {
+ do {
+ bet = Console.getDouble("Place your bet: ");
+ } while (bet > crapsplayer.balance);
+ return bet;
+ }
+
+ public void playerLose(double bet) {
+ Console.print("You lose!");
+ crapsplayer.balance -= bet;
+ }
+
+ public void playerWin(double bet) {
+ Console.print("You win!");
+ crapsplayer.balance += bet;
+ }
+}
diff --git a/src/main/java/io/zipcoder/casino/Deck/Card.java b/src/main/java/io/zipcoder/casino/Deck/Card.java
new file mode 100644
index 00000000..03504dd5
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Deck/Card.java
@@ -0,0 +1,58 @@
+package io.zipcoder.casino.Deck;
+
+
+public class Card
+{
+ private Suit suit;
+ public static String[] suitSymbols = {"♡", "♢", "♧", "♤"};
+ public static String[] faceSymbols = {"A", "J", "Q", "K"};
+ private Integer value;
+ private Enum goFishValue;
+ private String topCardRepresentation;
+ private String bottomCardRepresentation;
+ private static String middleCardRepresentation="| |\n";
+
+ private Card(){
+ }
+
+ @Override
+ public String toString(){
+ return topCardRepresentation+middleCardRepresentation+bottomCardRepresentation;
+ }
+ public String getTopCardRepresentation(){
+ return topCardRepresentation;
+ }
+
+
+ public Card(Suit passedSuit, Integer passedValue){
+ this(passedSuit, passedValue, "X");
+ }
+ public Card(Suit passedSuit, Integer passedValue, String passedSuitRepresentation){
+ this(passedSuit, passedValue, passedSuitRepresentation, "Y");
+ }
+ public Card(Suit passedSuit, Integer passedValue, String passedSuitRepresentation, String passedFaceRepresentation){
+ suit=passedSuit;
+ value=passedValue;
+ topCardRepresentation=" ----- \n"+
+ "|"+String.format("%2s%-3s", passedFaceRepresentation, passedSuitRepresentation)+"|\n";
+ bottomCardRepresentation="|"+String.format("%4s%s", passedFaceRepresentation, passedSuitRepresentation)+"|\n"+
+ " ----- \n";
+ }
+
+ public String getGoFishValue() {
+ return goFishValue.toString();
+ }
+
+ public void setGoFishValue(GoFishValue goFishValue) {
+ this.goFishValue = goFishValue;
+ }
+
+ public Integer getValue(){
+ return value;
+ }
+
+ public Suit getSuit(){
+ return suit;
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/casino/Deck/Deck.java b/src/main/java/io/zipcoder/casino/Deck/Deck.java
new file mode 100644
index 00000000..6dd55902
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Deck/Deck.java
@@ -0,0 +1,53 @@
+package io.zipcoder.casino.Deck;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class Deck {
+
+ private ArrayList cards;
+
+ public Deck(){
+ populate();
+ }
+
+ public Card getCard(){
+ if(cards.size() == 0) {
+ populate();
+ shuffle();
+ }
+ Card card = cards.get(0);
+ cards.remove(0);
+ return card;
+ }
+
+ public ArrayList getAllCards(){
+ return cards;
+ }
+
+
+ private void populate() {
+ cards = new ArrayList();
+ for (Suit suit: Suit.values()) {
+ for (int value = 1; value <= 13; value++)
+ {
+ if (value < 11)
+ {
+ if (value==1)
+ cards.add(new Card(suit, value, Card.suitSymbols[suit.ordinal()], Card.faceSymbols[0]));
+ else
+ cards.add(new Card(suit, value, Card.suitSymbols[suit.ordinal()], ""+value));
+ }
+ else
+ cards.add(new Card(suit, 10, Card.suitSymbols[suit.ordinal()], Card.faceSymbols[value - 10]));
+
+ cards.get(cards.size()-1).setGoFishValue(GoFishValue.values()[value-1]);
+ }
+ }
+ }
+
+ public void shuffle(){
+ Collections.shuffle(cards);
+ }
+
+}
diff --git a/src/main/java/io/zipcoder/casino/Deck/GoFishValue.java b/src/main/java/io/zipcoder/casino/Deck/GoFishValue.java
new file mode 100644
index 00000000..cfa35e33
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Deck/GoFishValue.java
@@ -0,0 +1,5 @@
+package io.zipcoder.casino.Deck;
+
+public enum GoFishValue {
+ ACE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING;
+}
diff --git a/src/main/java/io/zipcoder/casino/Deck/Suit.java b/src/main/java/io/zipcoder/casino/Deck/Suit.java
new file mode 100644
index 00000000..05e05a10
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Deck/Suit.java
@@ -0,0 +1,3 @@
+package io.zipcoder.casino.Deck;
+
+public enum Suit {HEARTS, DIAMONDS, CLUBS, SPADES}
diff --git a/src/main/java/io/zipcoder/casino/GoFish.java b/src/main/java/io/zipcoder/casino/GoFish.java
new file mode 100644
index 00000000..11830d3d
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/GoFish.java
@@ -0,0 +1,160 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Console.Console;
+import io.zipcoder.casino.Deck.Card;
+
+import java.lang.reflect.Array;
+import java.util.*;
+
+public class GoFish extends CardGame {
+
+ GoFishPlayer player;
+ GoFishPlayer dealer;
+
+
+ public GoFish(Player player) {
+ this.player = new GoFishPlayer(player);
+ Player dealer = new Player("Dealer", 0, 0);
+ this.dealer = new GoFishPlayer(dealer);
+ }
+
+ public void goFishStart() {
+ deck.shuffle();
+ deal(player, dealer, 7);
+ Console.print("Welcome to GoFish " + player.name + "!");
+ boolean playing = true;
+ while (playing) {
+ playerTurn();
+ dealerTurn();
+ playing = checkForWin();
+ }
+ gameOptions();
+ }
+
+ private boolean checkForWin() {
+ if (deck.getAllCards().size() == 0) {
+ compareBooks();
+ return false;
+
+ }
+ return true;
+ }
+
+ private void playerTurn() {
+ boolean playing = true;
+ checkHandSize(player);
+ while (playing) {
+ checkForBooks(player);
+ Console.print(player.getStringDisplayHand());
+ String askCard;
+ do {
+ askCard = Console.getString("Enter card you are looking for: ");
+ } while (!isCardInHand(askCard.toUpperCase(), player.getHand()));
+
+ if (isCardInHand(askCard.toUpperCase(), dealer.getHand())) {
+ swapCard(dealer, player, askCard);
+ Console.print("You got a match!");
+ } else {
+ Console.print("GO FISH!");
+ giveCard(player);
+ playing = false;
+ }
+ }
+ }
+
+
+ private void dealerTurn() {
+ boolean playing = true;
+ checkHandSize(dealer);
+ while (playing) {
+ checkForBooks(dealer);
+ Console.print("Opponent looking for card...");
+ Card dealerCard = dealerFindCard();
+ Console.print("Do you have any: " + dealerCard.getGoFishValue() + "'S ?");
+ if (isCardInHand(dealerCard.getGoFishValue(), player.getHand())) {
+ swapCard(player, dealer, dealerCard.getGoFishValue());
+ } else {
+ Console.print("Guess I'll go fish...");
+ giveCard(dealer);
+ playing = false;
+ }
+ }
+ }
+
+ private Card dealerFindCard() {
+ Random r = new Random();
+ int x = r.nextInt(dealer.getHand().size() - 1);
+ return dealer.getHand().get(x);
+ }
+
+ public boolean isCardInHand(String askCard, ArrayList hand) {
+ for (Card card : hand) {
+ if (card.getGoFishValue().equals(askCard)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void swapCard(CardPlayer fromPlayer, CardPlayer toPlayer, String cardValue) {
+ ArrayList newHand = new ArrayList<>();
+ for (Card card : fromPlayer.getHand()) {
+ if (cardValue.equalsIgnoreCase(card.getGoFishValue())) {
+ toPlayer.addCard(card);
+ } else {
+ newHand.add(card);
+ }
+ }
+ fromPlayer.setHand(newHand);
+ }
+
+ public void checkForBooks(GoFishPlayer player) {
+ for (Map.Entry entry : getHandMap(player).entrySet()) {
+ if (entry.getValue() == 4) {
+ player.addBookCounter(1);
+ removeBooks(player, entry.getKey());
+ }
+ }
+ }
+
+ public HashMap getHandMap(GoFishPlayer player) {
+ HashMap handMap = new HashMap<>();
+ for (Card card : player.getHand()) {
+ if (!handMap.containsKey(card.getGoFishValue())) {
+ handMap.put(card.getGoFishValue(), 1);
+ } else {
+ handMap.put(card.getGoFishValue(), handMap.get(card.getGoFishValue()) + 1);
+ }
+ }
+ return handMap;
+ }
+
+ public void removeBooks(GoFishPlayer player, String cardValue) {
+ ArrayList newHand = new ArrayList<>();
+ for (Card card : player.getHand()) {
+ if (!cardValue.equals(card.getGoFishValue())) {
+ newHand.add(card);
+ }
+ }
+ player.setHand(newHand);
+ }
+
+
+ private void compareBooks() {
+ if (player.getBookCounter() > dealer.getBookCounter()) {
+ System.out.println("You win!");
+ } else if (player.getBookCounter() < dealer.getBookCounter()) {
+ System.out.println("You lose!");
+ } else {
+ System.out.println("LET US FIGHT TO THE DEATH " + player.name.toUpperCase());
+ }
+ }
+
+ private void checkHandSize(CardPlayer player) {
+ if (player.getHand().size() < 1) {
+ giveCard(player);
+ }
+ }
+
+
+}
diff --git a/src/main/java/io/zipcoder/casino/GoFishPlayer.java b/src/main/java/io/zipcoder/casino/GoFishPlayer.java
new file mode 100644
index 00000000..c7fe2dc4
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/GoFishPlayer.java
@@ -0,0 +1,28 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Deck.Card;
+
+import java.util.ArrayList;
+
+public class GoFishPlayer extends CardPlayer {
+
+ private int bookCounter;
+ private ArrayList booksList;
+
+ public GoFishPlayer(Player player){
+ super();
+ this.booksList = new ArrayList();
+ }
+
+ public int getBookCounter() {
+ return bookCounter;
+ }
+
+ public void addBookCounter(int bookCounter) {
+ this.bookCounter += bookCounter;
+ }
+
+ public ArrayList getBooksList() {
+ return booksList;
+ }
+}
diff --git a/src/main/java/io/zipcoder/casino/Interfaces/Gamble.java b/src/main/java/io/zipcoder/casino/Interfaces/Gamble.java
new file mode 100644
index 00000000..3ac3a580
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Interfaces/Gamble.java
@@ -0,0 +1,6 @@
+package io.zipcoder.casino.Interfaces;
+
+public interface Gamble {
+ public double takeBet();
+
+}
diff --git a/src/main/java/io/zipcoder/casino/Interfaces/Game.java b/src/main/java/io/zipcoder/casino/Interfaces/Game.java
new file mode 100644
index 00000000..62490323
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Interfaces/Game.java
@@ -0,0 +1,5 @@
+package io.zipcoder.casino.Interfaces;
+
+public interface Game {
+ public boolean play();
+}
diff --git a/src/main/java/io/zipcoder/casino/Main.java b/src/main/java/io/zipcoder/casino/Main.java
new file mode 100644
index 00000000..dd1adf91
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Main.java
@@ -0,0 +1,8 @@
+package io.zipcoder.casino;
+
+public class Main {
+ public static void main(String[] args) {
+ new Casino().startCasino();
+
+ }
+}
diff --git a/src/main/java/io/zipcoder/casino/Player.java b/src/main/java/io/zipcoder/casino/Player.java
new file mode 100644
index 00000000..8e210c3c
--- /dev/null
+++ b/src/main/java/io/zipcoder/casino/Player.java
@@ -0,0 +1,46 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Deck.Card;
+
+import java.util.ArrayList;
+
+public class Player {
+ public String name;
+ public double balance;
+ public int age;
+ public ArrayList playerHand = new ArrayList();
+
+ public Player(String name, double balance, int age){
+ this.name = name;
+ this.balance = balance;
+ this.age = age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+ public void setBalance(double balance) {
+ this.balance = balance;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public void addToBalance(double amount){
+ this.balance+=amount;
+ }
+}
diff --git a/src/test/java/io/zipcoder/casino/CasinoTest.java b/src/test/java/io/zipcoder/casino/CasinoTest.java
index e9286523..00bac028 100644
--- a/src/test/java/io/zipcoder/casino/CasinoTest.java
+++ b/src/test/java/io/zipcoder/casino/CasinoTest.java
@@ -1,5 +1,11 @@
package io.zipcoder.casino;
+import io.zipcoder.casino.Deck.Card;
+import org.junit.Test;
+
public class CasinoTest {
+
+
+
}
diff --git a/src/test/java/io/zipcoder/casino/CrapsTest.java b/src/test/java/io/zipcoder/casino/CrapsTest.java
new file mode 100644
index 00000000..57ebeaca
--- /dev/null
+++ b/src/test/java/io/zipcoder/casino/CrapsTest.java
@@ -0,0 +1,34 @@
+package io.zipcoder.casino;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class CrapsTest {
+
+ Player player = new Player("Zach",5000,23);
+ Craps test = new Craps(player);
+
+ @Test
+ public void winTest() {
+ double expected = 6000;
+
+ test.playerWin(1000);
+ double actual = player.balance;
+
+ Assert.assertEquals(expected, actual, 0);
+ }
+
+ @Test
+ public void loseTest() {
+ double expected = 4000;
+
+ test.playerLose(1000);
+ double actual = player.balance;
+
+ Assert.assertEquals(expected, actual, 0);
+ }
+}
+
+
diff --git a/src/test/java/io/zipcoder/casino/Deck/DeckTest.java b/src/test/java/io/zipcoder/casino/Deck/DeckTest.java
new file mode 100644
index 00000000..2c6b08ce
--- /dev/null
+++ b/src/test/java/io/zipcoder/casino/Deck/DeckTest.java
@@ -0,0 +1,60 @@
+package io.zipcoder.casino.Deck;
+
+import io.zipcoder.casino.Blackjack;
+import io.zipcoder.casino.Player;
+import org.junit.Assert;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class DeckTest {
+
+ Deck testDeck = new Deck();
+
+ @Test
+ public void getCard(){
+ int expected = 51;
+ testDeck.getCard();
+ int actual = testDeck.getAllCards().size();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test
+ public void getAllCards(){
+ int expected = 52;
+ int actual = testDeck.getAllCards().size();
+
+ Assert.assertEquals(expected,actual);
+
+ }
+ @Test
+ public void populateTest(){
+
+ int expected = 52;
+ int actual = testDeck.getAllCards().size();
+ Assert.assertEquals(expected,actual);
+ }
+
+ @Test
+ public void shuffle() {
+ Card expected = testDeck.getCard();
+ System.out.println(expected);
+ testDeck.shuffle();
+ Card actual = testDeck.getCard();
+ System.out.println(actual);
+
+ Assert.assertFalse(expected == actual);
+ }
+
+ @Test
+ public void goFistValueTest(){
+ Player testPlayer = new Player("wes",21,1000);
+ Blackjack testGame = new Blackjack(testPlayer);
+ testGame.deal(testGame.getPlayer(),testGame.getDealer(),5);
+ for(Card card:testGame.getPlayer().getHand()){
+ System.out.println(card.getGoFishValue());
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/io/zipcoder/casino/GoFishTest.java b/src/test/java/io/zipcoder/casino/GoFishTest.java
new file mode 100644
index 00000000..ebe1c4e5
--- /dev/null
+++ b/src/test/java/io/zipcoder/casino/GoFishTest.java
@@ -0,0 +1,51 @@
+package io.zipcoder.casino;
+
+import io.zipcoder.casino.Deck.Card;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class GoFishTest extends CardGame {
+
+ Player player = new Player("Graham", 5, 3000);
+ Player dealer = new Player("Graham", 5, 5);
+
+ CardPlayer dealer1 = new CardPlayer();
+ GoFish test = new GoFish(player);
+
+
+
+ @Test
+ public void isCardInHandTest(){
+ test.deal(test.player,test.dealer,26);
+ System.out.println(test.dealer.getStringDisplayHand());
+ boolean expected = true;
+ boolean actual = test.isCardInHand("ACE", test.dealer.getHand());
+
+ Assert.assertEquals(expected,actual);
+
+ }
+
+ @Test
+ public void checkForBooksTest(){
+ test.testDeal(test.player,40);
+
+ int expected = 1;
+ test.checkForBooks(test.player);
+ int actual = test.player.getBookCounter();
+
+ Assert.assertEquals(expected,actual);
+
+ }
+
+ @Test
+ public void removeBooksTest(){
+ test.testDeal(test.player,40);
+
+ int expected = 36;
+ test.checkForBooks(test.player);
+ int actual = test.player.getHand().size();
+
+ Assert.assertEquals(expected,actual);
+ }
+
+}
diff --git a/src/test/java/io/zipcoder/casino/PlayerTest/PlayerTest.java b/src/test/java/io/zipcoder/casino/PlayerTest/PlayerTest.java
new file mode 100644
index 00000000..9d976a9c
--- /dev/null
+++ b/src/test/java/io/zipcoder/casino/PlayerTest/PlayerTest.java
@@ -0,0 +1,65 @@
+package io.zipcoder.casino.PlayerTest;
+
+
+import io.zipcoder.casino.Player;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PlayerTest {
+
+ Player testPlayer = new Player("wes",5000,21);
+
+ @Test
+ public void getNameTest(){
+ String expected = "wes";
+ String actual = testPlayer.getName();
+
+ Assert.assertEquals(expected,actual);
+ }
+ @Test
+ public void setNameTest(){
+ String expected = "bob";
+ testPlayer.setName("bob");
+ String actual = testPlayer.getName();
+
+ Assert.assertEquals(expected,actual);
+ }
+ @Test
+ public void getBalanceTest(){
+ double expected = 5000;
+ double actual = testPlayer.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+ }
+ @Test
+ public void setBalanceTest(){
+ double expected = 100000;
+ testPlayer.setBalance(100000);
+ double actual = testPlayer.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+ }
+ @Test
+ public void getAgeTest(){
+ int expected = 21;
+ int actual = testPlayer.getAge();
+
+ Assert.assertEquals(expected,actual);
+ }
+ @Test
+ public void setAgeTest(){
+ int expected = 99;
+ testPlayer.setAge(99);
+ int actual = testPlayer.getAge();
+
+ Assert.assertEquals(expected,actual);
+ }
+ @Test
+ public void addToBalanceTest(){
+ double expected = 5001;
+ testPlayer.addToBalance(1);
+ double actual = testPlayer.getBalance();
+
+ Assert.assertEquals(expected,actual,0);
+ }
+}