I've a problem with my source code. basically, I tried to move a sprite character in 2D map

here's my warrior class:

```
    class Warrior
{
      private :
              int HP, SP;
              int xPos, yPos;
              int status;
              char *name;
              SDL_Surface *warrior;
              Map m;
      public :
             int atk, def, matk, mdef;
             Warrior(int, int, int, Map);
             int getHP();
             bool isAlive();
             int getSP();
             int getX();
             int getY();
             void setX(int);
             void setY(int);
             void changeStatus(int);
             void drawChar();
             void move();
             void deleteChar();
};
//constructor buat warrior
Warrior::Warrior(int pos, int x, int y, Map _m)
{
      HP = 250;
      SP = 50;
      atk = 75;
      def = 20;
      matk = 15;
      mdef = 5;

      warrior = NULL;
      m = _m;
      status = pos;
      xPos = x;
      yPos = y;

}

bool Warrior::isAlive()
{
     if (HP > 0) return true;
     return false;
}
//buat ngilangin character warrior-nya... 
//timpa ama sprite rumput di coord char-nya
void Warrior::deleteChar()
{
     char path = '0';
     m.drawTile(xPos, yPos, path);
     m.drawTile(xPos, yPos+20, path);

     SDL_Flip (SDL_SCREEN);

}
//buat gambar character
void Warrior::drawChar ()
{     
      switch (status)
      {
             case WARRIOR_LEFT :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_LEFT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_RIGHT :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_RIGHT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_UP :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_UP.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_DOWN :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_DOWN.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;

             case WARRIOR_MOVE_LEFT :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_LEFT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  SDL_Flip(SDL_SCREEN);

                  SDL_Delay (100);
                  deleteChar();
                  status = WARRIOR_LEFT;
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_LEFT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_MOVE_RIGHT :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_RIGHT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  SDL_Flip(SDL_SCREEN);

                  SDL_Delay (100);
                  deleteChar();
                  status = WARRIOR_RIGHT;
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_RIGHT.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_MOVE_UP :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_UP.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  SDL_Flip(SDL_SCREEN);

                  SDL_Delay (100);
                  deleteChar();
                  status = WARRIOR_UP;
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_UP.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
             case WARRIOR_MOVE_DOWN :
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_MOVE_DOWN.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  SDL_Flip(SDL_SCREEN);

                  SDL_Delay (100);
                  deleteChar();
                  status = WARRIOR_DOWN;
                  warrior = IMG_Load ("Sprites/Warrior/WARRIOR_DOWN.png");
                  applySurface (xPos, yPos, warrior, SDL_SCREEN);
                  break;
      }

      SDL_Flip(SDL_SCREEN);
}

int Warrior::getX()
{
    return xPos;
}

int Warrior::getY()
{
    return yPos;
}

void Warrior::setX(int x)
{
     xPos = x;
}

void Warrior::setY(int y)
{
     yPos = y;
}

int Warrior::getHP()
{
    return HP;
}

int Warrior::getSP()
{
    return SP;
}

void Warrior::changeStatus(int _status)
{
     status = _status;
}
//jalannya karakter
void Warrior::move()
{
        if (event.type == SDL_KEYDOWN)
        {  
           //hilangkan char-nya dolo
             deleteChar();
             switch (event.key.keysym.sym)
             {
              case SDLK_UP : 
                   // nge-cek collision dari coord peta-nya (Map m)
                   if (m.map[m.getLevel()][(yPos/20)-1][xPos] == '0')
                   {
                      yPos -= 20;
                      status = WARRIOR_MOVE_UP;
                   }
                   break;
              case SDLK_DOWN :
                   if (m.map[m.getLevel()][(yPos/20)+1][xPos/20] == '0')
                   {
                      yPos += 20;
                      status = WARRIOR_MOVE_DOWN;
                   }
              case SDLK_LEFT :
                   if (m.map[m.getLevel()][yPos/20][(xPos/20)-1] == '0')
                   {
                      xPos -= 20;
                      status = WARRIOR_MOVE_LEFT;
                   }
              case SDLK_RIGHT :
                   if (m.map[m.getLevel()][yPos/20][(xPos/20)+1] == '0')
                   {
                      xPos += 20;
                      status = WARRIOR_MOVE_RIGHT;
                   }
              }
           //bru di-gambar
           drawChar();
           SDL_Delay (100);    
        }                  
}

```

The problem is I can't move it, and the program wasn't responding at all... I've checked all the sprite images and it works fine.