Listing 8. Source code for the program named MovableHelloWorld01.

//Project MovableHelloWorld01
//Move text around the screen by pressing the arrow keys.
//Press Esc to terminate the program.
//Note that this program is based on polling and not on
//handling events.

#include <allegro.h>

int main(){
  int x = 20,y = 30;//position coordinates for text

  allegro_init();//Allegro initialization
  install_keyboard();//Set up for keyboard input

  //Set the graphics mode to a 320x240-pixel window.
  set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320,240,0,0);
  
  while(!key[KEY_ESC]){//loop until user presses Esc key

    clear_keybuf();//clear old stuff from the buffer
    
    //Draw black text on the existing text to erase it.
    textout_ex(
             screen,//Specify bitmap on the screen
             font,//Use a default font
             "HELLO WORLD",//Specify the text to display
             x,//x-coordinate for text
             y,//y-coordinate for text
             makecol(0,0,0),//Color text black
             -1 );//Transparent text background.
    
    //Modify coordinate variables if user presses arrow.
    // Note that diagonal motion resulting from holding
    // two keys down is not supported.
    if (key[KEY_UP]) --y;
    else if (key[KEY_DOWN]) ++y;
    else if (key[KEY_RIGHT]) ++x;
    else if (key[KEY_LEFT]) --x;
    
    //Draw fresh text on the window at the new coordinate
    // position.
    textout_ex(
             screen,//Specify bitmap on the screen
             font,//Use a default font
             "HELLO WORLD",//Specify the text to display
             x,//x-coordinate for text
             y,//y-coordinate for text
             makecol(255,255,0),//Color text yellow
             -1 );//Transparent text background.

    rest(10);//Give up the cpu for ten milliseconds.
  }//end while loop

  return 0;//Return 0 to indicate a successful run.
}//end main function

//Required macro at end of main.
END_OF_MAIN()