diff --git a/src/klondike.rs b/src/klondike.rs index 92276e2..2148f78 100644 --- a/src/klondike.rs +++ b/src/klondike.rs @@ -11,7 +11,6 @@ impl Default for KlondikeConfig { #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum KlondikePileId { - Tableau0, Tableau1, Tableau2, Tableau3, @@ -19,28 +18,29 @@ pub enum KlondikePileId { Tableau5, Tableau6, Tableau7, - Foundation0, + Tableau8, Foundation1, Foundation2, Foundation3, + Foundation4, Stock, } impl KlondikePileId { fn next(self) -> Option { use KlondikePileId::*; Some(match self { - Tableau0 => Tableau1, Tableau1 => Tableau2, Tableau2 => Tableau3, Tableau3 => Tableau4, Tableau4 => Tableau5, Tableau5 => Tableau6, Tableau6 => Tableau7, - Tableau7 => Foundation0, - Foundation0 => Foundation1, + Tableau7 => Tableau8, + Tableau8 => Foundation1, Foundation1 => Foundation2, Foundation2 => Foundation3, - Foundation3 => Stock, + Foundation3 => Foundation4, + Foundation4 => Stock, Stock => return None, }) } @@ -99,10 +99,10 @@ impl KlondikeState { KlondikeInstruction { src, dst } if matches!( dst, - KlondikePileId::Foundation0 - | KlondikePileId::Foundation1 + KlondikePileId::Foundation1 | KlondikePileId::Foundation2 | KlondikePileId::Foundation3 + | KlondikePileId::Foundation4 ) => { // get the top cards @@ -152,8 +152,8 @@ impl KlondikeIter { fn new() -> Self { Self { instruction: Some(KlondikeInstruction { - src: KlondikePileId::Tableau0, - dst: KlondikePileId::Tableau1, + src: KlondikePileId::Tableau1, + dst: KlondikePileId::Tableau2, }), } } diff --git a/src/main.rs b/src/main.rs index 9fa6bfc..ce581ed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -50,15 +50,14 @@ impl Display for Klondike { write!( f, "Foundations: {} {} {} {}", - OptionalCard(self.pile(KlondikePileId::Foundation0).face_up().last()), OptionalCard(self.pile(KlondikePileId::Foundation1).face_up().last()), OptionalCard(self.pile(KlondikePileId::Foundation2).face_up().last()), - OptionalCard(self.pile(KlondikePileId::Foundation3).face_up().last()) + OptionalCard(self.pile(KlondikePileId::Foundation3).face_up().last()), + OptionalCard(self.pile(KlondikePileId::Foundation4).face_up().last()), )?; writeln!(f)?; for (i, tableau) in [ - KlondikePileId::Tableau0, KlondikePileId::Tableau1, KlondikePileId::Tableau2, KlondikePileId::Tableau3, @@ -66,6 +65,7 @@ impl Display for Klondike { KlondikePileId::Tableau5, KlondikePileId::Tableau6, KlondikePileId::Tableau7, + KlondikePileId::Tableau8, ] .into_iter() .enumerate() @@ -101,7 +101,6 @@ impl core::str::FromStr for Parsed { fn from_str(s: &str) -> Result { Ok(Parsed(match s { "ST" | "st" => KlondikePileId::Stock, - "T0" | "t0" => KlondikePileId::Tableau0, "T1" | "t1" => KlondikePileId::Tableau1, "T2" | "t2" => KlondikePileId::Tableau2, "T3" | "t3" => KlondikePileId::Tableau3, @@ -109,10 +108,11 @@ impl core::str::FromStr for Parsed { "T5" | "t5" => KlondikePileId::Tableau5, "T6" | "t6" => KlondikePileId::Tableau6, "T7" | "t7" => KlondikePileId::Tableau7, - "F0" | "f0" => KlondikePileId::Foundation0, + "T8" | "t8" => KlondikePileId::Tableau8, "F1" | "f1" => KlondikePileId::Foundation1, "F2" | "f2" => KlondikePileId::Foundation2, "F3" | "f3" => KlondikePileId::Foundation3, + "F4" | "f4" => KlondikePileId::Foundation4, _ => return Err(Invalid), })) }