From 8c0f98b7a7a46f68783e97817e69bdf8aa49aada Mon Sep 17 00:00:00 2001 From: C0d3v Date: Tue, 20 Jan 2026 10:33:32 +0100 Subject: [PATCH] Add easy mode without shuffling --- terminal/puzzle_colorRemember/src/main.cpp | 51 ++++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/terminal/puzzle_colorRemember/src/main.cpp b/terminal/puzzle_colorRemember/src/main.cpp index 034e0bb..d67dc03 100644 --- a/terminal/puzzle_colorRemember/src/main.cpp +++ b/terminal/puzzle_colorRemember/src/main.cpp @@ -97,15 +97,20 @@ bool readButton(uint8_t i) { // ------------------ Neues Spiel ------------------ -void generateNewGame() { +void generateNewGame(bool easy) { - for (uint8_t i = 0; i < 6; i++) solutionOrder[i] = i; + for (uint8_t i = 0; i < 6; i++) + solutionOrder[i] = i; - for (int i = 5; i > 0; i--) { - int j = random(i + 1); - uint8_t t = solutionOrder[i]; - solutionOrder[i] = solutionOrder[j]; - solutionOrder[j] = t; + if (!easy) + { + for (int i = 5; i > 0; i--) + { + int j = random(i + 1); + uint8_t t = solutionOrder[i]; + solutionOrder[i] = solutionOrder[j]; + solutionOrder[j] = t; + } } for (uint8_t i = 0; i < 6; i++) @@ -137,11 +142,15 @@ void generateNewGame() { uint8_t idx[18]; for (uint8_t i = 0; i < 18; i++) idx[i] = i; - for (int i = 17; i > 0; i--) { - int j = random(i + 1); - uint8_t t = idx[i]; - idx[i] = idx[j]; - idx[j] = t; + if (!easy) + { + for (int i = 17; i > 0; i--) + { + int j = random(i + 1); + uint8_t t = idx[i]; + idx[i] = idx[j]; + idx[j] = t; + } } for (uint8_t i = 0; i < 6; i++) @@ -244,7 +253,7 @@ void setup() { if (powerOnState) { - generateNewGame(); + generateNewGame(false); } } @@ -271,7 +280,7 @@ void loop() { // Detecting turn-on if (!powerOnState && digitalRead(PIN_POWER_ON) == HIGH) { - generateNewGame(); + generateNewGame(false); powerOnState = true; } if (!powerOnState) @@ -279,14 +288,18 @@ void loop() { // We are turned-off and stop anything after here return; } - unsigned long now = millis(); - bool trigger = digitalRead(PIN_TRIGGER_SHUFFLE); - if (trigger && !lastTriggerState) { - generateNewGame(); + if (digitalRead(PIN_TRIGGER_SHUFFLE) == HIGH) + { + unsigned long resetTimer = millis(); + while (digitalRead(PIN_TRIGGER_SHUFFLE) == HIGH) + { + delay(10); + } + generateNewGame(millis() - resetTimer > 150); } - lastTriggerState = trigger; + unsigned long now = millis(); for (uint8_t i = 0; i < 18; i++) { bool pressed = readButton(i);