Advertisement
SilverTES

Minimal Allegro5 C++

Jan 29th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <cstdio>
  2. #include <allegro5/allegro.h>
  3. #include <allegro5/allegro_font.h>
  4. #include <allegro5/allegro_primitives.h>
  5.  
  6. template <class M = const char*, class E = int>
  7. E log(M msg, E error = 0)
  8. {
  9.     printf(msg);
  10.     return error;
  11. }
  12.  
  13. int screenW = 640;
  14. int screenH = 360;
  15. int scaleWin = 2;
  16. bool quit = false;
  17.  
  18. int xMouse = 0;
  19. int yMouse = 0;
  20.  
  21. ALLEGRO_KEYBOARD_STATE keyState;
  22. ALLEGRO_MOUSE_STATE mouseState;
  23.  
  24. ALLEGRO_FONT *font = nullptr;
  25. ALLEGRO_DISPLAY *display = nullptr;
  26. ALLEGRO_BITMAP *buffer = nullptr;
  27.  
  28. void update()
  29. {
  30.     al_get_keyboard_state(&keyState);
  31.     al_get_mouse_state(&mouseState);
  32.  
  33.     xMouse = mouseState.x / scaleWin;
  34.     yMouse = mouseState.y / scaleWin;
  35.  
  36.     if (al_key_down(&keyState, ALLEGRO_KEY_ESCAPE))
  37.         quit = true;
  38. }
  39. void render()
  40. {
  41.     al_set_target_bitmap(buffer);
  42.     al_clear_to_color(al_map_rgb(0, 32, 64));
  43.     al_draw_text(font, al_map_rgb(255, 255, 255), screenW/2, screenH-12, ALLEGRO_ALIGN_CENTER, "- PathFinding AStar -");
  44.  
  45.     al_draw_line(0, yMouse + .5,
  46.                  screenW, yMouse + .5,
  47.                  al_map_rgba(55, 125, 100, 25), 0);
  48.  
  49.     al_draw_line(xMouse + .5, 0,
  50.                  xMouse + .5, screenH,
  51.                  al_map_rgba(55, 125, 100, 25), 0);
  52.  
  53.     al_set_target_backbuffer(display);
  54.     al_draw_scaled_bitmap(
  55.         buffer,
  56.         0,0,
  57.         screenW,screenH,
  58.         0,0,
  59.         screenW*scaleWin, screenH*scaleWin,
  60.         0);
  61.  
  62.     al_flip_display();
  63. }
  64.  
  65. int init()
  66. {  
  67.     al_init();
  68.     al_init_font_addon();
  69.     al_init_primitives_addon();
  70.    
  71.     al_install_keyboard();
  72.     al_install_mouse();
  73.    
  74.     display = al_create_display(screenW*scaleWin, screenH*scaleWin);
  75.     buffer = al_create_bitmap(screenW, screenH);
  76.     font = al_create_builtin_font();
  77.  
  78.     return log("init OK !\n");
  79. }
  80. int done()
  81. {
  82.     al_destroy_bitmap(buffer);
  83.     al_destroy_display(display);
  84.     al_destroy_font(font);
  85.  
  86.     return log("done OK !\n");
  87. }
  88.  
  89. int run()
  90. {
  91.     if (init())
  92.         quit = true;
  93.     while (!quit)
  94.     {
  95.         update();
  96.         render();
  97.     }
  98.     if (done())
  99.         return log("done ERROR !\n");
  100.     return log("End of Run !\n");
  101. }
  102. int main()
  103. {
  104.     if (run())
  105.         return log("run ERROR !\n");
  106.    
  107.     return log("END of MAIN !\n");
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement