Sfoglia il codice sorgente

Implemented skeletton for game, now on to rule-specific functions

Denis Merigoux 9 anni fa
parent
commit
32453671fd
1 ha cambiato i file con 12 aggiunte e 5 eliminazioni
  1. 12 5
      src/game.rs

+ 12 - 5
src/game.rs

@@ -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
 }