     reset_buttons_flagClick();
     digitalWrite(field[x][y], HIGH);
     digitalWrite(field[xPrev][yPrev], LOW);
-  }
-
-  void start_game()
-  {
+}
+
+void start_game()
+{
     game = 999;
     lcd.init();
     reset_buttons_flagClick;
     for (int j = random(100, 1000); j > 0; j = j - 100)
     {
-      for (int i = 2; i <= 13; i++)
-      {
+        for (int i = 2; i <= 13; i++)
+        {
             // init rgb leds
-        digitalWrite(i, HIGH);
-      }
-      delay(j);
-      for (int i = 2; i <= 13; i++)
-      {
+            digitalWrite(i, HIGH);
+        }
+        delay(j);
+        for (int i = 2; i <= 13; i++)
+        {
             // init rgb leds
             // lcd.setCursor(12, 1); lcd.print(analogRead(b11));
             // lcd.setCursor(15, 1); lcd.print(analogRead(b21));
-        digitalWrite(i, LOW);
-      }
-      delay(j);
-      if (button11.flagClick == 1 && button21.flagClick == 1)
-      {
-        lcd.setCursor(0, 0);
-        lcd.print("Both plrs false start!");
-        return;
-      }
-      else
-        if (button21.flagClick == 1)
-        {
-          lcd.setCursor(0, 0);
-          lcd.print("Red plr false start! Green plr wins!");
-          game = GAME_PERFORMED;
-          newxy(5, 2, GREENS);
-          return;
+            digitalWrite(i, LOW);
+        }
+        delay(j);
+        if (button11.flagClick == 1 && button21.flagClick == 1)
+        {
+            lcd.setCursor(0, 0);
+            lcd.print("Both plrs false start!");
+            return;
         }
         else
-          if (button11.flagClick == 1)
-          {
-            lcd.setCursor(0, 0);
-            lcd.print("Green plr false start! Red plr wins!");
-            game = GAME_PERFORMED;
-            newxy(6, 2, REDS);
-            return;
-          }
-        }
-        tone(SPEAKER_PIN, 3000, 250);
-        reset_buttons_flagClick;
-        while (1)
-        {
-          if (button11.flagClick == 1)
-          {
+            if (button21.flagClick == 1)
+            {
+                lcd.setCursor(0, 0);
+                lcd.print("Red plr false start! Green plr wins!");
+                game = GAME_PERFORMED;
+                newxy(5, 2, GREENS);
+                return;
+            }
+        else
+            if (button11.flagClick == 1)
+            {
+                lcd.setCursor(0, 0);
+                lcd.print("Green plr false start! Red plr wins!");
+                game = GAME_PERFORMED;
+                newxy(6, 2, REDS);
+                return;
+            }
+    }
+    tone(SPEAKER_PIN, 3000, 250);
+    reset_buttons_flagClick;
+    while (1)
+    {
+        if (button11.flagClick == 1)
+        {
             lcd.setCursor(0, 0);
             lcd.print("Green plr wins!");
             game = GAME_PERFORMED;
             newxy(5, 2, GREENS);
             return;
-          }
-          else
+        }
+        else
             if (button21.flagClick == 1)
             {
-              lcd.setCursor(0, 0);
-              lcd.print("Red plr wins!");
-              game = GAME_PERFORMED;
-              newxy(6, 2, REDS);
-              return;
+                lcd.setCursor(0, 0);
+                lcd.print("Red plr wins!");
+                game = GAME_PERFORMED;
+                newxy(6, 2, REDS);
+                return;
             }
-          }
-        }
-
-        void in_game()
-        {
-          currentMillis = millis();
-          if (!ballkick && ((currentMillis - previousMillis) >= 3000))
-          {
-            game = GAME_OFFSIDE;
+    }
+}
+
+void in_game()
+{
+    currentMillis = millis();
+    if (!ballkick && ((currentMillis - previousMillis) >= 3000))
+    {
+        game = GAME_OFFSIDE;
+        return;
+    }
+    else
+        if (ballkick && ((currentMillis - previousMillis) >= 300))
+        {
+            newxy(x + x - xPrev, y + y - yPrev, vector);
             return;
-          }
-          else
-            if (ballkick && ((currentMillis - previousMillis) >= 300))
-            {
-              newxy(x + x - xPrev, y + y - yPrev, vector);
-              return;
-            }
-            if ((button14.flagClick == 1) || (button24.flagClick == 1))
-            {
-              newxy(x + vector, y, vector);
-              ballkick = true;
-            }
-            if ((button13.flagClick == 1) || (button23.flagClick == 1))
-            {
-              newxy(x - vector, y, vector);
-              ballkick = true;
-            }
-            if ((button12.flagClick == 1) || (button22.flagClick == 1))
-            {
-              newxy(x, y + vector, vector);
-              ballkick = true;
-            }
-            if ((button15.flagClick == 1) || (button25.flagClick == 1))
-            {
-              newxy(x, y - vector, vector);
-              ballkick = true;
-            }
-          }
-
-          void loop()
-          {
+        }
+    if ((button14.flagClick == 1) || (button24.flagClick == 1))
+    {
+        newxy(x + vector, y, vector);
+        ballkick = true;
+    }
+    if ((button13.flagClick == 1) || (button23.flagClick == 1))
+    {
+        newxy(x - vector, y, vector);
+        ballkick = true;
+    }
+    if ((button12.flagClick == 1) || (button22.flagClick == 1))
+    {
+        newxy(x, y + vector, vector);
+        ballkick = true;
+    }
+    if ((button15.flagClick == 1) || (button25.flagClick == 1))
+    {
+        newxy(x, y - vector, vector);
+        ballkick = true;
+    }
+}
+
+void loop()
+{
     // put your main code here, to run repeatedly:
-            switch (game)
-            {
-              case GAME_START:
-              start_game();
+    switch (game)
+    {
+        case GAME_START:
+            start_game();
             /*#define GAME_SIDE_OUT 2
             #define GAME_END_OUT 3
             #define GAME_OFFSIDE 4
             #define GAME_GOAL 9
             */
-              break;
-              case GAME_PERFORMED:
-              in_game();
+            break;
+        case GAME_PERFORMED:
+            in_game();
             // выполняется когда  var равно 2
-              break;
-              default:
+            break;
+        default:
         // выполняется, если не выбрана ни одна альтернатива
         // default необязателен
-              for (int i = 2; i <= 13; i++)
-              {
-                lcd.setCursor(2, 1);
-                lcd.print(millis() / 1000);
+        for (int i = 2; i <= 13; i++)
+        {
+            lcd.setCursor(2, 1);
+            lcd.print(millis() / 1000);
             digitalWrite(i, HIGH); // turn the LED on (HIGH is the voltage level)
             delay(1000); // wait for a second
             digitalWrite(i, LOW); // turn the LED off by making the voltage LOW
             delay(1000); // wait for a second
-          }
-          for (int i = 22; i <= 45; i++)
-          {
+        }
+        for (int i = 22; i <= 45; i++)
+        {
             lcd.setCursor(2, 1);
             lcd.print(millis() / 1000);
             digitalWrite(i, HIGH); // turn the LED on (HIGH is the voltage level)

l3b = L3B_PIN, l4r = L4R_PIN, l4g = L4G_PIN, l4b = L4B_PIN;
const int field[12][5] =
{
  {
    - 1, -1, -1, -1, -1
  },
  {
    - 1, 1, l108, 3, -1
  },
  {
    - 1, l210, l204, l201, -1
  },
  {
    - 1, l103, l107, l112, -1
  },
  {
    - 1, l211, l205, l202, -1
  },
  {
    - 1, -1, l106, -1, -1
  },
  {
    - 1, -1, l206, -1, -1
  },
  {
    - 1, l102, l105, l111, -1
  },
  {
    - 1, l212, l207, l203, -1
  },
  {
    - 1, l101, l104, l110, -1
  },
  {
    - 1, 2, l208, 4, -1
  },
  {
    - 1, -1, -1, -1, -1
  }
};

int game = GAME_START,

#define L4B_PIN 13
class Button
{
    public:
        Button(byte pin, byte timeButton); // конструктор
        boolean flagPress; // признак кнопка в нажатом состоянии
        boolean flagClick; // признак нажатия кнопки (клик)
        boolean scanState(); // метод проверки состояние сигнала
        void filterAvarage(); // метод фильтрации сигнала по среднему значению
        void setPinTime(byte pin, byte timeButton); // метод установки номера вывода и времени (числа) подтверждения
    private:
        byte _buttonCount; // счетчик подтверждений состояния кнопки
        byte _timeButton; // время подтверждения состояния кнопки
        byte _pin; // номер вывода кнопки
};

// метод фильтрации сигнала по среднему значению
// при сигнале низкого уровня flagPress= true
// при сигнале высокого уровня flagPress= false
// при изменении состояния с высокого на низкий flagClick= true
void Button::filterAvarage()
{
    if (flagPress != digitalRead(_pin))
    {
        // состояние кнопки осталось прежним
        if (_buttonCount != 0)
            _buttonCount--; // счетчик подтверждений - 1 с ограничением на 0
    }
    else
    {
        // состояние кнопки изменилось
        _buttonCount++; // +1 к счетчику подтверждений
        if (_buttonCount >= _timeButton)
