Compare commits
4 commits
Author | SHA1 | Date | |
---|---|---|---|
4b23f3c67f | |||
4f6add087b | |||
|
55daca72c0 | ||
71cda97dab |
3 changed files with 33 additions and 9 deletions
|
@ -67,6 +67,11 @@ cd backend
|
|||
./gradlew bootRun
|
||||
```
|
||||
|
||||
You may optionally install [watchexec](https://github.com/watchexec/watchexec?tab=readme-ov-file) and use this command to autorecompile the backend on file changes:
|
||||
```bash
|
||||
watchexec -r -e java ./gradlew :bootRun
|
||||
```
|
||||
|
||||
The backend will be available at:
|
||||
- API endpoint: http://localhost:8080
|
||||
- Swagger documentation: http://localhost:8080/swagger
|
||||
|
@ -164,4 +169,4 @@ References:
|
|||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
|
|
@ -36,6 +36,10 @@ public class BlackJackGameEntity {
|
|||
private String state;
|
||||
private BigDecimal bet;
|
||||
|
||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonIgnore
|
||||
private List<CardEntity> deck = new ArrayList<>();
|
||||
|
||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonManagedReference
|
||||
private List<CardEntity> playerCards = new ArrayList<>();
|
||||
|
|
|
@ -24,13 +24,14 @@ public class BlackJackService {
|
|||
game.setUser(user);
|
||||
game.setBet(betAmount);
|
||||
game.setState("IN_PROGRESS");
|
||||
initializeDeck(game);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
CardEntity playerCard = createRandomCard(game);
|
||||
CardEntity playerCard = drawCardFromDeck(game);
|
||||
game.getPlayerCards().add(playerCard);
|
||||
}
|
||||
|
||||
CardEntity dealerCard = createRandomCard(game);
|
||||
CardEntity dealerCard = drawCardFromDeck(game);
|
||||
game.getDealerCards().add(dealerCard);
|
||||
|
||||
user.setBalance(user.getBalance().subtract(betAmount));
|
||||
|
@ -41,11 +42,25 @@ public class BlackJackService {
|
|||
return game;
|
||||
}
|
||||
|
||||
private CardEntity createRandomCard(BlackJackGameEntity game) {
|
||||
CardEntity card = new CardEntity();
|
||||
card.setGame(game);
|
||||
card.setSuit(Suit.values()[random.nextInt(Suit.values().length)]);
|
||||
card.setRank(Rank.values()[random.nextInt(Rank.values().length)]);
|
||||
return card;
|
||||
private void initializeDeck(BlackJackGameEntity game) {
|
||||
for (Suit suit : Suit.values()) {
|
||||
for (Rank rank : Rank.values()) {
|
||||
CardEntity card = new CardEntity();
|
||||
card.setGame(game);
|
||||
card.setSuit(suit);
|
||||
card.setRank(rank);
|
||||
game.getDeck().add(card);
|
||||
}
|
||||
}
|
||||
|
||||
java.util.Collections.shuffle(game.getDeck(), random);
|
||||
}
|
||||
|
||||
private CardEntity drawCardFromDeck(BlackJackGameEntity game) {
|
||||
if (game.getDeck().isEmpty()) {
|
||||
throw new IllegalStateException("Deck is empty");
|
||||
}
|
||||
|
||||
return game.getDeck().removeFirst();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue