shuffle code around
This commit is contained in:
+25
-21
@@ -1,5 +1,5 @@
|
|||||||
use crate::Rng;
|
use crate::Rng;
|
||||||
use crate::card_game::{Card, Game, Pile, Stack};
|
use crate::card_game::{Game, Pile, Stack};
|
||||||
|
|
||||||
pub struct KlondikeConfig {}
|
pub struct KlondikeConfig {}
|
||||||
impl Default for KlondikeConfig {
|
impl Default for KlondikeConfig {
|
||||||
@@ -7,6 +7,7 @@ impl Default for KlondikeConfig {
|
|||||||
KlondikeConfig {}
|
KlondikeConfig {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
pub enum KlondikePileId {
|
pub enum KlondikePileId {
|
||||||
Stock,
|
Stock,
|
||||||
@@ -43,6 +44,7 @@ impl KlondikePileId {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
|
||||||
pub struct KlondikeInstruction {
|
pub struct KlondikeInstruction {
|
||||||
pub src: KlondikePileId,
|
pub src: KlondikePileId,
|
||||||
@@ -134,6 +136,27 @@ impl KlondikeState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct KlondikeIter {
|
||||||
|
instruction: Option<KlondikeInstruction>,
|
||||||
|
}
|
||||||
|
impl KlondikeIter {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
instruction: Some(KlondikeInstruction {
|
||||||
|
src: KlondikePileId::Stock,
|
||||||
|
dst: KlondikePileId::Stock,
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl Iterator for KlondikeIter {
|
||||||
|
type Item = KlondikeInstruction;
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
self.instruction = self.instruction?.next();
|
||||||
|
self.instruction
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Klondike {
|
pub struct Klondike {
|
||||||
config: KlondikeConfig,
|
config: KlondikeConfig,
|
||||||
state: KlondikeState,
|
state: KlondikeState,
|
||||||
@@ -185,26 +208,7 @@ impl Klondike {
|
|||||||
self.state.pile_mut(index)
|
self.state.pile_mut(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub struct KlondikeIter {
|
|
||||||
instruction: Option<KlondikeInstruction>,
|
|
||||||
}
|
|
||||||
impl KlondikeIter {
|
|
||||||
fn new() -> Self {
|
|
||||||
Self {
|
|
||||||
instruction: Some(KlondikeInstruction {
|
|
||||||
src: KlondikePileId::Stock,
|
|
||||||
dst: KlondikePileId::Stock,
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Iterator for KlondikeIter {
|
|
||||||
type Item = KlondikeInstruction;
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
self.instruction = self.instruction?.next();
|
|
||||||
self.instruction
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl Game for Klondike {
|
impl Game for Klondike {
|
||||||
type Instruction = KlondikeInstruction;
|
type Instruction = KlondikeInstruction;
|
||||||
fn possible_instructions(&self) -> impl Iterator<Item = Self::Instruction> + use<> {
|
fn possible_instructions(&self) -> impl Iterator<Item = Self::Instruction> + use<> {
|
||||||
|
|||||||
Reference in New Issue
Block a user