Advertisement
Guest User

Untitled

a guest
Sep 15th, 2022
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | Gaming | 0 0
  1. #define DELAY_MS    700
  2. #define MAX_CLICKS  100
  3.  
  4. void start_delay();
  5. void correct();
  6. void mistake();
  7.  
  8. byte click_count = 1;
  9. bool is_delay = false;
  10. uint32_t delay_start_ms = 0;
  11.  
  12.  
  13. void setup() {
  14.   setColor(BLUE);
  15. }
  16.  
  17. void loop() {
  18.   if (is_delay) {
  19.     if (millis() - delay_start_ms >= DELAY_MS) {
  20.       is_delay = false;
  21.       setColor((click_count == 1) ? BLUE : YELLOW);
  22.  
  23.       // ignore clicks performed during the delay
  24.       buttonLongPressed();
  25.       buttonSingleClicked();
  26.       buttonDoubleClicked();
  27.       buttonMultiClicked();
  28.     }
  29.   } else {
  30.     if (buttonLongPressed())
  31.       mistake();
  32.     else if (buttonSingleClicked()) {
  33.       if (click_count == 1)
  34.         correct();
  35.       else
  36.         mistake();
  37.     } else if (buttonDoubleClicked()) {
  38.       if (click_count == 2)
  39.         correct();
  40.       else
  41.         mistake();
  42.     } else if (buttonMultiClicked()) {
  43.       if (click_count == buttonClickCount())
  44.         correct();
  45.       else
  46.         mistake();
  47.     }
  48.   }
  49. }
  50.  
  51. void start_delay() {
  52.   delay_start_ms = millis();
  53.   is_delay = true;
  54. }
  55.  
  56. void correct() {
  57.   setColor(GREEN);
  58.   click_count++;
  59.   if (click_count > MAX_CLICKS)
  60.     click_count = 1;
  61.   start_delay();
  62. }
  63.  
  64. void mistake() {
  65.   setColor(RED);
  66.   if (click_count > 1)
  67.     click_count /= 2;
  68.   start_delay();
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement