using multiple if' conditional on neopixel LEDs

Hello everyone so i’ve been working on a project, essentially its just simple buttons press’s that can light different colors on a neoPixel, with a fade effect happening when you let go. The issue is, if i press 2 buttons at once, I would expect it to go full white, however the colors go crazy and just flashs really fast between the 2 different colors. Then when i let them go at the same time, the Cyan color goes through the fade but then just comes back on and stays on. They work fine if i press them one by one, it fades out fine. The issue pertains when 2 of them pressed out and let go at the same time. Thank you for any help

#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 3
#define BRIGHTNESS 75
#define PIN A0
//const int LED = A0;
const int Xs = 9;// pins the buttons are attached too
const int A = 4;//
const int B = 5;//
const int X = 8;//
const int Y = 7;//
const int DL = 6;//
int lastButtonState;
int buttonState;
double long aPressed; // values to insert millis value
double long bPressed;
double long xPressed;
double long yPressed;
double long dlPressed;
double long xsPressed;
byte R; // byte variables
byte G;
byte V;


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

  int a = digitalRead(A); //read digital inputs into integers
  int b = digitalRead(B);
  int x = digitalRead(X);
  int y = digitalRead(Y);
  int dl = digitalRead(DL);
  int xs = analogRead(Xs); // 0-360-728
  
void setup() {
  pinMode(A, INPUT);
  pinMode(B, INPUT);
  pinMode(X, INPUT);
  pinMode(Y, INPUT);
  pinMode(DL, INPUT);
  pinMode(Xs, INPUT);
  Serial.begin(9600);
  strip.setBrightness(BRIGHTNESS);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  byte Wheel = 0;
}

void loop() {
  double long Millis = millis();
  int a = digitalRead(A);
  int b = digitalRead(B);
  int x = digitalRead(X);
  int y = digitalRead(Y);
  int dl = digitalRead(DL);
  int xs = analogRead(Xs); // 0-360-728
  Serial.println("Letter b is");
  Serial.println(b);
  Serial.println("Letter x is");
  Serial.println(x);
  Serial.println("-------------------------");
  //rainbowCycle(10);
  
  if (b == 0) //when pressed, turn on LEDs to RED
    {
      bPressed = Millis;
      for (int ibb=0; ibb < 2; ibb++) {
      strip.setPixelColor(ibb, 255, 0, 0);
      }
      strip.show();
    }
  else if (30 + bPressed > Millis) // bPressed will be higher than Millis momentarily, execute color fade
    {
      uint16_t ib, jb;
      for (jb = 255; jb > 0; jb--) {
        for (ib = 0; ib < 2; ib++) {
        strip.setPixelColor(ib, jb, 0, 0);
         }
      strip.show();    
      //Serial.println(j);
      strip.clear();
      }
   } 

  if (x == 0) 
    {
      xPressed = Millis;
      for (int ixx=0; ixx<3; ixx++)
      strip.setPixelColor(ixx, 0, 255, 255);
      strip.show();
    }
  else if (30 + xPressed > Millis)
    {
      uint16_t ix, jx;
      for (jx = 255; jx > 0; jx--) {
        for (ix = 0; ix < 2; ix++) {
        strip.setPixelColor(ix, 0, jx, jx);
         }
      strip.show();    
      //Serial.println(j);
      strip.clear();
      } 
     } 
     strip.clear();
  } 

/////////////////////////////////////
 // functions for future use
////////
void colors(byte n, byte r, byte g, byte b)
{

}

void theaterChase(byte red, byte green, byte blue, int SpeedDelay) {
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < NUM_LEDS; i=i+3) {
        strip.setPixelColor(i+q, red, green, blue);    //turn every third pixel on
      }
      strip.show();  
     
      delay(SpeedDelay);
     
      for (int i=0; i < NUM_LEDS; i=i+3) {
        strip.setPixelColor(i+q, 0,0,0);        //turn every third pixel off
      }
    }
  }
}
///////////////////////////////////

void rainbowCycle(int SpeedDelay) {
  byte *c;
  uint16_t i, j;

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< NUM_LEDS; i++) {
      c=Wheel(((i * 256 / NUM_LEDS) + j) & 255);
      strip.setPixelColor(i, *c, *(c+1), *(c+2));
    }
    strip.show();
    delay(SpeedDelay);
  }
}

byte * Wheel(byte WheelPos) {
  static byte c[3];
 
  if(WheelPos < 85) {
   c[0]=WheelPos * 3;
   c[1]=255 - WheelPos * 3;
   c[2]=0;
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   c[0]=255 - WheelPos * 3;
   c[1]=0;
   c[2]=WheelPos * 3;
  } else {
   WheelPos -= 170;
   c[0]=0;
   c[1]=WheelPos * 3;
   c[2]=255 - WheelPos * 3;
  }

  return c;
}

lets say that this code is about the 2 buttons

int a = digitalRead(A);
  int b = digitalRead(B);

If both buttons are pressed at the same time. the condition of both buttons, will be stored and operated on.

You can do a check, in code, if both buttons are pressed at the same time, your code can skip processing or do a third led light show.

Idahowalker:
lets say that this code is about the 2 buttons

int a = digitalRead(A);

int b = digitalRead(B);




If both buttons are pressed at the same time. the condition of both buttons, will be stored and operated on.

You can do a check, in code, if both buttons are pressed at the same time, your code can skip processing or do a third led light show.

would the could be something like int ab = (digitalRead(B) && digitalRead(A)); ?

If I do add another if with this condition, wont the other 2 if's also work? wouldn't the code go more haywire?

If I do add another if with this condition, wont the other 2 if's also work? wouldn't the code go more haywire?

Test for both being pressed before you test for individual presses and use if/else so that once one test is true the others aren't executed