mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:47:35 +00:00
Hearts: Play the first valid card (left-to-right) when pressing space
This commit is contained in:
parent
6f38ce8f47
commit
3ad7a1e944
2 changed files with 17 additions and 0 deletions
|
@ -392,6 +392,19 @@ size_t Game::pick_card(Player& player)
|
||||||
return player.pick_max_points_card(move(ignore_card));
|
return player.pick_max_points_card(move(ignore_card));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t Game::pick_first_card_ltr(Player& player)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < player.hand.size(); i++) {
|
||||||
|
auto& card = player.hand[i];
|
||||||
|
if (card.is_null())
|
||||||
|
continue;
|
||||||
|
if (is_valid_play(player, *card)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
VERIFY_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
void Game::let_player_play_card()
|
void Game::let_player_play_card()
|
||||||
{
|
{
|
||||||
auto& player = current_player();
|
auto& player = current_player();
|
||||||
|
@ -567,6 +580,9 @@ void Game::keydown_event(GUI::KeyEvent& event)
|
||||||
play_card(m_players[0], pick_card(m_players[0]));
|
play_card(m_players[0], pick_card(m_players[0]));
|
||||||
else if (m_state == State::PassingSelect)
|
else if (m_state == State::PassingSelect)
|
||||||
select_cards_for_passing();
|
select_cards_for_passing();
|
||||||
|
} else if (event.key() == KeyCode::Key_Space) {
|
||||||
|
if (m_human_can_play && m_state == State::Play)
|
||||||
|
play_card(m_players[0], pick_first_card_ltr(m_players[0]));
|
||||||
} else if (event.shift() && event.key() == KeyCode::Key_F11)
|
} else if (event.shift() && event.key() == KeyCode::Key_F11)
|
||||||
dump_state();
|
dump_state();
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ private:
|
||||||
void continue_game_after_delay(int interval_ms = 750);
|
void continue_game_after_delay(int interval_ms = 750);
|
||||||
void advance_game();
|
void advance_game();
|
||||||
size_t pick_card(Player& player);
|
size_t pick_card(Player& player);
|
||||||
|
size_t pick_first_card_ltr(Player& player);
|
||||||
size_t player_index(Player& player);
|
size_t player_index(Player& player);
|
||||||
Player& current_player();
|
Player& current_player();
|
||||||
bool game_ended() const { return m_trick_number == 13; }
|
bool game_ended() const { return m_trick_number == 13; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue