separate klondike
This commit is contained in:
Generated
+9
-1
@@ -25,7 +25,6 @@ name = "card_game"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -125,11 +124,20 @@ version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
||||
|
||||
[[package]]
|
||||
name = "klondike"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"card_game",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "klondike-cli"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"card_game",
|
||||
"klondike",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[workspace]
|
||||
members = [
|
||||
"card_game",
|
||||
"klondike",
|
||||
"klondike-cli",
|
||||
]
|
||||
resolver = "3"
|
||||
|
||||
@@ -10,4 +10,3 @@ keywords = ["card", "cards", "solitaire", "klondike"]
|
||||
|
||||
[dependencies]
|
||||
arrayvec = "0.7.6"
|
||||
rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] }
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
pub mod card_game;
|
||||
pub mod klondike;
|
||||
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
||||
pub type Rng = rand::rngs::ThreadRng;
|
||||
mod card_game;
|
||||
pub use card_game::*;
|
||||
|
||||
// // test readme
|
||||
// #[doc = include_str!("../README.md")]
|
||||
|
||||
@@ -5,3 +5,4 @@ edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
card_game = { version = "0.1.0", path = "../card_game" }
|
||||
klondike = { version = "0.1.0", path = "../klondike" }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use card_game::card_game::{Card, Game, Pile, Session, Suit};
|
||||
use card_game::klondike::{
|
||||
use card_game::{Card, Game, Pile, Session, Suit};
|
||||
use klondike::{
|
||||
DstFoundation, DstTableau, Foundation, Klondike, KlondikeInstruction, KlondikePile,
|
||||
KlondikePileStack, SkipCards, Tableau, TableauStack,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "klondike"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
card_game = { version = "0.1.0", path = "../card_game" }
|
||||
rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] }
|
||||
@@ -1,5 +1,14 @@
|
||||
use crate::Rng;
|
||||
use crate::card_game::{Card, CardValue, Game, Pile, Stack};
|
||||
pub type Rng = rand::rngs::ThreadRng;
|
||||
|
||||
use card_game::{Card, CardValue, Game, Pile, Stack};
|
||||
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
||||
// test readme
|
||||
#[doc = include_str!("../README.md")]
|
||||
#[cfg(doctest)]
|
||||
struct ReadmeDoctests;
|
||||
|
||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
|
||||
pub struct KlondikeConfig {}
|
||||
@@ -480,8 +489,8 @@ impl Klondike {
|
||||
let mut deck = deck.into_iter();
|
||||
|
||||
// generate tableaus
|
||||
fn pile<const DN: usize>(deck: &mut arrayvec::IntoIter<Card, 52>) -> Pile<DN, 13> {
|
||||
let stack = arrayvec::ArrayVec::from_iter(deck.take(DN)).into();
|
||||
fn pile<const DN: usize>(deck: &mut <Stack<52> as IntoIterator>::IntoIter) -> Pile<DN, 13> {
|
||||
let stack = Stack::from_iter(deck.take(DN));
|
||||
let mut pile = Pile::new_face_down(stack);
|
||||
pile.push(deck.next().unwrap());
|
||||
pile
|
||||
@@ -495,7 +504,7 @@ impl Klondike {
|
||||
let tableau7 = pile(&mut deck);
|
||||
|
||||
// stock is remaining cards
|
||||
let stock = Pile::new_face_down(arrayvec::ArrayVec::from_iter(deck).into());
|
||||
let stock = Pile::new_face_down(Stack::from_iter(deck));
|
||||
|
||||
let state = KlondikeState {
|
||||
stock,
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::card_game::{Game, Session};
|
||||
use crate::klondike::Klondike;
|
||||
use crate::Klondike;
|
||||
use card_game::{Game, Session};
|
||||
#[test]
|
||||
fn test_is_winnable() {
|
||||
// is winnable
|
||||
Reference in New Issue
Block a user