diff --git a/klondike/src/lib.rs b/klondike/src/lib.rs index 824d0b2..5d36265 100644 --- a/klondike/src/lib.rs +++ b/klondike/src/lib.rs @@ -624,14 +624,13 @@ impl Game for Klondike { } } fn is_win(&self) -> bool { - // all face down cards empty means win - self.state.stock.face_down().is_empty() - && self.state.tableau1.face_down().is_empty() - && self.state.tableau2.face_down().is_empty() - && self.state.tableau3.face_down().is_empty() - && self.state.tableau4.face_down().is_empty() - && self.state.tableau5.face_down().is_empty() - && self.state.tableau6.face_down().is_empty() - && self.state.tableau7.face_down().is_empty() + // all foundations contain all ranks + self.state.foundations.iter().all(|foundation| { + foundation.len() == Rank::RANKS.len() + && foundation + .iter() + .zip(Rank::RANKS) + .all(|(card, rank)| card.rank() == rank) + }) } }