Order of button Button Push

I am having difficulty trying to get the below code to work the way I would like.
Within the “Main Game / Switch / Case 1” I have 2 lights that come on at the same time. I would like for the buttons Button1Push() and Button2Push() to turn the lights off. Right now it works but you have to press the buttons in order. Is there a way to program it to where the order doesn’t matter?

Button1Push() then Button2Push() or Button2Push() then Button1Push().

#include <LiquidCrystal.h>


int led = 13;
int button = 10;

int led2 = 9;
int button2 = 8;

int led3 = 7;
int button3 = 6;


int randomWait = 0;
bool pressed = false;
float reactionTime = 0;
int state = 0;

int button1Val = 0;
int button2Val = 0;
 int button3Val = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  pinMode(led, OUTPUT);
  pinMode(button, INPUT);
  
  pinMode(led2, OUTPUT);
  pinMode(button2, INPUT);
  
  pinMode(led3, OUTPUT);
  pinMode(button3, INPUT);
   
 
  randomSeed(analogRead(0));
  Serial.begin(9600);
  lcd.begin(16, 2);
}


bool Button1Push(){
   
   button1Val = digitalRead(button);
   if(button1Val == HIGH){
    pressed = true;
       digitalWrite(led, LOW);
     state++;
     if(state >= 3){
      state = 0;
     }
     
    return true;
   } else {
     pressed = false;
     return false;
   }
}

bool Button2Push(){
   
   button2Val = digitalRead(button2);
   if(button2Val == HIGH){
    pressed = true;
     digitalWrite(led2, LOW);

     state++;
     if(state >= 3){
      state = 0;
     }
     
    return true;
   } else {
     pressed = false;
     return false;
   }
}

bool Button3Push(){
  
   button3Val = digitalRead(button3);
   if(button3Val == HIGH){
    pressed = true;
       digitalWrite(led3, LOW);
     state++;
     if(state >= 3){
      state = 0;
     }
     
    return true;
   } else {
     pressed = false;
     return false;
   }
}



void MainGame(){
  
  int targetSelect = random(1, 4);
  
  lcd.clear();
  lcd.print("GO!");
  unsigned long timebegin = 0; 

  //generate random waiting time for first Target
  randomWait = random(5, 3000);
  Serial.println("WaitTime: ");
  Serial.println(randomWait);
  delay(randomWait);

  //after waiting time the LED lights up
switch(targetSelect){

//***********Target 1 and 2*******Case 1*******This CASE********************************
    case 1 :      
  digitalWrite(led,HIGH);
  digitalWrite(led2, HIGH);
    Serial.println("Target 1 and 2");
while(Button1Push() == false || Button2Push() == false){
    Button1Push ();
    Button2Push ();
    delay(1);
  reactionTime++;  
  delay(1);
  }
break;
//Target 2  
  case 2 :   
    digitalWrite(led2,HIGH);
    Serial.println ("Target 2");
while(Button2Push() == false){
    Button2Push();
    reactionTime++;
  delay(1);
    }
break;
//Target3
    case 3 :      
    digitalWrite(led3,HIGH);
    Serial.println ("Target 3");
while(Button3Push() == false){
    Button3Push();
    reactionTime++;
    delay(1);
}
break; 


//end of switch        
  }    
  //writes the score to the seral output
  Serial.println("Reaction time: ");
  Serial.println(reactionTime/1000);

   
//end of main game
}



void PrintScore(){
  lcd.clear();
  //prints the score to the lcd
  lcd.setCursor(0, 0);
  lcd.print("Reaction: ");
  lcd.setCursor(0, 1);
  lcd.print(reactionTime/1000);
  lcd.print("  seconds");
delay(1500);
}



void loop() {
 // if(state == 0){
  //  ButtonPush();
    delay(50);
    
    //reset for the new game
  reactionTime = 0;
    pressed = false;
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Get Ready!");
    delay(500);
    lcd.setCursor(0, 1);
    lcd.print("Get Set!");
    delay(500);
    
MainGame();
PrintScore();
Button1Push();
Button2Push();
Button3Push();
delay(250);

}

When each button is pressed, set a boolean value to true. When both values are 'true', reset the leds and reset the booleans to false.

You seem to be calling the ButtonXPush() functions all over the place. Just read the buttons once at the start of loop() and save the values. Then use the saved values whenever a decision is needed. And, of course, ensure that loop() repeats very frequently.

WHILE should generally be avoided as it blocks the Arduino until it completes. Use IF and allow loop() to do the repetition.

The delay() function should also be avoided for the same reason if you want a responsive program. The demo Several Things at a Time illustrates the use of millis() to manage timing without blocking.

I reckon if you have read all the buttons at the start of loop() you will have no problem with a piece of code that decides to do something if either of them has been pressed.

...R