diff --git a/backend/requests/blackjack.http b/backend/requests/blackjack.http index 16f7122..21dd35e 100644 --- a/backend/requests/blackjack.http +++ b/backend/requests/blackjack.http @@ -7,7 +7,7 @@ Content-Type: application/json } ### -POST http://localhost:8080/blackjack/202/hit +POST http://localhost:8080/blackjack/54/hit Authorization: Bearer {{token}} ### diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java index 5c39459..2ce7b07 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackService.java @@ -96,7 +96,6 @@ public class BlackJackService { return game; } - private BlackJackGameEntity refreshGameState(BlackJackGameEntity game) { return blackJackGameRepository.findById(game.getId()).orElse(game); } @@ -205,7 +204,20 @@ public class BlackJackService { int playerHandValue = calculateHandValue(game.getPlayerCards()); if (playerHandValue == 21) { - return BlackJackState.PLAYER_WON; + CardEntity hole = drawCardFromDeck(game); + hole.setCardType(CardType.DEALER); + game.getDealerCards().add(hole); + + int dealerHandValue = calculateHandValue(game.getDealerCards()); + + if (dealerHandValue == 21) { + return BlackJackState.DRAW; + } else { + BigDecimal blackjackWinnings = game.getBet().multiply(new BigDecimal("1.5")); + UserEntity user = getUserWithFreshData(game.getUser()); + user.setBalance(user.getBalance().add(blackjackWinnings)); + return BlackJackState.PLAYER_BLACKJACK; + } } else if (playerHandValue > 21) { return BlackJackState.PLAYER_LOST; } @@ -216,7 +228,6 @@ public class BlackJackService { private int calculateHandValue(List hand) { int sum = 0; int aceCount = 0; - for (CardEntity card : hand) { sum += card.getRank().getValue(); if (card.getRank() == Rank.ACE) { diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackState.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackState.java index e1d422d..3f3e6fc 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackState.java +++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackState.java @@ -1,8 +1,9 @@ package de.szut.casino.blackjack; public enum BlackJackState { - PLAYER_WON, IN_PROGRESS, + PLAYER_BLACKJACK, PLAYER_LOST, + PLAYER_WON, DRAW, } diff --git a/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java b/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java index 5520b58..3b6903a 100644 --- a/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java +++ b/backend/src/main/java/de/szut/casino/blackjack/CardEntity.java @@ -31,6 +31,7 @@ public class CardEntity { private Rank rank; @Enumerated(EnumType.STRING) + @JsonIgnore private CardType cardType; }