|
|
@@ -53,7 +53,7 @@ pub fn start_game(_: &deck::Hand, mut players: &mut Vec<Player>) {
|
|
53
|
53
|
play_card(player, &mut cards_played)
|
|
54
|
54
|
}
|
|
55
|
55
|
// Decide who has won
|
|
56
|
|
- starting_player_id = winning_player(&cards_played);
|
|
|
56
|
+ starting_player_id = winning_player(&mut cards_played);
|
|
57
|
57
|
}
|
|
58
|
58
|
}
|
|
59
|
59
|
|
|
|
@@ -65,17 +65,24 @@ fn sort_by_playing_order(mut players: &mut Vec<Player>, starting_player_id: i32)
|
|
65
|
65
|
}
|
|
66
|
66
|
|
|
67
|
67
|
fn play_card(player: &mut Player, cards_played: &mut Heap) {
|
|
68
|
|
- unimplemented!();
|
|
|
68
|
+ let valid_cards = valid_cards(&player.hand, cards_played);
|
|
|
69
|
+ let card = select_card(player, &valid_cards, cards_played);
|
|
|
70
|
+ player.hand.remove(&card);
|
|
|
71
|
+ cards_played.push((card, player.id));
|
|
69
|
72
|
}
|
|
70
|
73
|
|
|
71
|
74
|
fn valid_cards(hand: &deck::Hand, cards_played: &Heap) -> deck::Hand {
|
|
72
|
75
|
unimplemented!();
|
|
73
|
76
|
}
|
|
74
|
77
|
|
|
75
|
|
-fn select_card(player: &Player, cards_played: &Heap) -> card::Card {
|
|
|
78
|
+fn select_card(player: &Player, valid_cards: &deck::Hand, cards_played: &Heap) -> card::Card {
|
|
76
|
79
|
unimplemented!();
|
|
77
|
80
|
}
|
|
78
|
81
|
|
|
79
|
|
-fn winning_player(cards: &Heap) -> i32 {
|
|
80
|
|
- unimplemented!();
|
|
|
82
|
+fn winning_player(cards: &mut Heap) -> i32 {
|
|
|
83
|
+ cards.sort_by(|&(card1, _), &(card2, _)| card1.cmp(&card2));
|
|
|
84
|
+ match cards.first() {
|
|
|
85
|
+ Some(&(_, id)) => id,
|
|
|
86
|
+ None => panic!("no cards have been played"),
|
|
|
87
|
+ }
|
|
81
|
88
|
}
|