From 71b25d2465c4ea1f98297436ad4c50e44e4b196d Mon Sep 17 00:00:00 2001 From: Malte Schmitz <malte@schmitz-sh.de> Date: Sun, 29 May 2022 18:08:15 +0200 Subject: [PATCH] Add single player --- src/main.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f5e556b..f5ce140 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,6 +59,7 @@ void loop() { int position = 0; int greenLength = 10; +bool singlePlayer = true; #define STATE_PAUSE 0 #define STATE_FORWARD 1 @@ -74,8 +75,14 @@ void show() { for (int i = 0; i < greenLength; i++) { pixels.setPixelColor(i, 0x00FF00); } - for (int i = NEOPIXEL_LEN - greenLength - 1; i < NEOPIXEL_LEN; i++) { - pixels.setPixelColor(i, 0x00FF00); + if (singlePlayer) { + for (int i = NEOPIXEL_LEN / 2; i < NEOPIXEL_LEN; i++) { + pixels.setPixelColor(i, 0x0000FF); + } + } else { + for (int i = NEOPIXEL_LEN - greenLength - 1; i < NEOPIXEL_LEN; i++) { + pixels.setPixelColor(i, 0x00FF00); + } } pixels.setPixelColor(position, 0xFFFFFF); } @@ -149,6 +156,8 @@ void handleButton() { last_internal_button_state = current_internal_button_state; last_external_button_state = current_external_button_state; + + singlePlayer = digitalRead(EXTERNAL_BUTTON_PIN_NO) == LOW; } void handleExternalLostAnimation() { @@ -195,10 +204,18 @@ void handleStep() { break; case STATE_FORWARD: position = position + 1; - if (position > NEOPIXEL_LEN - 1) { - externalMissed(); - } else { + if (singlePlayer) { + if (position > NEOPIXEL_LEN / 2 - 1) { + position = NEOPIXEL_LEN / 2 - 2; + state = STATE_BACKWARD; + } show(); + } else { + if (position > NEOPIXEL_LEN - 1) { + externalMissed(); + } else { + show(); + } } break; case STATE_BACKWARD: -- GitLab