LCD GAME IR REMOTE

Hello!!!
I have an arduino mega, a lcd 16*2 and I have a game with a hidden onion.Have a look in the code:

#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
const int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int lcd_position_array[4] = {1, 5, 10, 14};


void setup()
{
  Serial.begin(9600);
  lcd.begin();
  lcd.backlight();
  randomSeed(analogRead(A0));
  lcd.createChar(3, sad);
  lcd.createChar(4, smile);
  lcd.createChar(5, onion);
  irrecv.enableIRIn();
  irrecv.blink13(true);

void loop()
{
if (results.value == 0xFFE01F)  //number 7...
        {
          int chosen_position;
          int pos;
          buttonIsPressed = false;

          lcd.setCursor(0, 1);
          lcd.print("( ) ( )  ( ) ( )");

          for (int j = 0; j < 140; j++)
          {
            pos = random(0, 4);
            lcd.setCursor(lcd_position_array[pos], 1);
            lcd.write(byte(5));
            delay(30);
            lcd.setCursor(lcd_position_array[pos], 1);
            lcd.print(" ");
            delay(30);
          }
          Serial.println(pos);
          do
          {
            if (results.value == 0xFFA25D)  //number 1
            {
              buttonIsPressed = true;
              chosen_position = 0;
            }
            else if (results.value == 0xFF629D)  //number 2
            {
              buttonIsPressed = true;
              chosen_position = 1;
            }
            else if (results.value == 0xFFE21D)  //number 3
            {
              buttonIsPressed = true;
              chosen_position = 2;
            }
            else if (results.value == 0xFF22DD)  //number 4
            {
              buttonIsPressed = true;
              chosen_position = 3;
            }
          }
          while (!buttonIsPressed);
          Serial.println(chosen_position);
          buttonIsPressed = false;
          delay(5);
          lcd.setCursor(0, 1);
          lcd.print("( ) ( )  ( ) ( )");
          lcd.setCursor(lcd_position_array[pos], 1);
          lcd.write(byte(5));

          if (pos == chosen_position)
          {
            lcd.setCursor(3, 0);
            lcd.write(" YOU WON !!!");
            lcd.setCursor(0, 0);
            lcd.write(byte(4));
            lcd.setCursor(15, 0);
            lcd.write(byte(4));
          }
          else
          {
            lcd.setCursor(3, 0);
            lcd.write(" YOU LOST !!!");
            lcd.setCursor(0, 0);
            lcd.write(byte(3));
            lcd.setCursor(15, 0);
            lcd.write(byte(3));
          }
          delay(2000);
          lcd.clear();
        }
}

I press number 7 of my IR remote control ,then the program goes to for-loop(ok),but the do-while is my problem ,because when I press 1 or 2 or 3 or 4 ,nothing happens.
Serial.print(pos) ---> I get one random number between 0-3 ,but
Serial.print(chosen_position) ---> I get nothing as I said...

I don't know why this happens,so I need your help...

Thanks!!!

Correction of code:

#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
const int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int lcd_position_array[4] = {1, 5, 10, 14};


void setup()
{
  Serial.begin(9600);
  lcd.begin();
  lcd.backlight();
  randomSeed(analogRead(A0));
  lcd.createChar(3, sad);
  lcd.createChar(4, smile);
  lcd.createChar(5, onion);
  irrecv.enableIRIn();
  irrecv.blink13(true);

void loop()
{
 if (irrecv.decode(&results))
  {
    irrecv.resume();
if (results.value == 0xFFE01F)  //number 7...
        {
          int chosen_position;
          int pos;
          buttonIsPressed = false;

          lcd.setCursor(0, 1);
          lcd.print("( ) ( )  ( ) ( )");

          for (int j = 0; j < 140; j++)
          {
            pos = random(0, 4);
            lcd.setCursor(lcd_position_array[pos], 1);
            lcd.write(byte(5));
            delay(30);
            lcd.setCursor(lcd_position_array[pos], 1);
            lcd.print(" ");
            delay(30);
          }
          Serial.println(pos);
          do
          {
            if (results.value == 0xFFA25D)  //number 1
            {
              buttonIsPressed = true;
              chosen_position = 0;
            }
            else if (results.value == 0xFF629D)  //number 2
            {
              buttonIsPressed = true;
              chosen_position = 1;
            }
            else if (results.value == 0xFFE21D)  //number 3
            {
              buttonIsPressed = true;
              chosen_position = 2;
            }
            else if (results.value == 0xFF22DD)  //number 4
            {
              buttonIsPressed = true;
              chosen_position = 3;
            }
          }
          while (!buttonIsPressed);
          Serial.println(chosen_position);
          buttonIsPressed = false;
          delay(5);
          lcd.setCursor(0, 1);
          lcd.print("( ) ( )  ( ) ( )");
          lcd.setCursor(lcd_position_array[pos], 1);
          lcd.write(byte(5));

          if (pos == chosen_position)
          {
            lcd.setCursor(3, 0);
            lcd.write(" YOU WON !!!");
            lcd.setCursor(0, 0);
            lcd.write(byte(4));
            lcd.setCursor(15, 0);
            lcd.write(byte(4));
          }
          else
          {
            lcd.setCursor(3, 0);
            lcd.write(" YOU LOST !!!");
            lcd.setCursor(0, 0);
            lcd.write(byte(3));
            lcd.setCursor(15, 0);
            lcd.write(byte(3));
          }
          delay(2000);
          lcd.clear();
        }
}
}

Isn't the resume the last thing you should do?

What do you mean?

Any help,please...

Can anyone help me about my problem,please?

Guys I have a problem here.Can anyone give me an advice?