Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a1572a3971 | |||
| dd557d2fcf |
+12
-7
@@ -125,14 +125,18 @@ impl KlondikeState {
|
|||||||
// other = move to tableau
|
// other = move to tableau
|
||||||
KlondikeInstruction { src, dst } => {
|
KlondikeInstruction { src, dst } => {
|
||||||
// get the top cards
|
// get the top cards
|
||||||
if let Some(src_card) = self.pile(src).face_up().last()
|
if let Some(src_card) = self.pile(src).face_up().last() {
|
||||||
&& let Some(dst_card) = self.pile(dst).face_up().last()
|
match self.pile(dst).face_up().last() {
|
||||||
|
// destination card exists
|
||||||
|
Some(dst_card) => {
|
||||||
// red-ness is opposite?
|
// red-ness is opposite?
|
||||||
&& src_card.is_red() != dst_card.is_red()
|
src_card.is_red() != dst_card.is_red()
|
||||||
// value is -1?
|
// value is -1?
|
||||||
&& dst_card.value().checked_sub(1) == Some(src_card.value())
|
&& dst_card.value().checked_sub(1) == Some(src_card.value())
|
||||||
{
|
}
|
||||||
true
|
// only king is allowed to go onto empty tableau
|
||||||
|
None => src_card.value() == CardValue::KING,
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
@@ -236,8 +240,9 @@ impl Game for Klondike {
|
|||||||
dst: KlondikePileId::Stock,
|
dst: KlondikePileId::Stock,
|
||||||
} => {
|
} => {
|
||||||
if self.pile(KlondikePileId::Stock).face_down().is_empty() {
|
if self.pile(KlondikePileId::Stock).face_down().is_empty() {
|
||||||
self.pile_mut(KlondikePileId::Stock).flip_it_and_reverse_it();
|
self.pile_mut(KlondikePileId::Stock)
|
||||||
}else{
|
.flip_it_and_reverse_it();
|
||||||
|
} else {
|
||||||
self.pile_mut(KlondikePileId::Stock).flip_up();
|
self.pile_mut(KlondikePileId::Stock).flip_up();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user