/** * This class will hold instances of 2 cards. * * @author Devin Gray and Class * @version 2/24/2016 */ public class Hand { private int total = 0; private boolean aceFlag = false; private Card card1; private Card card2; public Hand() { } public void addCard() { int rank = generateNumber(1, 13); String rankStr = convertRank(rank); int suit = generateNumber(1, 4); String suitStr = convertSuit(suit); Card newCard = new Card(rankStr, suitStr); int cardValue = newCard.getValue(); if(cardValue == 11) { this.aceFlag = true; } total += cardValue; System.out.println("total = " + total); } public void generateFirstCard() { int rank = generateNumber(1, 13); String rankStr = convertRank(rank); int suit = generateNumber(1, 4); String suitStr = convertSuit(suit); card1 = new Card(rankStr, suitStr); } public void generateSecondCard() { int rank = generateNumber(1, 13); String rankStr = convertRank(rank); int suit = generateNumber(1, 4); String suitStr = convertSuit(suit); card2 = new Card(rankStr, suitStr); } private String convertRank(int rank) { switch(rank) { case 2: return "two"; case 3: return "three"; case 4: return "four"; case 5: return "five"; case 6: return "six"; case 7: return "seven"; case 8: return "eight"; case 9: return "nine"; case 10: return "ten"; case 11: return "jack"; case 12: return "queen"; case 13: return "king"; case 1: return "ace"; default: return "error"; } } private String convertSuit(int suit) { switch(suit) { case 1: return "spades"; case 2: return "diamonds"; case 3: return "clubs"; case 4: return "hearts"; default: return "error"; } } private int generateNumber(int low, int high) { return (int) ((high - low + 1) * Math.random()) + low; } public void addFirstCard(Card card1) { this.card1 = card1; if(card1.getValue() == 11) { this.aceFlag = true; } } public void addSecondCard(Card card2) { this.card2 = card2; if(card2.getValue() == 11) { this.aceFlag = true; } } /** * A dealer will "Hit" if the initial two cards either * (1) total 16 or less or * (2) make a soft 17. * Otherwise, the dealer will "Stand". */ public void evaluate() { int handValue = card1.getValue() + card2.getValue(); if(handValue <= 16 || (handValue == 17 && aceFlag)) { System.out.println("Hit"); } else { System.out.println("Stand"); } } public String evaluate2() { int handValue = this.total; if(handValue <= 16 || (handValue == 17 && aceFlag)) { return "Hit"; } else { return "Stand"; } } public void evaluateHand() { int handValue = card1.getValue() + card2.getValue(); System.out.println("Card1: " + card1); System.out.println("Card2: " + card2); System.out.println("Total Value: " + handValue); } public String toString() { return "Hand Value = " + this.total; } }