Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Black Jack by Craig
//'main' method must be in a class 'Rextester'. //Compiler version 1.8.0_111 import java.util.*; import java.lang.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Rextester { public static void main(String args[]) { Player dealer = new Player("Dealer"); dealer.setHand(Cards.JACK,Cards.NINE); Player billy = new Player("Billy"); billy.setHand(Cards.TWO,Cards.TWO,Cards.TWO,Cards.FOUR,Cards.FIVE); Player lemmy = new Player("Lemmy"); lemmy.setHand(Cards.ACE,Cards.SEVEN,Cards.ACE); Player andrew = new Player("Andrew"); andrew.setHand(Cards.KING,Cards.FOUR,Cards.FOUR); Player carla = new Player("Carla"); carla.setHand(Cards.QUEEN,Cards.SIX,Cards.NINE); BlackJackRules.playBlackJack(dealer,andrew,carla,lemmy,billy); BlackJackRules.displayResults(); } } /** * Author : Magada Mushabalo Craig * Email : magadacraig@gmail.com * No. : 0729000448 */ class Player { private String name; private List<Cards> hand; public Player(){ super(); } public Player(String name, Cards ...hand){ this.name = name; this.hand = Arrays.asList(hand); } public Player(String name){ this.name = name; } public List<Cards> getHand() { return hand; } public void setHand(Cards ...hand) { this.hand = Arrays.asList(hand); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String winnersFormat() { return this.name + " with hand "+getHand()+" beats the Dealer"; } public String losersFormat() { return this.name + " with hand "+getHand()+" loses to the Dealer"; } } /** * Author : Magada Mushabalo Craig * Email : magadacraig@gmail.com * No. : 0729000448 */ enum Cards{ ACE(11),JACK(10),QUEEN(10),KING(10),ONE(1),TWO(2),THREE(3),FOUR(4),FIVE(5),SIX(6),SEVEN(7),EIGHT(8),NINE(9); private final int value; Cards(int value) { this.value = value; } public int getValue(){ return this.value; } } /** * Author : Magada Mushabalo Craig * Email : magadacraig@gmail.com * No. : 0729000448 */ class BlackJackRules{ private static final int MAX_SCORE = 21; private static int MAX_CARDS = 5; private static List<Player> winners = new ArrayList<>(); private static List<Player> losers = new ArrayList<>() ; public static void playBlackJack(Player dealer, Player ...players){ int dealerScore = getDealerHand(dealer); play: for (Player player: players) { int sumOfCards = getSumInHand(player.getHand()); List<Cards> playersHand = player.getHand(); long numberOfAces = getNumberOfAces(playersHand); while(sumOfCards > MAX_SCORE && numberOfAces > 0) { sumOfCards -= 10; numberOfAces-=1; } if(sumOfCards > MAX_SCORE){ losers.add(player); continue play; } if (player.getHand().size() == MAX_CARDS && sumOfCards <= MAX_SCORE){ winners.add(player); continue play; } if(sumOfCards <= MAX_SCORE && sumOfCards == dealerScore || sumOfCards > dealerScore){ winners.add(player); continue play; } losers.add(player); } } private static int getDealerHand(Player dealer){ return getSumInHand(dealer.getHand()); } private static long getNumberOfAces(List<Cards> hand){ return hand.parallelStream().filter(i->i.equals(Cards.ACE)).count(); } private static int getSumInHand(List<Cards> cards){ int sum = 0; for (Cards c: cards) { sum += c.getValue(); } return sum; } public static List<Player> getWinners(){ return winners; } public static List<Player> getLosers(){ return losers; } public static void displayResults(){ for (Player player: getWinners()) { System.out.println(player.winnersFormat()); } for (Player playerl: getLosers()) { System.out.println(playerl.losersFormat()); } } }
run
|
edit
|
history
|
help
0
PE #6
PE #3
javaSuperSub
Edna Garcia
Strings Ops
js
Problem: on_off
pk3
ok
1a