Buttons set up same way running on different signals

Hello! I have a program here that is a game where a man chases a ball and get points. I have 4 pushbuttons set up: up, down, left, right, and select. They are all set up to INPUT_PULLUP, and are connected to GND and signalling that to the input. That way, they will be HIGH when they are pressed. I have all of them set up the same way, but the select button only activates when it is LOW. Why is this?

#include <LiquidCrystal.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4);
LiquidCrystal lcd1(7, 8, 9, 10, 11, 13);
int x = 0;
int y = 0;
int up = 3;
int right = 2;
int down = 5;
int left = 4;
short bx;
short by;
int ms = 0;
int wm = 0;
int tl = 0;
int score = 0;
int goal = 0;
int gameplay = false;
int difficulty = 0;
int select = 12;
byte Man[] = {
  B00100,
  B01010,
  B00100,
  B01110,
  B10101,
  B00100,
  B01010,
  B10001
};
byte ball[] = {
  B00000,
  B00000,
  B00000,
  B01110,
  B01110,
  B00000,
  B00000,
  B00000
};

void setup() {
  Serial.begin(9600);
pinMode(up, INPUT_PULLUP);
pinMode(left, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
pinMode(right, INPUT_PULLUP);
pinMode(select, INPUT_PULLUP);

lcd1.begin(16,2);
  lcd.init();
lcd.backlight();
lcd.createChar(1, Man);
lcd.createChar(2, ball);
  lcd.setCursor(x,y);
lcd.write(1);
randomSeed(analogRead(0));
bx = random(0, 20);
by = random(0, 4);

}
void loop() {
  while (gameplay == false){
  lcd.setCursor(0,0);
  lcd.print("Choose Difficulty:");
  lcd.setCursor(0,2);
  lcd.print("<                  >");
  if (difficulty == 0 or difficulty == 2){
   lcd.setCursor(8,2);
   if(difficulty == 0){
    lcd.print("Easy");
   }

   if(difficulty == 2){
    lcd.print("Hard");
   }
  }
    if (difficulty == 1 or difficulty == 3){
   lcd.setCursor(7,2);
   if(difficulty == 1){
    lcd.print("Medium");
   }

   if(difficulty == 3){
    lcd.print("Expert");
   }
  }
  if(digitalRead(left) == HIGH){
    if(difficulty != 0){
      difficulty--;
    }
    else{
      difficulty = 3;
    }
  }
    if(digitalRead(right) == HIGH){
    if(difficulty != 3){
      difficulty++;
    }
    else{
      difficulty = 0;
    }
    }
    if (digitalRead(select) == LOW){
      if(difficulty == 0){
        tl = 29;
        goal = 10;
      }
      if(difficulty == 1){
        tl = 59;
        goal = 30;
      }
      if(difficulty == 2){
        tl = 89;
        goal = 45;
      }
      if(difficulty == 3){
        tl = 119;
        goal = 75;
      }
      gameplay = true;
    }
  
  delay(100);
  }
lcd.clear();

  lcd.setCursor(x,y);
lcd.write(1);
lcd.setCursor( bx, by);
lcd.write(2);
if(digitalRead(down) == HIGH and y != 4){
y++;

}

if(digitalRead(up) == HIGH and y > 0){
y--;



}

if(digitalRead(left) == HIGH and x != -1){
x--;



}

if(digitalRead(right) == HIGH and x < 19){
x++;


}
if(x == bx and y == by){
 tone(6, 1975.53, 100);}
delay(100);
if(x == bx and y == by){
 tone(6, 2637.02, 100);
 score++;
 bx = random(0, 20);
by = random(0, 4);
}
ms++;
if(ms == 10){
  ms = 0;
  tl--;
}

Serial.println( x );
Serial.println( y );
lcd1.setCursor(0,0);
lcd1.print("Score:" );
lcd1.print(score);
lcd1.print("/");
lcd1.print(goal);
lcd1.setCursor(0,1);
lcd1.print("Time:");
lcd1.print(tl);
lcd1.print(".");
lcd1.print(ms);
while(goal == score or tl == 0 and ms == 0){
  if(score == goal){
  if(wm == 0){
    wm++;
    lcd.clear();
    lcd1.clear();
  }
    lcd.setCursor(0,0);
    lcd.print("LETSS GOOO");
    lcd1.setCursor(0,0);
    lcd1.print("YEAH YOU WIN YOU ARE COOL");
    
  }
  else{
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("YOU LOSE HAHA");
     lcd1.setCursor(0,0);
    lcd1.print("HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAH");
  }
}
}

Think about what you just said. They float at HIGH and then the button connects them to ground when pressed. grounding the pin... To ground? Zero?

-jim lee

Well then why do they Signal at HIGH?

Ah, thought you meant they all select at LOW. Sorry.

-jim lee

They are all set up to INPUT_PULLUP, and are connected to GND and signalling that to the input. That way, they will be HIGH when they are pressed

For a pin with pinMode as INPUT_PULLUP and with a button connected to ground to read high when pressed, means it must be an NC normally closed one, so grounded when not pressed.

but the select button only activates when it is LOW

... means that it must be different from the others and be NO normally open; ie closed when pressed and grounded