fix take_top_card using pop_flip_up

This commit is contained in:
2026-05-16 12:11:29 -07:00
parent a8051b221b
commit 4383228aad
2 changed files with 15 additions and 8 deletions
+7
View File
@@ -182,6 +182,13 @@ impl<const DN: usize, const UP: usize> Pile<DN, UP> {
pub fn pop(&mut self) -> Option<Card> { pub fn pop(&mut self) -> Option<Card> {
self.face_up.pop() self.face_up.pop()
} }
pub fn pop_flip_up(&mut self) -> Option<Card> {
let card = self.face_up.pop()?;
if self.face_up.is_empty() {
self.flip_up();
}
Some(card)
}
pub fn take_range<R: RangeBounds<usize>>(&mut self, range: R) -> Stack<UP> { pub fn take_range<R: RangeBounds<usize>>(&mut self, range: R) -> Stack<UP> {
// if self.face_up.get(range).is_none() { // if self.face_up.get(range).is_none() {
// return None; // return None;
+8 -8
View File
@@ -365,16 +365,16 @@ impl KlondikeState {
fn take_top_card(&mut self, src: KlondikePile) -> Option<Card> { fn take_top_card(&mut self, src: KlondikePile) -> Option<Card> {
match src { match src {
KlondikePile::Tableau(tableau) => match tableau { KlondikePile::Tableau(tableau) => match tableau {
Tableau::Tableau1 => self.tableau1.pop(), Tableau::Tableau1 => self.tableau1.pop_flip_up(),
Tableau::Tableau2 => self.tableau2.pop(), Tableau::Tableau2 => self.tableau2.pop_flip_up(),
Tableau::Tableau3 => self.tableau3.pop(), Tableau::Tableau3 => self.tableau3.pop_flip_up(),
Tableau::Tableau4 => self.tableau4.pop(), Tableau::Tableau4 => self.tableau4.pop_flip_up(),
Tableau::Tableau5 => self.tableau5.pop(), Tableau::Tableau5 => self.tableau5.pop_flip_up(),
Tableau::Tableau6 => self.tableau6.pop(), Tableau::Tableau6 => self.tableau6.pop_flip_up(),
Tableau::Tableau7 => self.tableau7.pop(), Tableau::Tableau7 => self.tableau7.pop_flip_up(),
}, },
KlondikePile::Foundation(foundation) => self.foundations[foundation as usize].pop(), KlondikePile::Foundation(foundation) => self.foundations[foundation as usize].pop(),
KlondikePile::Stock => self.stock.pop(), KlondikePile::Stock => self.stock.pop_flip_up(),
} }
} }
fn extend<I: IntoIterator<Item = Card>>(&mut self, dst: KlondikePile, cards: I) { fn extend<I: IntoIterator<Item = Card>>(&mut self, dst: KlondikePile, cards: I) {