moved split check to hand
This commit is contained in:
parent
6c21eb960f
commit
d34a72cf3b
@ -152,29 +152,22 @@ impl BlackjackGame {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(card_0) = hand.hand.get_card(0) {
|
if !hand.hand.is_valid_for_bj_split() {
|
||||||
if let Some(card_1) = hand.hand.get_card(1) {
|
return false;
|
||||||
if card_0.index.get_blackjack_value(true)
|
|
||||||
!= card_1.index.get_blackjack_value(true)
|
|
||||||
{
|
|
||||||
// Cards are not the same value
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Split the hands
|
|
||||||
|
|
||||||
let mut new_hand = PlayingHand::new();
|
|
||||||
|
|
||||||
// Add card from the current hand and a card from the shoe
|
|
||||||
new_hand.hand.add_card(hand.hand.pop_card().unwrap());
|
|
||||||
new_hand.hand.add_card(self.shoe.pop_card().unwrap());
|
|
||||||
|
|
||||||
// Add card to current hand
|
|
||||||
hand.hand.add_card(self.shoe.pop_card().unwrap());
|
|
||||||
|
|
||||||
player.hands.push(new_hand);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Split the hands
|
||||||
|
|
||||||
|
let mut new_hand = PlayingHand::new();
|
||||||
|
|
||||||
|
// Add card from the current hand and a card from the shoe
|
||||||
|
new_hand.hand.add_card(hand.hand.pop_card().unwrap());
|
||||||
|
new_hand.hand.add_card(self.shoe.pop_card().unwrap());
|
||||||
|
|
||||||
|
// Add card to current hand
|
||||||
|
hand.hand.add_card(self.shoe.pop_card().unwrap());
|
||||||
|
|
||||||
|
player.hands.push(new_hand);
|
||||||
}
|
}
|
||||||
(GameState::PlayerTurn(player_index, hand_index), PlayMoves::DoubleDown) => {
|
(GameState::PlayerTurn(player_index, hand_index), PlayMoves::DoubleDown) => {
|
||||||
let Some(player) = self.players.get_mut(*player_index) else {
|
let Some(player) = self.players.get_mut(*player_index) else {
|
||||||
|
21
src/hand.rs
21
src/hand.rs
@ -40,6 +40,27 @@ impl Hand {
|
|||||||
self.cards.len() == 2 && self.get_blackjack_value() == 21
|
self.cards.len() == 2 && self.get_blackjack_value() == 21
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if this hand could be split in a blackjack game.
|
||||||
|
*/
|
||||||
|
pub fn is_valid_for_bj_split(&self) -> bool {
|
||||||
|
if self.cards.len() != 2 {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(card_0) = self.get_card(0) {
|
||||||
|
if let Some(card_1) = self.get_card(1) {
|
||||||
|
if card_0.index.get_blackjack_value(true) != card_1.index.get_blackjack_value(true)
|
||||||
|
{
|
||||||
|
// Cards are not the same value
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put another hand into this.
|
* Put another hand into this.
|
||||||
* Leaves the other hand empty.
|
* Leaves the other hand empty.
|
||||||
|
Loading…
Reference in New Issue
Block a user