From 2cfb171ecefe8939d394e29926fbc86ef200ef95 Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Sat, 7 Dec 2024 21:50:08 -0800 Subject: [PATCH] basic set checkingcargo run --- src/play.rs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/play.rs b/src/play.rs index b2820b9..2c5b65f 100644 --- a/src/play.rs +++ b/src/play.rs @@ -33,7 +33,7 @@ pub(crate) fn toggle_selected( } } -pub(crate) fn check_set(trigger: Trigger>, query: Query<&Card, With>) { +pub(crate) fn check_set(_trigger: Trigger>, query: Query<&Card, With>) { let mut cards = query.iter(); if cards.len() == 3 { let (a, b, c) = ( @@ -41,7 +41,7 @@ pub(crate) fn check_set(trigger: Trigger>, query: Query<&Card, Wi cards.next().unwrap(), cards.next().unwrap(), ); - _is_set((a, b, c)); + info!("Is set: {}", is_set((a, b, c))); } else if cards.len() > 3 { info!("Too many cards!") } else if cards.len() < 3 { @@ -49,6 +49,22 @@ pub(crate) fn check_set(trigger: Trigger>, query: Query<&Card, Wi } } -fn _is_set((_a, _b, _c): (&Card, &Card, &Card)) -> bool { - todo!() +fn is_set((a, b, c): (&Card, &Card, &Card)) -> bool { + let color = { + ((a.color == b.color) && (b.color == c.color) && (c.color == a.color)) + || ((a.color != b.color) && (b.color != c.color) && (c.color != a.color)) + }; + let number = { + ((a.number == b.number) && (b.number == c.number) && (c.number == a.number)) + || ((a.number != b.number) && (b.number != c.number) && (c.number != a.number)) + }; + let pattern = { + ((a.pattern == b.pattern) && (b.pattern == c.pattern) && (c.pattern == a.pattern)) + || ((a.pattern != b.pattern) && (b.pattern != c.pattern) && (c.pattern != a.pattern)) + }; + let shape = { + ((a.shape == b.shape) && (b.shape == c.shape) && (c.shape == a.shape)) + || ((a.shape != b.shape) && (b.shape != c.shape) && (c.shape != a.shape)) + }; + color && number && pattern && shape }