Hearts: Fix sorting for pick_low_points_high_value_card

Previously the function did not sort the hand at all which means we
wouldn't necessarily pick the card with the highest value.
This commit is contained in:
Gunnar Beutner 2021-06-01 00:46:01 +02:00 committed by Andreas Kling
parent 63d3beb78c
commit 45117a4134
Notes: sideshowbarker 2024-07-18 17:05:14 +09:00

View File

@ -73,18 +73,16 @@ size_t Player::pick_lead_card(Function<bool(Card&)> valid_play, Function<bool(Ca
Optional<size_t> Player::pick_low_points_high_value_card(Optional<Card::Type> type)
{
auto sorted_hand = hand_sorted_by_fn(compare_card_value);
int min_points = -1;
Optional<size_t> card_index;
for (ssize_t i = hand.size() - 1; i >= 0; i--) {
auto& card = hand[i];
if (card.is_null())
for (auto& cwi : sorted_hand) {
if (type.has_value() && cwi.card->type() != type.value())
continue;
if (type.has_value() && card->type() != type.value())
continue;
auto points = hearts_card_points(*card);
auto points = hearts_card_points(*cwi.card);
if (min_points == -1 || points < min_points) {
min_points = points;
card_index = i;
card_index = cwi.index;
}
}
VERIFY(card_index.has_value() || type.has_value());