Просмотр исходного кода

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

Denis Merigoux лет назад: 9
Родитель
Сommit
32453671fd
1 измененных файлов с 12 добавлено и 5 удалено
  1. 12 5
      src/game.rs

+ 12 - 5
src/game.rs

53
             play_card(player, &mut cards_played)
53
             play_card(player, &mut cards_played)
54
         }
54
         }
55
         // Decide who has won
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
 }
65
 }
66
 
66
 
67
 fn play_card(player: &mut Player, cards_played: &mut Heap) {
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
 fn valid_cards(hand: &deck::Hand, cards_played: &Heap) -> deck::Hand {
74
 fn valid_cards(hand: &deck::Hand, cards_played: &Heap) -> deck::Hand {
72
     unimplemented!();
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
     unimplemented!();
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
 }