Add easy mode without shuffling

This commit is contained in:
C0d3v 2026-01-20 10:33:32 +01:00
parent 92a2d39e49
commit 8c0f98b7a7

View File

@ -97,15 +97,20 @@ bool readButton(uint8_t i) {
// ------------------ Neues Spiel ------------------ // ------------------ 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--) { if (!easy)
int j = random(i + 1); {
uint8_t t = solutionOrder[i]; for (int i = 5; i > 0; i--)
solutionOrder[i] = solutionOrder[j]; {
solutionOrder[j] = t; 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++) for (uint8_t i = 0; i < 6; i++)
@ -137,11 +142,15 @@ void generateNewGame() {
uint8_t idx[18]; uint8_t idx[18];
for (uint8_t i = 0; i < 18; i++) idx[i] = i; for (uint8_t i = 0; i < 18; i++) idx[i] = i;
for (int i = 17; i > 0; i--) { if (!easy)
int j = random(i + 1); {
uint8_t t = idx[i]; for (int i = 17; i > 0; i--)
idx[i] = idx[j]; {
idx[j] = t; 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++) for (uint8_t i = 0; i < 6; i++)
@ -244,7 +253,7 @@ void setup() {
if (powerOnState) if (powerOnState)
{ {
generateNewGame(); generateNewGame(false);
} }
} }
@ -271,7 +280,7 @@ void loop() {
// Detecting turn-on // Detecting turn-on
if (!powerOnState && digitalRead(PIN_POWER_ON) == HIGH) if (!powerOnState && digitalRead(PIN_POWER_ON) == HIGH)
{ {
generateNewGame(); generateNewGame(false);
powerOnState = true; powerOnState = true;
} }
if (!powerOnState) if (!powerOnState)
@ -279,14 +288,18 @@ void loop() {
// We are turned-off and stop anything after here // We are turned-off and stop anything after here
return; return;
} }
unsigned long now = millis();
bool trigger = digitalRead(PIN_TRIGGER_SHUFFLE); if (digitalRead(PIN_TRIGGER_SHUFFLE) == HIGH)
if (trigger && !lastTriggerState) { {
generateNewGame(); 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++) { for (uint8_t i = 0; i < 18; i++) {
bool pressed = readButton(i); bool pressed = readButton(i);