Advertisement
Catdisk

parcial

Sep 27th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include <allegro5/allegro.h>
  2. #include <allegro5/allegro_image.h>
  3.  
  4. int main()
  5. {
  6.     ALLEGRO_DISPLAY *display = NULL;
  7.     ALLEGRO_EVENT_QUEUE *queue = NULL;
  8.     ALLEGRO_BITMAP *fondo = NULL;
  9.     ALLEGRO_BITMAP *player = NULL;
  10.    
  11.     al_init();
  12.     al_init_image_addon();
  13.     al_install_keyboard();
  14.  
  15.     queue = al_create_event_queue();
  16.     fondo = al_load_bitmap("bg.png");
  17.     player = al_load_bitmap("player.png");
  18.     display = al_create_display(900, 600);
  19.     al_register_event_source(queue, al_get_keyboard_event_source());
  20.  
  21.     int frameNumber = 1;
  22.     int drawFrame = 0;
  23.     int Xmin = 0;
  24.     int Xmax = 699;
  25.     int Ymin = 459;
  26.     int posX = 500;
  27.     int posY = 300;
  28.     int speed;
  29.     int flag = NULL;
  30.     int jumpSpeed;
  31.     bool isGrounded = true;
  32.     bool done = false;
  33.     ALLEGRO_EVENT evento;
  34.  
  35.  
  36.     while(!done)
  37.     {
  38.         if (posY >= Ymin)
  39.         {
  40.             isGrounded = true;
  41.             posY = Ymin;
  42.             speed = 0;
  43.             jumpSpeed = 0;
  44.         }
  45.         else
  46.             isGrounded = false;
  47.  
  48.         if (!isGrounded)
  49.         {
  50.             posY = posY + speed;
  51.             if (jumpSpeed > 0)
  52.             {
  53.                 speed -= 5;
  54.                 jumpSpeed -= 5;
  55.             }
  56.             else
  57.                 speed += 5;
  58.  
  59.         }
  60.         if(!al_is_event_queue_empty(queue))
  61.         {
  62.             al_get_next_event(queue, &evento);
  63.             switch (evento.keyboard.keycode)
  64.             {
  65.             case ALLEGRO_KEY_UP:
  66.                 if (isGrounded)
  67.                 {
  68.                     jumpSpeed = 30;
  69.                     isGrounded = false;
  70.                     posY -= 1;
  71.                 }
  72.                 break;
  73.             case ALLEGRO_KEY_LEFT:
  74.                 if (posX > Xmin)
  75.                 {
  76.                     if (isGrounded)
  77.                     {
  78.                         posX -= 30;
  79.                         drawFrame = frameNumber * 26;
  80.                     }
  81.                     else
  82.                     {
  83.                         posX -= 15;
  84.                         drawFrame = 130;
  85.                     }
  86.                     flag = NULL;
  87.                 }
  88.                 al_rest(0.05);
  89.                 break;
  90.             case ALLEGRO_KEY_RIGHT:
  91.                 if (posX < Xmax)
  92.                 {
  93.                     if (isGrounded)
  94.                     {
  95.                         posX += 30;
  96.                         drawFrame = frameNumber * 26;
  97.                     }
  98.                     else
  99.                     {
  100.                         posX += 15;
  101.                         drawFrame = 130;
  102.                     }
  103.                     flag = ALLEGRO_FLIP_HORIZONTAL;
  104.                 }
  105.                 al_rest(0.05);
  106.                 break;
  107.             case ALLEGRO_KEY_ESCAPE:
  108.                 done = true;
  109.             default:
  110.                 break;
  111.             }
  112.             frameNumber += 1;
  113.             if (frameNumber > 4)
  114.                 frameNumber = 1;
  115.             al_flush_event_queue(queue);
  116.         }
  117.         else if (al_is_event_queue_empty(queue))
  118.         {
  119.             if(isGrounded)
  120.                 drawFrame = 0;
  121.             else
  122.                 drawFrame = 130;
  123.         }
  124.  
  125.         al_draw_scaled_bitmap(fondo, 0, 0, 300, 200, 0, 0, 900, 600, NULL);
  126.         al_draw_scaled_bitmap(player, drawFrame, 0, 26, 30, posX, posY, 78, 90, flag);
  127.  
  128.         al_flip_display();
  129.     }
  130.  
  131.     al_destroy_bitmap(fondo);
  132.     al_destroy_display(display);
  133.     al_destroy_event_queue(queue);
  134.  
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement