From 039a29e18d4d96d101b6e2aa94870896674c61ae Mon Sep 17 00:00:00 2001 From: kozman31 Date: Fri, 17 Nov 2017 15:50:12 -0500 Subject: [PATCH 1/7] casinoUML.xml --- Untitled Diagram.xml | 1 + 1 file changed, 1 insertion(+) create mode 100644 Untitled Diagram.xml diff --git a/Untitled Diagram.xml b/Untitled Diagram.xml new file mode 100644 index 00000000..7bad1ca6 --- /dev/null +++ b/Untitled Diagram.xml @@ -0,0 +1 @@ +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 \ No newline at end of file From fdb3100f654a176bf9bcea28c2072b2904dbbadb Mon Sep 17 00:00:00 2001 From: kozman31 Date: Fri, 17 Nov 2017 15:50:56 -0500 Subject: [PATCH 2/7] casinoUML.xml --- Untitled Diagram.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Untitled Diagram.xml b/Untitled Diagram.xml index 7bad1ca6..149d6619 100644 --- a/Untitled Diagram.xml +++ b/Untitled Diagram.xml @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file From c1b731da0073983bca360e2ebbfab3e91d76169d Mon Sep 17 00:00:00 2001 From: elliott Date: Sat, 18 Nov 2017 11:50:20 -0500 Subject: [PATCH 3/7] umlUpdate --- casino.uml | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 casino.uml diff --git a/casino.uml b/casino.uml new file mode 100644 index 00000000..fc41f810 --- /dev/null +++ b/casino.uml @@ -0,0 +1,66 @@ + + + JAVA + io.zipcoder.casino + + io.zipcoder.casino.Console + io.zipcoder.casino.DeckTest + io.zipcoder.casino.CardGames + io.zipcoder.casino.Casino + io.zipcoder.casino.Gamble + io.zipcoder.casino.Hand + io.zipcoder.casino.Card + io.zipcoder.casino.Deck + io.zipcoder.casino.CardTest + io.zipcoder.casino.Player + io.zipcoder.casino.Craps + io.zipcoder.casino.BlackJack + io.zipcoder.casino.Games + io.zipcoder.casino.GoFish + io.zipcoder.casino.CasinoTest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Methods + Fields + + All + private + + From 3ee68492ad47eaa57af523e6bc1612f3d8e8fbad Mon Sep 17 00:00:00 2001 From: elliott Date: Sun, 26 Nov 2017 20:07:43 -0500 Subject: [PATCH 4/7] Casino --- casino.uml | 93 +++++--- .../java/io/zipcoder/casino/BlackJack.java | 170 ++++++++++++++ .../io/zipcoder/casino/BlackJackGambler.java | 69 ++++++ src/main/java/io/zipcoder/casino/Card.java | 47 ++++ .../java/io/zipcoder/casino/CardGames.java | 57 +++++ .../java/io/zipcoder/casino/CardPlayer.java | 34 +++ src/main/java/io/zipcoder/casino/Casino.java | 102 ++++++++ .../java/io/zipcoder/casino/CompPlay.java | 99 ++++++++ src/main/java/io/zipcoder/casino/Console.java | 38 +++ src/main/java/io/zipcoder/casino/Craps.java | 212 +++++++++++++++++ .../java/io/zipcoder/casino/CrapsPlayer.java | 42 ++++ src/main/java/io/zipcoder/casino/Dealer.java | 18 ++ src/main/java/io/zipcoder/casino/Deck.java | 32 +++ src/main/java/io/zipcoder/casino/Die.java | 18 ++ src/main/java/io/zipcoder/casino/Gamble.java | 9 + src/main/java/io/zipcoder/casino/Games.java | 5 + src/main/java/io/zipcoder/casino/GoFish.java | 130 +++++++++++ .../java/io/zipcoder/casino/GoFishPlayer.java | 86 +++++++ src/main/java/io/zipcoder/casino/Hand.java | 48 ++++ src/main/java/io/zipcoder/casino/Player.java | 38 +++ src/main/java/io/zipcoder/casino/main.java | 11 + .../zipcoder/casino/BlackJackGamblerTest.java | 87 +++++++ .../io/zipcoder/casino/BlackJackTest.java | 221 ++++++++++++++++++ .../java/io/zipcoder/casino/CardTest.java | 37 +++ .../java/io/zipcoder/casino/CompPlayTest.java | 154 ++++++++++++ .../io/zipcoder/casino/CrapsPlayerTest.java | 51 ++++ .../java/io/zipcoder/casino/CrapsTest.java | 32 +++ .../java/io/zipcoder/casino/DealerTest.java | 42 ++++ .../java/io/zipcoder/casino/DeckTest.java | 55 +++++ src/test/java/io/zipcoder/casino/DieTest.java | 35 +++ .../io/zipcoder/casino/GoFishPlayerTest.java | 117 ++++++++++ .../java/io/zipcoder/casino/GoFishTest.java | 29 +++ .../java/io/zipcoder/casino/HandTest.java | 94 ++++++++ .../java/io/zipcoder/casino/PlayerTest.java | 55 +++++ 34 files changed, 2330 insertions(+), 37 deletions(-) create mode 100644 src/main/java/io/zipcoder/casino/BlackJack.java create mode 100644 src/main/java/io/zipcoder/casino/BlackJackGambler.java create mode 100644 src/main/java/io/zipcoder/casino/Card.java create mode 100644 src/main/java/io/zipcoder/casino/CardGames.java create mode 100644 src/main/java/io/zipcoder/casino/CardPlayer.java create mode 100644 src/main/java/io/zipcoder/casino/CompPlay.java create mode 100644 src/main/java/io/zipcoder/casino/Console.java create mode 100644 src/main/java/io/zipcoder/casino/Craps.java create mode 100644 src/main/java/io/zipcoder/casino/CrapsPlayer.java create mode 100644 src/main/java/io/zipcoder/casino/Dealer.java create mode 100644 src/main/java/io/zipcoder/casino/Deck.java create mode 100644 src/main/java/io/zipcoder/casino/Die.java create mode 100644 src/main/java/io/zipcoder/casino/Gamble.java create mode 100644 src/main/java/io/zipcoder/casino/Games.java create mode 100644 src/main/java/io/zipcoder/casino/GoFish.java create mode 100644 src/main/java/io/zipcoder/casino/GoFishPlayer.java create mode 100644 src/main/java/io/zipcoder/casino/Hand.java create mode 100644 src/main/java/io/zipcoder/casino/Player.java create mode 100644 src/main/java/io/zipcoder/casino/main.java create mode 100644 src/test/java/io/zipcoder/casino/BlackJackGamblerTest.java create mode 100644 src/test/java/io/zipcoder/casino/BlackJackTest.java create mode 100644 src/test/java/io/zipcoder/casino/CardTest.java create mode 100644 src/test/java/io/zipcoder/casino/CompPlayTest.java create mode 100644 src/test/java/io/zipcoder/casino/CrapsPlayerTest.java create mode 100644 src/test/java/io/zipcoder/casino/CrapsTest.java create mode 100644 src/test/java/io/zipcoder/casino/DealerTest.java create mode 100644 src/test/java/io/zipcoder/casino/DeckTest.java create mode 100644 src/test/java/io/zipcoder/casino/DieTest.java create mode 100644 src/test/java/io/zipcoder/casino/GoFishPlayerTest.java create mode 100644 src/test/java/io/zipcoder/casino/GoFishTest.java create mode 100644 src/test/java/io/zipcoder/casino/HandTest.java create mode 100644 src/test/java/io/zipcoder/casino/PlayerTest.java diff --git a/casino.uml b/casino.uml index fc41f810..13c501df 100644 --- a/casino.uml +++ b/casino.uml @@ -3,62 +3,81 @@ JAVA io.zipcoder.casino - io.zipcoder.casino.Console - io.zipcoder.casino.DeckTest - io.zipcoder.casino.CardGames - io.zipcoder.casino.Casino - io.zipcoder.casino.Gamble - io.zipcoder.casino.Hand - io.zipcoder.casino.Card - io.zipcoder.casino.Deck - io.zipcoder.casino.CardTest - io.zipcoder.casino.Player - io.zipcoder.casino.Craps - io.zipcoder.casino.BlackJack - io.zipcoder.casino.Games - io.zipcoder.casino.GoFish - io.zipcoder.casino.CasinoTest + io.zipcoder.casino.Console + io.zipcoder.casino.CardPlayer + io.zipcoder.casino.Casino + io.zipcoder.casino.Hand + io.zipcoder.casino.Deck + io.zipcoder.casino.CardTest + io.zipcoder.casino.BlackJack + io.zipcoder.casino.Games + io.zipcoder.casino.GoFishPlayer + io.zipcoder.casino.CasinoTest + io.zipcoder.casino.DeckTest + io.zipcoder.casino.CardGames + io.zipcoder.casino.Gamble + io.zipcoder.casino.Card + io.zipcoder.casino.Player + io.zipcoder.casino.Craps + io.zipcoder.casino.BlackJackGambler + io.zipcoder.casino.GoFish - - - - + + + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + + + - - - - + + + + - - + + - - + + - + - Methods Fields + Methods All private 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..37bdd188 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/BlackJack.java @@ -0,0 +1,170 @@ +package io.zipcoder.casino; + + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +public class BlackJack extends CardGames implements Gamble { + private Dealer dealer; + private String playAgain = ""; + private Map playerWagers = new HashMap(); + + public void play(BlackJackGambler user) { + gameSetUp(user); + do { + if (getRemainingDeckCards() / getPlayers().size() < 52) + loadDecks(8); + System.out.println(user.getName() + " Chips: " + user.getChipCount() + "\n"); + for (BlackJackGambler player : getPlayers()) { + Integer bet = takeBet(player); + playerBet(player, bet); + } + + addPlayer(dealer); + dealCards(2); + removePlayer(dealer); + + System.out.println(dealer.showOneCard()); + for (BlackJackGambler player : getPlayers()) + System.out.println(player.showHand()); + + for (BlackJackGambler player : getPlayers()) + hitOrStay(player); + + System.out.println("Dealers Cards: " + dealer.showHand() + "\n"); + + hitOrStay(dealer); + checkForWinners(); + + if (user.getChipCount() == 0) { + System.out.println("Your are out of chips, returning to lobby"); + playAgain = "no"; + } else + playAgain = Console.getStringInput("Play again?"); + + resetHands(); + resetBets(); + removeZeroChipPlayers(); + } while ("yes".equalsIgnoreCase(playAgain)); + + } + + @Override + public void gameSetUp(BlackJackGambler user) { + dealer = new Dealer(); + addPlayer(user); + loadDecks(8); + int numberOfPlayers = new Random().nextInt(6) + 1; + addAIPlayers(numberOfPlayers); + resetBets(); + } + + @Override + public void addAIPlayers(int playersToAdd) { + for (int i = 1; i <= playersToAdd; i++) + getPlayers().add(new BlackJackGambler(new Player("Computer" + i, 0, false), 3000)); + } + + @Override + public Integer takeBet(BlackJackGambler player) { + Integer bet; + if (player.isPerson()) { + bet = Console.getIntegerInput("Place your bet"); + bet = player.placeBet(bet); + } else bet = CompPlay.makeBet(player); + + return bet; + } + + private void playerBet(BlackJackGambler player, Integer amount) { + playerWagers.put(player, amount); + } + + private void hitOrStay(BlackJackGambler player) { + String userChoice = ""; + + while (!userChoice.equalsIgnoreCase("Stay") && !isBust(player)) { + if (player.isPerson()) + userChoice = Console.getStringInput("Hit or Stay?"); + else userChoice = CompPlay.hitOrStay(player); + + if (userChoice.equalsIgnoreCase("Hit")) { + System.out.println(player.getName() + ": Hit"); + Card card = getDeckCard(); + player.addCardToHand(card); + System.out.println(card + " New Total: " + player.getHandTotal() + "\n"); + } else if (userChoice.equalsIgnoreCase("Stay")) + System.out.println(player.getName() + ": Stay\n"); + } + + if (isBust(player)) + System.out.println(player.getName() + " went over: " + player.getHand() + "\n"); + } + + private boolean isBust(BlackJackGambler player) { + if (player.getHandTotal() > 21) { + return true; + } + return false; + } + + private void checkForWinners() { + for (BlackJackGambler player : getPlayers()) { + int multiplier = 0; + if (!isBust(dealer) && !isBust(player)) + multiplier = payoutMultiplier(player); + else if (!isBust(player)) + multiplier = 2; + payoutWinnings(player, multiplier); + } + } + + private int payoutMultiplier(BlackJackGambler player) { + if (player.getHandTotal() > dealer.getHandTotal()) { + return 2; + } else if (player.getHandTotal() == dealer.getHandTotal()) + return 1; + return 0; + } + + private boolean checkForBlackJack(BlackJackGambler player) { + if (player.getHandTotal() == 21 && player.getHand().size() == 2) + return true; + return false; + } + + private void payoutWinnings(BlackJackGambler player, double multiplier) { + if (checkForBlackJack(player)) + multiplier += 0.5; + Integer winnings = (int) (playerWagers.get(player).doubleValue() * multiplier); + System.out.println(player.showHand()); + System.out.println(" Winnings: " + winnings + "\n"); + player.addChips(winnings); + } + + private void removeZeroChipPlayers() { + ArrayList playersToRemove = new ArrayList<>(); + for (BlackJackGambler player : getPlayers()) + if (player.getChipCount() == 0 && !player.isPerson()) { + System.out.println(player.getName() + " ran out of chips, now leaving."); + playersToRemove.add(player); + } + getPlayers().removeAll(playersToRemove); + } + + + private void resetHands() { + for (BlackJackGambler player : getPlayers()) + player.clearHand(); + dealer.resetHand(); + } + + @Override + public void resetBets() { + for (BlackJackGambler player : getPlayers()) + playerWagers.put(player, 0); + } + +} diff --git a/src/main/java/io/zipcoder/casino/BlackJackGambler.java b/src/main/java/io/zipcoder/casino/BlackJackGambler.java new file mode 100644 index 00000000..70a3d0f6 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/BlackJackGambler.java @@ -0,0 +1,69 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; + +public class BlackJackGambler extends CardPlayer { + + private Integer chipCount; + + public BlackJackGambler(Player player, Integer chipCount) { + super(player); + this.chipCount = chipCount; + } + + public Integer getChipCount() { + return chipCount; + } + + public void addChips(Integer amount) { + chipCount += amount; + } + + public Integer tradeInChips() { + Integer chips = chipCount; + chipCount = 0; + return chips; + } + + public Integer placeBet(Integer amount) { + if (wagerAvailable(amount)) + chipCount -= amount; + else { + amount = chipCount; + chipCount = 0; + } + + return amount; + } + + private boolean wagerAvailable(Integer bet) { + if (bet > chipCount) + return false; + else return true; + } + + public int getHandTotal() { + int total = 0; + String card; + int aces = 0; + for (Card c : getHand()) { + card = c.getRank().toString(); + if ("JACK".equals(card) || "QUEEN".equals(card) || "KING".equals(card)) + total += 10; + else if ("ACE".equals(card.toString())) { + total += 11; + aces++; + } else total += c.getValue(); + } + while (total > 21 && aces != 0) { + total -= 10; + aces--; + } + return total; + } + + public String showHand() { + return getName() + ": " + handToString() + " Total: " + getHandTotal(); + } + +} diff --git a/src/main/java/io/zipcoder/casino/Card.java b/src/main/java/io/zipcoder/casino/Card.java new file mode 100644 index 00000000..67cd1ccd --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Card.java @@ -0,0 +1,47 @@ +package io.zipcoder.casino; + + +public class Card { + + enum Rank { + + JOKER, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE; + + public int getValue() { + return ordinal() + 1; + } + } + + enum Suit { + CLUBS((char)'\u2663'), SPADES((char)'\u2660'), HEARTS((char)'\u2665'), DIAMONDS((char)'\u2666'); + + private char val; + Suit(char val){ + this.val=val; + } + } + + private Rank rank; + private Suit suit; + + public Card(Rank v, Suit s) { + this.rank = v; + this.suit = s; + } + + public int getValue() { + return rank.getValue(); + } + + public Rank getRank() { + return rank; + } + + public Suit getSuit() { + return suit; + } + + public String toString() { + return rank + " of " + suit.val; + } +} diff --git a/src/main/java/io/zipcoder/casino/CardGames.java b/src/main/java/io/zipcoder/casino/CardGames.java new file mode 100644 index 00000000..e0269b59 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/CardGames.java @@ -0,0 +1,57 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; + +public abstract class CardGames implements Games { + private ArrayList players = new ArrayList(); + private Deck deck; + + public abstract void addAIPlayers(int playersToAdd); + public abstract void gameSetUp(T user); + + public void dealCards(int cardsToDeal) { + while (cardsToDeal > 0) { + + for (T player : players) { + Card card = deck.getCard(); + player.addCardToHand(card); + } + cardsToDeal--; + } + } + + public void addPlayer(T player) { + players.add(player); + } + + public void loadDecks(int numberOfDecks) { + deck = new Deck(numberOfDecks); + deck.shuffleDeck(); + } + + public int getRemainingDeckCards() { + return deck.getRemainingCards(); + } + + public T getPlayer(int index) { + try{ + return players.get(index);} + catch (IndexOutOfBoundsException e){ + System.out.println("Invalid Player Choice"); + } + return null; + } + + public ArrayList getPlayers() { + return players; + } + + public Card getDeckCard() { + return deck.getCard(); + } + + public void removePlayer(T player) { + players.remove(player); + } + +} diff --git a/src/main/java/io/zipcoder/casino/CardPlayer.java b/src/main/java/io/zipcoder/casino/CardPlayer.java new file mode 100644 index 00000000..191893ef --- /dev/null +++ b/src/main/java/io/zipcoder/casino/CardPlayer.java @@ -0,0 +1,34 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; + +public abstract class CardPlayer extends Player { + private Hand hand; + + + public CardPlayer(Player player) { + super(player.getName(), player.getCash(), player.isPerson()); + hand = new Hand(); + } + + public ArrayList getHand() { + return hand.getHand(); + } + + public void clearHand() { + hand = new Hand(); + } + + public void addCardToHand(Card card) { + hand.addCard(card); + } + + public Card removeCard(Card.Rank rank) { + return hand.removeCard(rank); + } + + public String handToString(){ + return hand.toString(); + } +} + diff --git a/src/main/java/io/zipcoder/casino/Casino.java b/src/main/java/io/zipcoder/casino/Casino.java index 74dfdd8c..92cb2f18 100644 --- a/src/main/java/io/zipcoder/casino/Casino.java +++ b/src/main/java/io/zipcoder/casino/Casino.java @@ -2,4 +2,106 @@ public class Casino { + + private enum Games {BLACKJACK, CRAPS, GOFISH, EXIT} + + private String playerName; + private Player player; + private CasinoCage casinoCage = new CasinoCage(); + + public void start() { + + playerName = Console.getStringInput("Please enter your name"); + player = new Player(playerName, 10000, true); + String userInput = ""; + do { + for (Games game : Games.values()) + System.out.print(" {" + game + "} "); + try { + userInput = Console.getStringInput("\nEnter the name of the game you would like to play: "); + Games gameSelection = Games.valueOf(userInput); + gameSelection(gameSelection); + } catch (IllegalArgumentException e) { + System.out.println("Invalid Choice"); + } + } while (!"Exit".equalsIgnoreCase(userInput)); + + + } + + private void gameSelection(Games userInput) { + + switch (userInput) { + case CRAPS: + playCraps(); + break; + case BLACKJACK: + playBlackJack(); + break; + case GOFISH: + playGoFish(); + break; + case EXIT: + System.exit(0); + break; + + } + } + + private void playCraps() { + Craps craps = new Craps(); + CrapsPlayer gambler; + + Integer chipReq = Console.getIntegerInput("How many chips would you like to purchase? ($" + player.getCash() + " avail.)"); + chipReq = player.withdrawalCash(chipReq); + if (chipReq > 0) { + Integer chips = casinoCage.payoutChips(chipReq); + gambler = new CrapsPlayer(player, chips); + craps.play(gambler); + chips=gambler.tradeInChips(); + Integer winnings=casinoCage.payoutCash(chips); + player.addCash(winnings); + } else System.out.println("Sorry invalid amount"); + + } + + private void playBlackJack() { + BlackJack blackJack = new BlackJack(); + BlackJackGambler gambler; + Integer chipReq = Console.getIntegerInput("How many chips would you like to purchase? ($" + player.getCash() + " avail.)"); + chipReq = player.withdrawalCash(chipReq); + if (chipReq > 0) { + Integer chips = casinoCage.payoutChips(chipReq); + gambler = new BlackJackGambler(player, chips); + blackJack.play(gambler); + chips=gambler.tradeInChips(); + Integer winnings=casinoCage.payoutCash(chips); + player.addCash(winnings); + } else System.out.println("Sorry invalid amount"); + + + } + + private void playGoFish() { + GoFish goFish = new GoFish(); + GoFishPlayer goFishPlayer = new GoFishPlayer(player); + goFish.play(goFishPlayer); + } + + private class CasinoCage { + Integer bankRoll = 100000000; + + + public Integer payoutChips(Integer chipReq) { + if (chipReq < bankRoll) { + bankRoll += chipReq; + } + return chipReq; + } + + public Integer payoutCash(Integer chipCount) { + bankRoll-=chipCount; + return chipCount; + } + } } diff --git a/src/main/java/io/zipcoder/casino/CompPlay.java b/src/main/java/io/zipcoder/casino/CompPlay.java new file mode 100644 index 00000000..7d720fe1 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/CompPlay.java @@ -0,0 +1,99 @@ +package io.zipcoder.casino; + +import java.util.*; + +import io.zipcoder.casino.Card.*; + +public class CompPlay { + + + private static Random rand = new Random(); + private static Map> playerCards = new HashMap<>(); + + + public static Integer makeBet(BlackJackGambler player) { + return player.placeBet(250); + } + + public static String hitOrStay(BlackJackGambler player) { + if (player.getClass().getSimpleName().equals("Dealer")) + return dealerHitOrStay(player); + else return basicHitOrStay(player); + } + + private static String dealerHitOrStay(BlackJackGambler player) { + if (player.getHandTotal() >= 17) + return "Stay"; + else return "Hit"; + } + + private static String basicHitOrStay(BlackJackGambler player) { + if (player.getHandTotal() < 12) { + return "Hit"; + } + if (player.getHandTotal() >= 18) + return "Stay"; + else { + int rand = new Random().nextInt(10) + 1; + if (rand < 4) + return "Hit"; + else return "Stay"; + } + } + + public static String getPlayerCards() { + String cards = ""; + for (GoFishPlayer p : playerCards.keySet()) { + cards += playerCards.get(p) + "\n"; + } + return cards; + } + + public static void setUpPlayerCards(GoFishPlayer player) { + Set card = new HashSet(); + playerCards.put(player, card); + } + + public static void clearPlayerCards() { + playerCards.clear(); + } + + public static void addRankToPlayer(GoFishPlayer player, Rank cardRank) { + playerCards.get(player).add(cardRank); + } + + + public static void removeRankFromPlayer(GoFishPlayer player, Rank cardRank) { + playerCards.get(player).remove(cardRank); + } + + public static Rank chooseRank(GoFishPlayer player) { + Rank cardRank=null; + for (Card card : player.getHand()) { + for (GoFishPlayer otherPlayer : playerCards.keySet()) { + if (playerCards.get(otherPlayer).contains(card.getRank())&&!player.equals(otherPlayer)) { + cardRank = card.getRank(); + return cardRank; + } + } + } + cardRank = player.getHand().get(player.getHand().size() - 1).getRank(); + return cardRank; + } + + public static GoFishPlayer choosePlayer(GoFishPlayer player, Rank cardRank) { + for (GoFishPlayer p : playerCards.keySet()) { + if (playerCards.get(p).contains(cardRank)&&!player.equals(p)) { + return p; + } + } + GoFishPlayer[] arr = playerCards.keySet().stream().toArray(GoFishPlayer[]::new); + GoFishPlayer otherPlayer = null; + do { + otherPlayer = arr[rand.nextInt(arr.length)]; + } + while (otherPlayer.equals(player)||otherPlayer.getHand().size()==0); + return otherPlayer; + } + +} diff --git a/src/main/java/io/zipcoder/casino/Console.java b/src/main/java/io/zipcoder/casino/Console.java new file mode 100644 index 00000000..37a64afb --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Console.java @@ -0,0 +1,38 @@ +package io.zipcoder.casino; + +import java.util.Scanner; + +public class Console { + + public static String getStringInput(String prompt) { + Scanner in = new Scanner(System.in); + System.out.println(prompt); + String userInput = in.nextLine(); + return userInput.toUpperCase(); + } + + + public static Integer getIntegerInput(String prompt) { + do { + try { + String userInput = getStringInput(prompt); + Integer intUserInput = Integer.parseInt(userInput); + return intUserInput; + } catch (IllegalArgumentException iae) { + continue; + } + } while (true); + } + + public static Card.Rank getRankInput(String prompt) { + do { + try { + String userInput = getStringInput(prompt); + Card.Rank rank = Card.Rank.valueOf(userInput); + return rank; + } catch (IllegalArgumentException e) { + System.out.println("Invalid Card Choice"); + } + } while (true); + } +} 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..cf029e95 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Craps.java @@ -0,0 +1,212 @@ +package io.zipcoder.casino; + +public class Craps implements Gamble, Games { + + private String playAgain = "yes"; + + int pot; + + Die d1; + Die d2; + + int bet4or10 = 0; + int bet5or9 = 0; + int bet6or8 = 0; + + @Override + public void play(CrapsPlayer player) { + + do { + d1 = new Die(); + d2 = new Die(); + int pointValue; + int rollValue; + + + printCurrentChips(player); + pot = takeBet(player); + + rollDice(); + rollValue = d1.getValue() + d2.getValue(); + printDiceValue(d1, d2); + + if (rollValue == 7 || rollValue == 11) { + // Win + int winnings = pot * 2; + printWinOrLose("win", winnings); + payOut(player, pot, 2); + playAgain = Console.getStringInput("Play Again?"); + + } else if (rollValue == 2 || rollValue == 3 || rollValue == 12) { + // Lose + printWinOrLose("lose", 0); + playAgain = Console.getStringInput("Play Again?"); + continue; + } else { + pointValue = rollValue; + do { + + printCurrentChips(player); + // prompt for bets on next roll group (4 & 10, 5 & 9, or 6 & 8) + placeSideBet(player); + + rollDice(); + rollValue = d1.getValue() + d2.getValue(); + printDiceValue(d1, d2); + + int winnings = handlePointerRoll(pointValue, rollValue); + + payOut(player, winnings, 2); + + } + while (rollValue != pointValue && rollValue != 7); + + resetBets(); + playAgain = Console.getStringInput("Play Again?"); + } + + + + } while ("yes".equalsIgnoreCase(playAgain)); + } + + @Override + public Integer takeBet(CrapsPlayer player) { + Integer bet; + bet = Console.getIntegerInput("Place your bet"); + player.placeBet(bet); + + return bet; + } + + @Override + public void resetBets() { + pot = 0; + clearSideBets(); + } + + private void rollDice() { + d1.rollDie(); + d2.rollDie(); + } + + private int handlePointerRoll(int pointValue, int rollValue) { + + int retValue = 0; + + switch (rollValue) { + + case 4: + retValue = determineRollPayout(rollValue, pointValue, 10, bet4or10); + break; + case 5: + retValue = determineRollPayout(rollValue, pointValue, 9, bet5or9); + break; + case 6: + retValue = determineRollPayout(rollValue, pointValue, 8, bet6or8); + break; + case 7: + // Lose + printWinOrLose("lose", 0); + retValue = 0; + clearSideBets(); + break; + case 8: + retValue = determineRollPayout(rollValue, pointValue, 6, bet6or8); + break; + case 9: + retValue = determineRollPayout(rollValue, pointValue, 5, bet5or9); + break; + case 10: + retValue = determineRollPayout(rollValue, pointValue, 4, bet4or10); + break; + default: + break; + } + return retValue; + } + + private int determineRollPayout(int rollValue, int pointValue, int sideValue, int groupBets) { + int retValue; + if (pointValue == rollValue) { + int total = pot + bet4or10; + printWinOrLose("win", total); + retValue = total; + pot = 0; + clearSideBets(); + } else if (sideValue == rollValue && groupBets < 0) { + printWinOrLose("win", groupBets); + retValue = groupBets; + clearSideBets(); + } else { + printWinOrLose("lose", 0); + retValue = 0; + clearSideBets(); + } + return retValue; + } + + private void printDiceValue(Die d1, Die d2) { + int total = d1.getValue() + d2.getValue(); + System.out.println("You rolled a :" + d1.getValue() + " and a " + d2.getValue()); + System.out.println("You have a combined value of " + total); + } + + private void printCurrentChips(CrapsPlayer player) { + System.out.println("\nYou currently have " + player.getChipCount() + " chips.\n"); + } + + private void printWinOrLose(String input, int value) { + if("win".equals(input)) { + System.out.println(""); + System.out.println("Congratulations! You win!"); + System.out.println("You won: " + value + " chips!"); + System.out.println(""); + } + else if ("lose".equals(input)) { + System.out.println("Sorry, a Winrar\u00A9 is not you."); + System.out.println("Better luck next time."); + } + else { + System.out.println("What are you trying to pull here? Lrn2spelling my boy."); + } + } + + private int placeSideBet(CrapsPlayer player) { + boolean isValidInput = false; + int retValue = -1; + + while (isValidInput == false) { + String group = Console.getStringInput("Which group would you like to bet on?\n" + + "[4 & 10]\t[5 & 9]\t[6 & 8]\tNONE"); + if (group.equals("4 & 10") || group.equals("4&10") || group.equals("4") || group.equals("10")) { + bet4or10 = takeBet(player); + isValidInput = true; + } else if (group.equals("5 & 9") || group.equals("5&9") || group.equals("5") || group.equals("9")) { + bet5or9 = takeBet(player); + isValidInput = true; + } else if (group.equals("6 & 8") || group.equals("6&8") || group.equals("6") || group.equals("8")) { + bet6or8 = takeBet(player); + isValidInput = true; + } else if (group.equalsIgnoreCase("NONE")) { + retValue = 0; + isValidInput = true; + } else { + System.out.println("Invalid input. Try again"); + } + } + return retValue; + + } + + private void clearSideBets() { + bet4or10 = 0; + bet5or9 = 0; + bet6or8 = 0; + } + + public void payOut(CrapsPlayer player, int value, int multiplier) { + player.addChips(value * multiplier); + } + +} \ No newline at end of file diff --git a/src/main/java/io/zipcoder/casino/CrapsPlayer.java b/src/main/java/io/zipcoder/casino/CrapsPlayer.java new file mode 100644 index 00000000..e9d76f1d --- /dev/null +++ b/src/main/java/io/zipcoder/casino/CrapsPlayer.java @@ -0,0 +1,42 @@ +package io.zipcoder.casino; + +public class CrapsPlayer extends Player { + + private Player player; + private Integer chipCount = 0; + + public CrapsPlayer(Player player, Integer chipCount) { + super(player.getName(), player.getCash(), player.isPerson()); + this.player = player; + this.chipCount = chipCount; + } + + public Integer getChipCount() { + return chipCount; + } + + public Integer tradeInChips() { + Integer chips = chipCount; + chipCount = 0; + return chips; + } + + public void addChips(Integer amount) { + chipCount += amount; + } + + public Integer placeBet(Integer amount) { + if (wagerAvailable(amount)) + chipCount -= amount; + else amount = 0; + + return amount; + } + + private boolean wagerAvailable(Integer bet) { + if (bet > chipCount) + return false; + else return true; + } + +} diff --git a/src/main/java/io/zipcoder/casino/Dealer.java b/src/main/java/io/zipcoder/casino/Dealer.java new file mode 100644 index 00000000..056ee6ff --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Dealer.java @@ -0,0 +1,18 @@ +package io.zipcoder.casino; + +public class Dealer extends BlackJackGambler{ + + + public Dealer() { + super(new Player("Dealer",0, false),10); + } + + public String showOneCard() { + return "Dealer Top Card: " + getHand().get(0); + } + + public void resetHand() { + clearHand(); + } + +} diff --git a/src/main/java/io/zipcoder/casino/Deck.java b/src/main/java/io/zipcoder/casino/Deck.java new file mode 100644 index 00000000..a54d12ba --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Deck.java @@ -0,0 +1,32 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; +import java.util.Collections; + +public class Deck { + private ArrayList deck; + private Card.Rank[] values = Card.Rank.values(); + private Card.Suit[] suites = Card.Suit.values(); + + public Deck(int numberOfDecks) { + deck = new ArrayList(); + while (numberOfDecks > 0) { + for (int i = 1; i < 14; i++) + for (int j = 0; j < 4; j++) + deck.add(new Card(values[i], suites[j])); + numberOfDecks--; + } + } + + public Card getCard() { + return deck.remove(0); + } + + public int getRemainingCards() { + return deck.size(); + } + + public void shuffleDeck() { + Collections.shuffle(deck); + } +} diff --git a/src/main/java/io/zipcoder/casino/Die.java b/src/main/java/io/zipcoder/casino/Die.java new file mode 100644 index 00000000..74925044 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Die.java @@ -0,0 +1,18 @@ +package io.zipcoder.casino; + +public class Die { + + int value; + + public Die() { + } + + public void rollDie() { + this.value = (int) Math.ceil(Math.random() * 6); + } + + public int getValue() { + return value; + } + +} diff --git a/src/main/java/io/zipcoder/casino/Gamble.java b/src/main/java/io/zipcoder/casino/Gamble.java new file mode 100644 index 00000000..27d93932 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Gamble.java @@ -0,0 +1,9 @@ +package io.zipcoder.casino; + + +public interface Gamble { + public Integer takeBet(T player); + public void resetBets(); + + +} diff --git a/src/main/java/io/zipcoder/casino/Games.java b/src/main/java/io/zipcoder/casino/Games.java new file mode 100644 index 00000000..bf4fd6d2 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Games.java @@ -0,0 +1,5 @@ +package io.zipcoder.casino; + +public interface Games { + public void play(T user); +} 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..79641923 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/GoFish.java @@ -0,0 +1,130 @@ +package io.zipcoder.casino; + +import io.zipcoder.casino.Card.*; + +import java.util.ArrayList; + +public class GoFish extends CardGames { + + public void play(GoFishPlayer user) { + + gameSetUp(user); + + while (booksRemaining() > 0) { + System.out.println("Books remaining: " + booksRemaining()); + booksFound(); + System.out.println("Your Hand: " + user.handToString()); + Rank cardRank = null; + GoFishPlayer otherPlayer = null; + for (GoFishPlayer player : getPlayers()) { + if (player.getHand().size() == 0) + continue; + cardRank = playerCardChoice(player); + otherPlayer = chooseOtherPlayer(player, cardRank); + System.out.println(player.getName() + " asks " + otherPlayer.getName() + " for any " + cardRank); + if (goFish(player, otherPlayer, cardRank) && getRemainingDeckCards() > 0) { + Card card = getDeckCard(); + player.addCardToHand(card); + } + player.removeBooks(); + } + } + + findWinner(); + CompPlay.clearPlayerCards(); + Console.getStringInput("Game Over, Press any key to return to the lobby."); + } + + @Override + public void gameSetUp(GoFishPlayer user) { + addPlayer(user); + loadDecks(1); + + int numberOfPlayers = Console.getIntegerInput("How many other players would you like to play with? "); + addAIPlayers(numberOfPlayers); + dealCards(5); + for (GoFishPlayer player : getPlayers()) + CompPlay.setUpPlayerCards(player); + } + @Override + public void addAIPlayers(int playersToAdd) { + if(playersToAdd==0) + playersToAdd=1; + for (int i = 1; i <= playersToAdd; i++) + addPlayer(new GoFishPlayer(new Player("Computer" + i, 0, false))); + } + + private boolean goFish(GoFishPlayer player, GoFishPlayer otherPlayer, Rank cardRank) { + CompPlay.addRankToPlayer(player, cardRank); + if (otherPlayer.checkForCard(cardRank)) { + + ArrayList cardsTaken = otherPlayer.giveCards(cardRank); + CompPlay.removeRankFromPlayer(otherPlayer, cardRank); + for (Card card : cardsTaken) + player.addCardToHand(card); + System.out.println("Found " + cardsTaken.size() + " " + cardRank); + + + Console.getStringInput("press enter to continue"); + return false; + } else { + System.out.println("no matches found"); + Console.getStringInput("press enter to continue"); + return true; + } + } + + private GoFishPlayer chooseOtherPlayer(GoFishPlayer player, Rank cardRank) { + Integer playerIndex; + GoFishPlayer chosenPlayer; + if (player.isPerson()) { + printPlayers(); + do { + playerIndex = Console.getIntegerInput("\nWho has your card? "); + chosenPlayer = getPlayer(playerIndex); + } while (chosenPlayer == null); + } else chosenPlayer = CompPlay.choosePlayer(player, cardRank); + return chosenPlayer; + } + + + private Rank playerCardChoice(GoFishPlayer player) { + Rank cardRank; + if (player.isPerson()) { + do { + cardRank = Console.getRankInput("What card are you looking for?"); + } while (!player.checkForCard(cardRank)); + } else cardRank = CompPlay.chooseRank(player); + return cardRank; + } + + private void booksFound() { + for (GoFishPlayer player : getPlayers()) + System.out.println(player.getName() + " Completed Books: " + player.completedBooksToString()); + } + + private int booksRemaining() { + int booksMade = 0; + for (GoFishPlayer player : getPlayers()) + booksMade += player.getBookCount(); + return 13 - booksMade; + } + + private void printPlayers() { + for (int i = 1; i < getPlayers().size(); i++) + System.out.print(" " + i + ") " + getPlayer(i).getName()); + } + + private void findWinner() { + GoFishPlayer winner = null; + int topScore = 0; + for (GoFishPlayer player : getPlayers()) { + if (player.getPointTotal() > topScore) { + winner = player; + topScore = player.getPointTotal(); + } + System.out.println(player.getName() + ": " + player.getPointTotal() + " points"); + } + System.out.println("Winner: " + winner.getName() + " with " + topScore + " points!"); + } +} 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..caeb304e --- /dev/null +++ b/src/main/java/io/zipcoder/casino/GoFishPlayer.java @@ -0,0 +1,86 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import io.zipcoder.casino.Card.*; + + +public class GoFishPlayer extends CardPlayer { + + private ArrayList completedBooks = new ArrayList<>(); + private int books = 0; + private Map cardMap; + + public GoFishPlayer(Player player) { + super(player); + cardMap = new HashMap(); + } + + private void mapNewCard(Card card) { + Integer val = cardMap.getOrDefault(card.getRank(), 0); + cardMap.put(card.getRank(), val + 1); + } + + private void mapCardRemoved(Rank rank) { + Integer val = cardMap.get(rank); + cardMap.put(rank, val - 1); + } + + public boolean checkForCard(Rank rank) { + if (cardMap.getOrDefault(rank, 0) != 0) + return true; + return false; + } + + public ArrayList giveCards(Rank rank) { + + ArrayList cards = new ArrayList<>(); + while (checkForCard(rank)) { + cards.add(removeCard(rank)); + mapCardRemoved(rank); + } + return cards; + } + + public void removeBooks() { + for (Rank rank : cardMap.keySet()) + if (cardMap.get(rank) == 4) { + CompPlay.removeRankFromPlayer(this, rank); + addCompletedBooks(rank); + giveCards(rank); + books++; + System.out.println(getName() + " Completed Book: " + rank); + } + } + + public int getBookCount() { + return books; + } + + private void addCompletedBooks(Rank rank) { + completedBooks.add(rank); + } + + public String completedBooksToString() { + String complete = "|"; + for (Rank rank : completedBooks) + complete += " {" + rank + "} |"; + return complete; + } + + public int getPointTotal(){ + int points=0; + for (Rank rank : completedBooks) + points+=rank.getValue(); + return points; + } + + @Override + public void addCardToHand(Card card) { + mapNewCard(card); + super.addCardToHand(card); + } + +} diff --git a/src/main/java/io/zipcoder/casino/Hand.java b/src/main/java/io/zipcoder/casino/Hand.java new file mode 100644 index 00000000..822ff961 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Hand.java @@ -0,0 +1,48 @@ +package io.zipcoder.casino; + +import java.util.ArrayList; + +public class Hand { + private ArrayList hand; + + public Hand() { + hand = new ArrayList(); + } + + public void addCard(Card card) { + hand.add(card); + } + + public void addCard(ArrayList cards) { + hand.addAll(cards); + } + + public void clearHand() { + hand.clear(); + } + + public Card removeCard(Card.Rank rank) { + Card cardToRemove = null; + for (Card card : hand) + if (card.getRank().equals(rank)) { + cardToRemove = card; + break; + } + hand.remove(cardToRemove); + return cardToRemove; + } + + public String toString() { + String cardsInHand = "Hand is Empty."; + if (hand.size() > 0) { + cardsInHand = " {"+hand.get(0).toString()+"}"; + for (int i = 1; i < hand.size(); i++) + cardsInHand += " {" + hand.get(i).toString()+"}"; + } + return cardsInHand; + } + + public ArrayList getHand() { + return hand; + } +} 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..fdb248a0 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/Player.java @@ -0,0 +1,38 @@ +package io.zipcoder.casino; + +public class Player { + private String name; + private Hand hand; + private Integer cash; + private boolean isPerson; + + public Player(String name, Integer cash, boolean isPerson) { + this.name = name; + this.isPerson = isPerson; + this.cash = cash; + } + + public String getName() { + return name; + } + + public boolean isPerson() { + return isPerson; + } + + public Integer getCash(){ + return cash; + } + public void addCash(Integer amount){ + cash+=amount; + } + + public Integer withdrawalCash(Integer amount) { + if (amount > cash) + return 0; + else + cash-=amount; + return amount; + } + +} 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..9686d914 --- /dev/null +++ b/src/main/java/io/zipcoder/casino/main.java @@ -0,0 +1,11 @@ +package io.zipcoder.casino; + +public class main { + + + + public static void main(String[] args) { + Casino casino=new Casino(); + casino.start(); + } +} diff --git a/src/test/java/io/zipcoder/casino/BlackJackGamblerTest.java b/src/test/java/io/zipcoder/casino/BlackJackGamblerTest.java new file mode 100644 index 00000000..8c44ea53 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/BlackJackGamblerTest.java @@ -0,0 +1,87 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class BlackJackGamblerTest { + + Player person; + BlackJackGambler player; + + @Before + public void setupTest() { + person = new Player("Sam", 1000, false); + player = new BlackJackGambler(person, 1000); + + Card fiveHeart = new Card(Card.Rank.FIVE, Card.Suit.HEARTS); + Card QueenHeart = new Card(Card.Rank.QUEEN, Card.Suit.HEARTS); + + player.addCardToHand(fiveHeart); + player.addCardToHand(QueenHeart); + + } + + + @Test + public void getChipCount() throws Exception { + Integer expected = 1000; + Integer actual = player.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void addChips() throws Exception { + Integer expected = player.getChipCount() + 1000; + player.addChips(1000); + Integer actual = player.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void placeBet() throws Exception { + Integer expectedBalance = player.getChipCount() - 500; + Integer expected = 500; + Integer actual = player.placeBet(500); + Integer actualBalance = player.getChipCount(); + + Assert.assertEquals(expected, actual); + Assert.assertEquals(expectedBalance, actualBalance); + } + + @Test + public void placeBet2() throws Exception { + + Integer expectedBalance = player.getChipCount() - player.getChipCount(); + Integer expected = 1000; + Integer actual = player.placeBet(1050); + Integer actualBalance = player.getChipCount(); + Assert.assertEquals(expected, actual); + Assert.assertEquals(expectedBalance, actualBalance); + } + + @Test + public void getHandTotal() throws Exception { + Integer expected = 15; + Integer actual = player.getHandTotal(); + } + + @Test + public void showHand() throws Exception { + String expected = "Sam: {FIVE of HEARTS} {QUEEN of HEARTS} Total: 15"; + String actual = player.showHand(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void tradeInChips() { + Integer expected = 1000; + Integer actual = player.tradeInChips(); + Assert.assertEquals(expected, actual); + } +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/BlackJackTest.java b/src/test/java/io/zipcoder/casino/BlackJackTest.java new file mode 100644 index 00000000..2ab5b48c --- /dev/null +++ b/src/test/java/io/zipcoder/casino/BlackJackTest.java @@ -0,0 +1,221 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.HashMap; + +public class BlackJackTest { + + BlackJackGambler p1; + BlackJackGambler p2; + BlackJackGambler p3; + BlackJack blackJack; + Dealer dealer; + ArrayList players; + + @Before + public void setup() { + blackJack = new BlackJack(); + players = new ArrayList(); + + p1 = new BlackJackGambler(new Player("Samwise", 10000, false),1000 ); + p2 = new BlackJackGambler(new Player("Frodo", 10000, false),1000 ); + p3 = new BlackJackGambler(new Player("Smeagol", 10, false),1000 ); + dealer= new Dealer(); + blackJack.addPlayer(p1); + blackJack.addPlayer(p2); + blackJack.addPlayer(p3); + + blackJack.gameSetUp(p2); + } + + @Test + public void isBustTest() throws Exception { + p1.addCardToHand(new Card(Card.Rank.ACE, Card.Suit.SPADES)); + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.ACE, Card.Suit.DIAMONDS)); + + System.out.println(p1.getHandTotal()); + boolean expected = false; +// boolean actual = blackJack.isBust(p1); + +// Assert.assertEquals(expected, actual); + } + + @Test + public void isBustTest2() throws Exception { +// p1.addCardToHand(new Card(Card.Rank.ACE, Card.Suit.SPADE)); + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.KING, Card.Suit.SPADES)); + + System.out.println(p1.getHandTotal()); + boolean expected = true; +// boolean actual = blackJack.isBust(p1); + +// Assert.assertEquals(expected, actual); + } + + @Test + public void resetHandsTest() throws Exception { + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + p2.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p2.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + p3.addCardToHand(new Card(Card.Rank.KING, Card.Suit.SPADES)); + p3.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + + HashMap expected = new HashMap(); + HashMap actual = new HashMap(); + + for (Player p : players) { + expected.put(p, 0); + } + + +// blackJack.resetHands(); + + for (BlackJackGambler p : players) { + actual.put(p, p.getHand().size()); + } + + Assert.assertEquals(expected, actual); + } + + @Test + public void payoutWinningsTest1() throws Exception { + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + blackJack.gameSetUp(p1); +// blackJack.playerBet(p1, 250); + + Integer expected = p1.getChipCount()+500; +// blackJack.payoutWinnings(p1,2); + Integer actual = p1.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void payoutWinningsTest2() throws Exception { + p1.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.TEN, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.TEN, Card.Suit.DIAMONDS)); + blackJack.gameSetUp(p1); +// blackJack.playerBet(p1, 250); + + Integer expected = p1.getChipCount(); +// blackJack.payoutWinnings(p1,0); + Integer actual = p1.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void payoutWinningsTest3() throws Exception { + p1.addCardToHand(new Card(Card.Rank.ACE, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + blackJack.gameSetUp(p1); +// blackJack.playerBet(p1, 250); + + Integer expected = p1.getChipCount()+625; +// blackJack.payoutWinnings(p1,2); + Integer actual = p1.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void playerBetTest() throws Exception { + + int bet = 5; + +// blackJack.playerBet(p3, bet); + + int expected = p3.getChipCount() + bet; + +// blackJack.payoutWinnings(p3, 1); + + int actual = p3.getChipCount(); + + Assert.assertEquals(expected, actual); + + } + + @Test + public void takeBetTest() throws Exception { + Integer expected = 250; + Integer chipsBefore = p1.getChipCount()-250; + + Integer actual = blackJack.takeBet(p1); + Integer chipsAfter = p1.getChipCount(); + + Assert.assertEquals(expected, actual); + Assert.assertEquals(chipsBefore, chipsAfter); + } + + @Test + public void checkForBlackJackTest() throws Exception { + p1.addCardToHand(new Card(Card.Rank.ACE, Card.Suit.SPADES)); + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + + boolean expected=true; +// boolean actual =blackJack.checkForBlackJack(p1); + +// Assert.assertEquals(expected,actual); + } + + @Test + public void checkForBlackJackTest2() throws Exception { + p1.addCardToHand(new Card(Card.Rank.SEVEN, Card.Suit.SPADES)); + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + p1.addCardToHand(new Card(Card.Rank.FOUR, Card.Suit.DIAMONDS)); + + boolean expected=false; +// boolean actual =blackJack.checkForBlackJack(p1); +// +// Assert.assertEquals(expected,actual); + } + + @Test + public void addAIPlayers() throws Exception { + int expected=blackJack.getPlayers().size()+3; + blackJack.addAIPlayers(3); + int actual = blackJack.getPlayers().size(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void removeZeroChipPlayers() throws Exception { + BlackJackGambler p4 = new BlackJackGambler(new Player("Frodo", 10000, false),0 ); + BlackJackGambler p5 = new BlackJackGambler(new Player("Smeagol", 10, false),0 ); + + blackJack.addPlayer(p4); + blackJack.addPlayer(p5); + + int expected=blackJack.getPlayers().size()-2; +// blackJack.removeZeroChipPlayers(); + int actual=blackJack.getPlayers().size(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void payoutMultiplierTest(){ + p1.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + Integer expected=2; +// Integer actual=blackJack.payoutMultiplier(p1); +// Assert.assertEquals(expected,actual); + } + + @Test + public void payoutMultiplierTest2(){ + Integer expected=1; +// Integer actual=blackJack.payoutMultiplier(dealer); +// Assert.assertEquals(expected,actual); + } +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/CardTest.java b/src/test/java/io/zipcoder/casino/CardTest.java new file mode 100644 index 00000000..fc607859 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/CardTest.java @@ -0,0 +1,37 @@ +package io.zipcoder.casino; +import org.junit.Assert; +import org.junit.Test; + +import static io.zipcoder.casino.Card.Rank.*; +import static io.zipcoder.casino.Card.Suit.*; + +public class CardTest { + + Card card1= new Card(EIGHT, HEARTS); + Card card2= new Card(EIGHT, DIAMONDS); + Card card3= new Card(EIGHT, SPADES); + Card card4= new Card(EIGHT, CLUBS); + + @Test + public void getValueTest() throws Exception { + int expected =8; + int actual= card1.getValue(); + Assert.assertEquals(expected,actual); + } + + @Test + public void getSuitTest() throws Exception { + Card.Suit expected =HEARTS; + Card.Suit actual=card1.getSuit(); + Assert.assertEquals(expected, actual); + } + + @Test + public void suitValTest(){ + System.out.println(card1); + System.out.println(card2); + System.out.println(card3); + System.out.println(card4); + } + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/CompPlayTest.java b/src/test/java/io/zipcoder/casino/CompPlayTest.java new file mode 100644 index 00000000..f1d339e5 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/CompPlayTest.java @@ -0,0 +1,154 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collections; + +public class CompPlayTest { + + GoFishPlayer p1; + GoFishPlayer p2; + GoFishPlayer p3; + BlackJackGambler p4; + Dealer dealer; + + @Before + public void Setup() { + + + p1 = new GoFishPlayer(new Player("joe", 100, false)); + p2 = new GoFishPlayer(new Player("james", 100, false)); + p3 = new GoFishPlayer(new Player("dave", 100, false)); + p4 = new BlackJackGambler(new Player("dave", 100, false),1000); + + dealer = new Dealer(); + + ArrayList players = new ArrayList<>(); + Collections.addAll(players, p1, p2, p3); + CompPlay.setUpPlayerCards(p1); + CompPlay.setUpPlayerCards(p2); + CompPlay.setUpPlayerCards(p3); + } + + @Test + public void basicHitOrStayTest() throws Exception { + p4.addCardToHand(new Card(Card.Rank.THREE, Card.Suit.HEARTS)); + p4.addCardToHand(new Card(Card.Rank.FIVE, Card.Suit.DIAMONDS)); + + String expected="Hit"; + String actual=CompPlay.hitOrStay(p4); + + Assert.assertEquals(expected,actual); + } + + @Test + public void basicHitOrStayTest2() throws Exception { + p4.addCardToHand(new Card(Card.Rank.TEN, Card.Suit.HEARTS)); + p4.addCardToHand(new Card(Card.Rank.NINE, Card.Suit.DIAMONDS)); + + String expected="Stay"; + String actual=CompPlay.hitOrStay(p4); + + Assert.assertEquals(expected,actual); + } + + @Test + public void dealerHitOrStayTest() throws Exception { + dealer.addCardToHand(new Card(Card.Rank.THREE, Card.Suit.HEARTS)); + dealer.addCardToHand(new Card(Card.Rank.SIX, Card.Suit.DIAMONDS)); + + String expected="Hit"; + String actual=CompPlay.hitOrStay(dealer); + + Assert.assertEquals(expected,actual); + } + + @Test + public void dealerHitOrStayTest2() throws Exception { + dealer.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.HEARTS)); + dealer.addCardToHand(new Card(Card.Rank.EIGHT, Card.Suit.DIAMONDS)); + + String expected="Stay"; + String actual=CompPlay.hitOrStay(dealer); + + Assert.assertEquals(expected,actual); + } + + @Test + public void makeBetTest() throws Exception { + Integer expected=250; + Integer actual =CompPlay.makeBet(p4); + Assert.assertEquals(expected,actual); + } + + + @Test + public void addRankToPlayer() throws Exception { + + String before = CompPlay.getPlayerCards(); + + CompPlay.addRankToPlayer(p1, Card.Rank.THREE); + CompPlay.addRankToPlayer(p1, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p2, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p3, Card.Rank.SIX); + CompPlay.addRankToPlayer(p3, Card.Rank.SEVEN); + + String after = CompPlay.getPlayerCards(); + + Assert.assertNotEquals(before, after); + } + + @Test + public void removeRankFromPlayer() throws Exception { + + + CompPlay.addRankToPlayer(p1, Card.Rank.THREE); + CompPlay.addRankToPlayer(p1, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p1, Card.Rank.TEN); + + String expected = "[THREE, FIVE]\n[]\n[]\n"; + + CompPlay.removeRankFromPlayer(p1, Card.Rank.TEN); + + String actual = CompPlay.getPlayerCards(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void chooseRank() throws Exception { + p1.addCardToHand(new Card(Card.Rank.FIVE, Card.Suit.HEARTS)); + p1.addCardToHand(new Card(Card.Rank.THREE, Card.Suit.HEARTS)); + CompPlay.addRankToPlayer(p1, Card.Rank.THREE); + CompPlay.addRankToPlayer(p1, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p2, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p3, Card.Rank.SIX); + CompPlay.addRankToPlayer(p3, Card.Rank.SEVEN); + + + Card.Rank expected = Card.Rank.FIVE; + + Card.Rank actual = CompPlay.chooseRank(p1); + + Assert.assertEquals(expected, actual); + } + + @Test + public void choosePlayer() throws Exception { + CompPlay.addRankToPlayer(p1, Card.Rank.THREE); + CompPlay.addRankToPlayer(p1, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p2, Card.Rank.FIVE); + CompPlay.addRankToPlayer(p3, Card.Rank.SIX); + CompPlay.addRankToPlayer(p3, Card.Rank.SEVEN); + + String expected = p2.getName(); + + String actual = CompPlay.choosePlayer(p1, Card.Rank.FIVE).getName(); + + Assert.assertEquals(expected, actual); + } + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/CrapsPlayerTest.java b/src/test/java/io/zipcoder/casino/CrapsPlayerTest.java new file mode 100644 index 00000000..f501ed75 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/CrapsPlayerTest.java @@ -0,0 +1,51 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class CrapsPlayerTest { + + CrapsPlayer player; + + @Before + public void setup() { + player = new CrapsPlayer(new Player("Tester", 100, true), 10); + } + + @Test + public void getChipCount() throws Exception { + int expected = 10; + int actual = player.getChipCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void tradeInChips() throws Exception { + int expected = 10; + int actual = player.tradeInChips(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void addChips() throws Exception { + + int plusValue = 10; + + int chipsBeforeAdd = player.getChipCount(); + player.addChips(plusValue); + int chipsAfterAdd = chipsBeforeAdd + plusValue; + + int expected = chipsAfterAdd - chipsBeforeAdd; + int actual = player.getChipCount(); + } + + @Test + public void placeBet() throws Exception { + } + +} \ No newline at end of file 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..9afee0c6 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/CrapsTest.java @@ -0,0 +1,32 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class CrapsTest { + + CrapsPlayer player; + Craps craps; + + @Before + public void setup() { + player = new CrapsPlayer(new Player("SumYunGai" , 9001, true), 100); + craps = new Craps(); + } + + @Test + public void payOut() throws Exception { + int chipsBefore = player.getChipCount(); + craps.payOut(player, 100, 2); + int chipsAfter = player.getChipCount(); + + int expectedChange = 200; + int actualChange = chipsAfter - chipsBefore; + + Assert.assertEquals(expectedChange, actualChange); + } + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/DealerTest.java b/src/test/java/io/zipcoder/casino/DealerTest.java new file mode 100644 index 00000000..ab2204ec --- /dev/null +++ b/src/test/java/io/zipcoder/casino/DealerTest.java @@ -0,0 +1,42 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class DealerTest { + Dealer dealer; + Deck deck; + + @Before + public void setup() { + deck = new Deck(1); + dealer = new Dealer(); + } + + @Test + public void showOneCardTest() throws Exception { + Card first = new Card(Card.Rank.JACK, Card.Suit.SPADES); + dealer.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + dealer.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + String expected = "Dealer: " + first.toString(); + String actual = dealer.showOneCard(); + Assert.assertNotEquals(expected, actual); + + } + + @Test + public void resetHandTest() throws Exception { + + dealer.addCardToHand(new Card(Card.Rank.JACK, Card.Suit.DIAMONDS)); + dealer.addCardToHand(new Card(Card.Rank.QUEEN, Card.Suit.DIAMONDS)); + int before = dealer.getHand().size(); + dealer.resetHand(); + int after = dealer.getHand().size(); + + Assert.assertNotEquals(before, after); + } + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/DeckTest.java b/src/test/java/io/zipcoder/casino/DeckTest.java new file mode 100644 index 00000000..c682600b --- /dev/null +++ b/src/test/java/io/zipcoder/casino/DeckTest.java @@ -0,0 +1,55 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Test; + +public class DeckTest { + Deck deck = new Deck(1); + + @Test + public void multiDeckTest() throws Exception { + deck=new Deck(2); + String expected=""; + while (deck.getRemainingCards() != 0) { + expected+=deck.getCard()+"\n"; + } + expected.concat(expected); + + String actual=""; + deck = new Deck(2); + while (deck.getRemainingCards() != 0) { + actual+=deck.getCard().toString()+"\n"; + } + + Assert.assertEquals(expected, actual); + } + + @Test + public void getCard() throws Exception { + Card expected = new Card(Card.Rank.TWO, Card.Suit.CLUBS); + Card actual = deck.getCard(); + + Assert.assertEquals(expected.toString(), actual.toString()); + } + + @Test + public void shuffleDeck() throws Exception { + + String newDeck=""; + deck = new Deck(1); + while (deck.getRemainingCards() != 0) { + newDeck+=deck.getCard()+"\n"; + } + + + String shuffledDeck=""; + deck = new Deck(1); + deck.shuffleDeck(); + while (deck.getRemainingCards() != 0) { + shuffledDeck+=deck.getCard().toString()+"\n"; + } + + Assert.assertNotEquals(newDeck, shuffledDeck); + } + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/DieTest.java b/src/test/java/io/zipcoder/casino/DieTest.java new file mode 100644 index 00000000..8ebcce65 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/DieTest.java @@ -0,0 +1,35 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class DieTest { + + Die d6; + + @Before + public void setup() { + d6 = new Die(); + } + + @Test + public void getValue() throws Exception { + int expected = 0; + int actual = d6.getValue(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void rollDie() throws Exception { + + d6.rollDie(); + double expected = 3d; + double actual = d6.getValue(); + + Assert.assertEquals(expected, actual, 3); + } +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/GoFishPlayerTest.java b/src/test/java/io/zipcoder/casino/GoFishPlayerTest.java new file mode 100644 index 00000000..c93a42dc --- /dev/null +++ b/src/test/java/io/zipcoder/casino/GoFishPlayerTest.java @@ -0,0 +1,117 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; + +public class GoFishPlayerTest { + + + + GoFishPlayer joe = new GoFishPlayer(new Player("Joe", 1000, false)); + GoFishPlayer player = new GoFishPlayer(joe); + + + Card threeHeart = new Card(Card.Rank.THREE, Card.Suit.HEARTS); + Card threeClub = new Card(Card.Rank.THREE, Card.Suit.CLUBS); + Card threeSpade = new Card(Card.Rank.THREE, Card.Suit.SPADES); + Card fiveHeart = new Card(Card.Rank.FIVE, Card.Suit.HEARTS); + Card QueenHeart = new Card(Card.Rank.QUEEN, Card.Suit.HEARTS); + + { + player.addCardToHand(threeHeart); + player.addCardToHand(threeClub); + player.addCardToHand(threeSpade); + player.addCardToHand(fiveHeart); + player.addCardToHand(QueenHeart); + CompPlay.setUpPlayerCards(player); + } + + @Test + public void giveCardsTest() throws Exception { + String expected = " " + threeHeart + " " + threeClub + " " + threeSpade; + String actual = ""; + + String remainingExpected = "" + fiveHeart + QueenHeart; + String remainingActual = ""; + + ArrayList cards = player.giveCards(Card.Rank.THREE); + + for (Card card : cards) + actual += " " + card; + + for (Card card : player.getHand()) + remainingActual += card.toString(); + + Assert.assertEquals(expected, actual); + Assert.assertEquals(remainingExpected, remainingActual); + + } + + + @Test + public void checkForCardTest1() throws Exception { + boolean expected =false; + + boolean actual=player.checkForCard(Card.Rank.KING); + Assert.assertEquals(expected,actual); + } + + @Test + public void checkForCardTest2() throws Exception { + boolean expected =true; + boolean actual=player.checkForCard(Card.Rank.QUEEN); + Assert.assertEquals(expected,actual); + } + + @Test + public void removeBooksTest() throws Exception { + Card threeDiamond = new Card(Card.Rank.THREE, Card.Suit.DIAMONDS); + player.addCardToHand(threeDiamond); + System.out.println(player.handToString()); + int expected=1; + player.removeBooks(); + int actual =player.getBookCount(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void getBookCountTest() throws Exception{ + Card threeDiamond = new Card(Card.Rank.THREE, Card.Suit.DIAMONDS); + player.addCardToHand(threeDiamond); + player.removeBooks(); + int expected=1; + int actual=player.getBookCount(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void completedBooksToStringTest() throws Exception { + Card threeDiamond = new Card(Card.Rank.THREE, Card.Suit.DIAMONDS); + String expected="| {THREE} |"; + player.addCardToHand(threeDiamond); + player.removeBooks(); + String actual =player.completedBooksToString(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void handToStringTest() throws Exception{ + System.out.println(player.handToString()); + } + + @Test + public void getPointTotalTest() throws Exception { + int expected=3; + Card threeDiamond = new Card(Card.Rank.THREE, Card.Suit.DIAMONDS); + player.addCardToHand(threeDiamond); + player.removeBooks(); + int actual=player.getPointTotal(); + + Assert.assertEquals(expected,actual); + } +} \ 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..acf63c7a --- /dev/null +++ b/src/test/java/io/zipcoder/casino/GoFishTest.java @@ -0,0 +1,29 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class GoFishTest { + GoFish goFish=new GoFish(); + GoFishPlayer joe=new GoFishPlayer(new Player("joe",10, false)); + + @Test + public void play() throws Exception { + goFish.play(joe); + } + + @Test + public void addAIPlayers() throws Exception { + String expected="Computer 1 Computer 2 "; + String actual=""; + goFish.addAIPlayers(2); + for (GoFishPlayer player:goFish.getPlayers()) + actual+=player.getName()+" "; + + Assert.assertEquals(expected, actual); + } + + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/HandTest.java b/src/test/java/io/zipcoder/casino/HandTest.java new file mode 100644 index 00000000..98d2f676 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/HandTest.java @@ -0,0 +1,94 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +public class HandTest { + Hand hand; + Card card; + Card card2; + + Card cardOther; + Card cardOther2; + Card cardOther3; + + @Before + public void setup() { + hand = new Hand(); + card = new Card(Card.Rank.FIVE, Card.Suit.HEARTS); + card2 = new Card(Card.Rank.THREE, Card.Suit.CLUBS); + + cardOther = new Card(Card.Rank.NINE, Card.Suit.SPADES); + cardOther2 = new Card(Card.Rank.TWO, Card.Suit.DIAMONDS); + cardOther3 = new Card(Card.Rank.QUEEN, Card.Suit.HEARTS); + } + + @Test + public void addCardTest() throws Exception { + String expected = "FIVE of HEART\nTHREE of CLUB"; + hand.addCard(card); + hand.addCard(card2); + String actual = hand.toString(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void addCard1Test() throws Exception { + ArrayList cards = new ArrayList(); + + String expected = "FIVE of HEART\nTHREE of CLUB\nNINE of SPADE\nTWO of DIAMOND\nQUEEN of HEART"; + + hand.addCard(card); + hand.addCard(card2); + + cards.add(cardOther); + cards.add(cardOther2); + cards.add(cardOther3); + + hand.addCard(cards); + + String actual = hand.toString(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void clearHandTest() throws Exception { + String expected = "Hand is Empty."; + + hand.addCard(card); + hand.addCard(card2); + + hand.clearHand(); + String actual = hand.toString(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void removeCardTest() throws Exception { + ArrayList cards = new ArrayList(); + + String expected = "FIVE of HEART\nTHREE of CLUB\nNINE of SPADE\nTWO of DIAMOND\nQUEEN of HEART"; + + hand.addCard(card); + hand.addCard(card2); + + hand.addCard(cardOther); + cards.add(cardOther2); + cards.add(cardOther3); + + hand.addCard(cards); + + String actual = hand.toString(); + + Assert.assertEquals(expected, actual); + + } + + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/casino/PlayerTest.java b/src/test/java/io/zipcoder/casino/PlayerTest.java new file mode 100644 index 00000000..b41b61c9 --- /dev/null +++ b/src/test/java/io/zipcoder/casino/PlayerTest.java @@ -0,0 +1,55 @@ +package io.zipcoder.casino; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class PlayerTest { + Player player=new Player("Jake", 1000,false ); + + @Test + public void getNameTest() throws Exception { + String expected="Jake"; + String actual=player.getName(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void isPersonTest() throws Exception { + boolean expected=false; + boolean actual=player.isPerson(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void getCashTest() throws Exception { + Integer expected=1000; + Integer actual = player.getCash(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void addCashTest() throws Exception { + Integer expected=player.getCash()+1000; + player.addCash(1000); + Integer actual=player.getCash(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void withdrawalCashTest() throws Exception { + Integer expected=player.getCash()-500; + Integer withdrawn=player.withdrawalCash(500); + Integer actual=player.getCash(); + + Assert.assertEquals(expected,actual); + Assert.assertEquals(500,withdrawn.intValue()); + + } + +} \ No newline at end of file From f19cde714a62efcc8d1da5913eeea4df36d362df Mon Sep 17 00:00:00 2001 From: elliott Date: Sun, 26 Nov 2017 20:32:19 -0500 Subject: [PATCH 5/7] changedVerbage --- pom.xml | 12 ++++++++++++ src/main/java/io/zipcoder/casino/BlackJack.java | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c6ec0cc8..3996aef2 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.8 + 1.8 + + + + diff --git a/src/main/java/io/zipcoder/casino/BlackJack.java b/src/main/java/io/zipcoder/casino/BlackJack.java index 37bdd188..45c3237a 100644 --- a/src/main/java/io/zipcoder/casino/BlackJack.java +++ b/src/main/java/io/zipcoder/casino/BlackJack.java @@ -140,7 +140,7 @@ private void payoutWinnings(BlackJackGambler player, double multiplier) { multiplier += 0.5; Integer winnings = (int) (playerWagers.get(player).doubleValue() * multiplier); System.out.println(player.showHand()); - System.out.println(" Winnings: " + winnings + "\n"); + System.out.println(" Won: " + winnings + " chips\n"); player.addChips(winnings); } From 823f78d1de9edaccbfa342dc1e20bc673ff005a2 Mon Sep 17 00:00:00 2001 From: kozman31 Date: Sun, 26 Nov 2017 20:34:30 -0500 Subject: [PATCH 6/7] Update BlackJack.java --- src/main/java/io/zipcoder/casino/BlackJack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/casino/BlackJack.java b/src/main/java/io/zipcoder/casino/BlackJack.java index 45c3237a..8e9009e3 100644 --- a/src/main/java/io/zipcoder/casino/BlackJack.java +++ b/src/main/java/io/zipcoder/casino/BlackJack.java @@ -47,7 +47,7 @@ public void play(BlackJackGambler user) { resetHands(); resetBets(); removeZeroChipPlayers(); - } while ("yes".equalsIgnoreCase(playAgain)); + } while (!"no".equalsIgnoreCase(playAgain)); } From 9a43658529284c7fd578ff5d549aab93ba3ebbc1 Mon Sep 17 00:00:00 2001 From: elliott Date: Mon, 27 Nov 2017 06:13:53 -0500 Subject: [PATCH 7/7] fixedGoFish --- src/main/java/io/zipcoder/casino/BlackJack.java | 2 +- src/main/java/io/zipcoder/casino/CompPlay.java | 8 ++++++-- src/main/java/io/zipcoder/casino/GoFish.java | 4 ++-- src/main/java/io/zipcoder/casino/GoFishPlayer.java | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/zipcoder/casino/BlackJack.java b/src/main/java/io/zipcoder/casino/BlackJack.java index 45c3237a..8e9009e3 100644 --- a/src/main/java/io/zipcoder/casino/BlackJack.java +++ b/src/main/java/io/zipcoder/casino/BlackJack.java @@ -47,7 +47,7 @@ public void play(BlackJackGambler user) { resetHands(); resetBets(); removeZeroChipPlayers(); - } while ("yes".equalsIgnoreCase(playAgain)); + } while (!"no".equalsIgnoreCase(playAgain)); } diff --git a/src/main/java/io/zipcoder/casino/CompPlay.java b/src/main/java/io/zipcoder/casino/CompPlay.java index 7d720fe1..e82944c7 100644 --- a/src/main/java/io/zipcoder/casino/CompPlay.java +++ b/src/main/java/io/zipcoder/casino/CompPlay.java @@ -82,6 +82,7 @@ public static Rank chooseRank(GoFishPlayer player) { } public static GoFishPlayer choosePlayer(GoFishPlayer player, Rank cardRank) { + SetnoCards=new HashSet<>(); for (GoFishPlayer p : playerCards.keySet()) { if (playerCards.get(p).contains(cardRank)&&!player.equals(p)) { return p; @@ -89,10 +90,13 @@ public static GoFishPlayer choosePlayer(GoFishPlayer player, Rank cardRank) { } GoFishPlayer[] arr = playerCards.keySet().stream().toArray(GoFishPlayer[]::new); GoFishPlayer otherPlayer = null; + int randSeed=arr.length; do { - otherPlayer = arr[rand.nextInt(arr.length)]; + + otherPlayer = arr[rand.nextInt(randSeed)]; + randSeed--; } - while (otherPlayer.equals(player)||otherPlayer.getHand().size()==0); + while ((otherPlayer.equals(player)||otherPlayer.getHand().size()==0)&&randSeed>1); return otherPlayer; } diff --git a/src/main/java/io/zipcoder/casino/GoFish.java b/src/main/java/io/zipcoder/casino/GoFish.java index 79641923..2a581a23 100644 --- a/src/main/java/io/zipcoder/casino/GoFish.java +++ b/src/main/java/io/zipcoder/casino/GoFish.java @@ -10,7 +10,7 @@ public void play(GoFishPlayer user) { gameSetUp(user); - while (booksRemaining() > 0) { + do{ System.out.println("Books remaining: " + booksRemaining()); booksFound(); System.out.println("Your Hand: " + user.handToString()); @@ -28,7 +28,7 @@ public void play(GoFishPlayer user) { } player.removeBooks(); } - } + }while (booksRemaining() > 0); findWinner(); CompPlay.clearPlayerCards(); diff --git a/src/main/java/io/zipcoder/casino/GoFishPlayer.java b/src/main/java/io/zipcoder/casino/GoFishPlayer.java index caeb304e..1decc530 100644 --- a/src/main/java/io/zipcoder/casino/GoFishPlayer.java +++ b/src/main/java/io/zipcoder/casino/GoFishPlayer.java @@ -52,6 +52,7 @@ public void removeBooks() { giveCards(rank); books++; System.out.println(getName() + " Completed Book: " + rank); + break; } }