Skip to content
Snippets Groups Projects
Commit 59407833 authored by iliya's avatar iliya
Browse files

feat: computing results in case of splitted hands

parent 555b20bf
No related branches found
No related tags found
No related merge requests found
...@@ -18,6 +18,8 @@ public class GameManager { ...@@ -18,6 +18,8 @@ public class GameManager {
private List<IPlayer> bustedPlayers; private List<IPlayer> bustedPlayers;
private List<IPlayer> blackJackHands; private List<IPlayer> blackJackHands;
private List<Hand> bustedHands;
private Deck currentGame; private Deck currentGame;
private Game game; private Game game;
...@@ -56,7 +58,7 @@ public class GameManager { ...@@ -56,7 +58,7 @@ public class GameManager {
int playerBet = 0; int playerBet = 0;
do { do {
System.out.print("Please enter your bet: "); System.out.print("Player " + (i + 1) + ", please enter your bet: ");
playerBet = scanner.nextInt(); playerBet = scanner.nextInt();
} while (!ensureValidBetValue(playerBet)); } while (!ensureValidBetValue(playerBet));
...@@ -264,6 +266,8 @@ public class GameManager { ...@@ -264,6 +266,8 @@ public class GameManager {
this.bustedPlayers = new ArrayList<>(); this.bustedPlayers = new ArrayList<>();
this.blackJackHands = new ArrayList<>(); this.blackJackHands = new ArrayList<>();
this.bustedHands = new ArrayList<>();
if (this.game == Game.BLACKJACK) { if (this.game == Game.BLACKJACK) {
this.decks = Deck.createDecks(nbDecks, Game.BLACKJACK_CARD_COUNT); this.decks = Deck.createDecks(nbDecks, Game.BLACKJACK_CARD_COUNT);
for (Deck deck : this.decks) { for (Deck deck : this.decks) {
...@@ -334,7 +338,8 @@ public class GameManager { ...@@ -334,7 +338,8 @@ public class GameManager {
if (player.getHand().computeHandValue() >= 21) { if (player.getHand().computeHandValue() >= 21) {
if (player.getHand().computeHandValue() > 21) { if (player.getHand().computeHandValue() > 21) {
this.bustedPlayers.add(player); // this.bustedPlayers.add(player);
this.bustedHands.add(player.getHand());
} }
break; break;
} }
...@@ -351,6 +356,7 @@ public class GameManager { ...@@ -351,6 +356,7 @@ public class GameManager {
if (player.getHand().computeHandValue() >= 21) { if (player.getHand().computeHandValue() >= 21) {
if (player.getHand().computeHandValue() > 21) { if (player.getHand().computeHandValue() > 21) {
this.bustedPlayers.add(player); this.bustedPlayers.add(player);
// this.bustedHands.add(player.getHand());
} }
break; break;
} }
...@@ -395,6 +401,24 @@ public class GameManager { ...@@ -395,6 +401,24 @@ public class GameManager {
displayPlayerHand(this.croupier); displayPlayerHand(this.croupier);
} }
private void compareHandsAssignGainsLosses(IPlayer player) {
int compare = player.getHand().compareTo(this.croupier.getHand());
switch (compare) {
case -1:
this.croupier.addToBalance(player.getBet());
break;
case 0:
player.addToBalance(player.getBet());
break;
case 1:
player.addToBalance(2 * player.getBet());
break;
default:
break;
}
}
private void computeGainsLosses() { private void computeGainsLosses() {
// Compute gains/losses per player // Compute gains/losses per player
List<IPlayer> playersToPayout = new ArrayList<>(this.players); List<IPlayer> playersToPayout = new ArrayList<>(this.players);
...@@ -434,23 +458,19 @@ public class GameManager { ...@@ -434,23 +458,19 @@ public class GameManager {
for (IPlayer player : playersToPayout) { for (IPlayer player : playersToPayout) {
if (!player.equals(this.croupier)) { if (!player.equals(this.croupier)) {
if (player.hasSplitHand()) {
int compare = player.getHand().compareTo(this.croupier.getHand()); for (Hand hand : player.getSplittedHand()) {
if (!this.bustedHands.contains(hand)) {
switch (compare) { player.setHand(hand);
case -1: compareHandsAssignGainsLosses(player);
} else {
player.addToBalance((-1) * player.getBet());
this.croupier.addToBalance(player.getBet()); this.croupier.addToBalance(player.getBet());
break;
case 0:
player.addToBalance(player.getBet());
break;
case 1:
player.addToBalance(2 * player.getBet());
break;
default:
break;
} }
}
} else {
compareHandsAssignGainsLosses(player);
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment