As in
Code:
int movement(struct zombie *z)
{    
    if(key[KEY_UP]){
        if ( z->y>=480) { // checks height
            z->y = 0;                              
        } else {                                 
            z->y++;
        }
    }
}
Which you would call with
movement( &zombieS );

Then do the screen refresh.

How does allegro read the keyboard? Things like key[KEY_UP] look like array references, and are not going to be reading each successive key press (or key state).

Consider a simpler text program which just contains a loop and responds with "A pressed" and "A released" in response to you pressing say the 'A' key. When you know how that works, then you can expand it into your current project.