home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / sources / chapter08 / rotatesprite / main.c next >
Encoding:
C/C++ Source or Header  |  2006-09-13  |  1.6 KB  |  67 lines

  1. ////////////////////////////////////////////////////////////////
  2. // Game Programming All In One, Third Edition
  3. // Chapter 8 - RotateSprite
  4. ////////////////////////////////////////////////////////////////
  5.  
  6. #include <allegro.h>
  7.  
  8. #define WHITE makecol(255,255,255)
  9.  
  10. int main(void)
  11. {
  12.     int x, y;
  13.     float angle = 0;
  14.     BITMAP *tank;
  15.     
  16.     //initialize program
  17.     allegro_init();
  18.     install_keyboard();
  19.     set_color_depth(32);
  20.     set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
  21.     textout_ex(screen,font,"Rotate: LEFT / RIGHT arrow keys",
  22.         0,0,WHITE,0);
  23.  
  24.     //load tank sprite
  25.     tank = load_bitmap("tank.bmp", NULL);
  26.     
  27.     //calculate center of screen
  28.     x = SCREEN_W/2 - tank->w/2;
  29.     y = SCREEN_H/2 - tank->h/2;
  30.  
  31.     //draw tank at starting location
  32.     rotate_sprite(screen, tank, x, y, 0);
  33.  
  34.     //main loop
  35.     while(!key[KEY_ESC])
  36.     {
  37.         //wait for keypress
  38.         if (keypressed())
  39.         {
  40.             //left arrow rotates left
  41.             if (key[KEY_LEFT])
  42.             {   
  43.                 angle -= 0.1;
  44.                 if (angle < 0) angle = 256;
  45.                 rotate_sprite(screen, tank, x, y, itofix(angle));
  46.             }
  47.             
  48.             //right arrow rotates right
  49.             if (key[KEY_RIGHT])
  50.             {
  51.                 angle += 0.1;
  52.                 if (angle > 256) angle = 0;
  53.                 rotate_sprite(screen, tank, x, y, itofix(angle));
  54.             }
  55.  
  56.             //display angle
  57.             textprintf_ex(screen, font, 0, 10, WHITE, 0,
  58.                 "Angle = %f", angle);
  59.         }
  60.     }
  61.     allegro_exit();
  62.     return 0;
  63. }
  64. END_OF_MAIN()
  65.  
  66.  
  67.