mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 08:41:15 +00:00
Hearts: Prefer to play Queen of Spades when we're the trailing player
Previously in a trick like 2S, KS, 5S we'd rather follow up with AS instead of QS. We should prefer to play QS in this case.
This commit is contained in:
parent
0dd22c4e23
commit
c2a4b581fe
Notes:
sideshowbarker
2024-07-18 17:33:51 +09:00
Author: https://github.com/gunnarbeutner Commit: https://github.com/SerenityOS/serenity/commit/c2a4b581fe8 Pull-request: https://github.com/SerenityOS/serenity/pull/7381 Reviewed-by: https://github.com/linusg
|
@ -180,6 +180,12 @@ size_t Game::pick_card(Player& player)
|
|||
} else
|
||||
return player.pick_low_points_low_value_card();
|
||||
}
|
||||
auto* high_card = &m_trick[0];
|
||||
for (auto& card : m_trick)
|
||||
if (high_card->type() == card.type() && hearts_card_value(card) > hearts_card_value(*high_card))
|
||||
high_card = &card;
|
||||
if (high_card->type() == Card::Type::Spades && hearts_card_value(*high_card) > CardValue::Queen)
|
||||
RETURN_CARD_IF_VALID(player.pick_specific_card(Card::Type::Spades, CardValue::Queen));
|
||||
auto card_has_points = [](Card& card) { return hearts_card_points(card) > 0; };
|
||||
auto trick_has_points = m_trick.first_matching(card_has_points).has_value();
|
||||
bool is_trailing_player = m_trick.size() == 3;
|
||||
|
@ -190,12 +196,6 @@ size_t Game::pick_card(Player& player)
|
|||
else
|
||||
return player.pick_max_points_card();
|
||||
}
|
||||
auto* high_card = &m_trick[0];
|
||||
for (auto& card : m_trick)
|
||||
if (high_card->type() == card.type() && hearts_card_value(card) > hearts_card_value(*high_card))
|
||||
high_card = &card;
|
||||
if (!is_first_trick && high_card->type() == Card::Type::Spades && hearts_card_value(*high_card) > CardValue::Queen)
|
||||
RETURN_CARD_IF_VALID(player.pick_specific_card(Card::Type::Spades, CardValue::Queen));
|
||||
RETURN_CARD_IF_VALID(player.pick_lower_value_card(*high_card));
|
||||
if (!is_trailing_player)
|
||||
RETURN_CARD_IF_VALID(player.pick_slightly_higher_value_card(*high_card));
|
||||
|
|
Loading…
Reference in a new issue