Arcade button, arcade joystick, custom functions, and the serial monitor

Um, excuse me, please help me. I need the correct software to read the joystick after I pressed the button with custom functions. I have tried and it seems to read the joystick just fine, but it can skip over the button. Please, make it to when I press the button, it will then read the joystick, instead of skipping the button. And another thing is that the serial monitor keeps printing "Please, press the 'Start' button," even after I pressed the start button. Thanks, here's the hardware and software:

Hardware:

[/url][/img]

https://www.ebay.com/itm/Arcade-Joystick-Black-8-Way-Stick-for-Arcade-Machine-Games-Mame-Jamma-Kit-Parts/223248892981?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

https://www.ebay.com/itm/Arcade-Joystick-Black-8-Way-Stick-for-Arcade-Machine-Games-Mame-Jamma-Kit-Parts/223248892981?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Software:

#define U 2
#define D 3
#define L 4
#define R 5
#define button 7

void setup() {
Serial.begin(9600);
pinMode(U, INPUT_PULLUP);
pinMode(D, INPUT_PULLUP);
pinMode(L, INPUT_PULLUP);
pinMode(R, INPUT_PULLUP);
}

void loop() {
switch(digitalRead(button)){
case 0 :
readinputs();
break;
case 1 : Serial.println("Please press the 'Start' button");
delay(1000);
break; }}

void readinputs(){

if(digitalRead(U) == LOW){
Serial.println("Forward");
delay(1000);
}

if(digitalRead(D) == LOW){
Serial.println("Backwards");
delay(1000);
}

if(digitalRead(L) == LOW){
Serial.println("Left");
delay(1000);
}

if(digitalRead(R) == LOW){
Serial.print("Right");
delay(1000);
}}

You missed to set the mode of button, but this should not be the problem.

What happens if you do nothing in case 1? Actually you have to press the button for at least one second before it's tested again.

Try to get rid of all delay()s, learn how to debounce switches.

You should look into 'blink without delay', then you can use time to debounce your buttons instead of a 1 second delay where nothing else can occur.
Something like this.
Have a timer for each button.
When a button press is detected, save the time of the press.
Compare to the last time it was pressed - if more than say 100mS, allow the Serial.print to occur (for up to 10 presses a second). If the time since the prior press is less than 100mS, do nothing.
Then a user can press & hold, and see 10 prints a second.
Or you can make it so that a release is required before the next press is recognized.