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

    button23.flagClick = 0;
    button24.flagClick = 0;
    button25.flagClick = 0;
  }

  void newxy(int _x, int _y, int _vector)
  {
    xPrev = x;
    yPrev = y;
    vectorPrev = vector;

    reset_buttons_flagClick();
    digitalWrite(field[x][y], HIGH);
    digitalWrite(field[xPrev][yPrev], LOW);
}

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++)
        {
            // init rgb leds
            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;
            }
        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
            if (button21.flagClick == 1)
            {
                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;
        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()
{
    // put your main code here, to run repeatedly:
    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();
            // выполняется когда  var равно 2
            break;
        default:
        // выполняется, если не выбрана ни одна альтернатива
        // default необязателен
        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++)
        {
            lcd.setCursor(2, 1);
            lcd.print(millis() / 1000);
            digitalWrite(i, HIGH); // turn the LED on (HIGH is the voltage level)
