Advertisement
gorgoroth666

SFML2 - 09 - Rectangle Scale Animation

Jul 15th, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #ifdef _MSC_VER  
  2.     #ifdef _WIN32              
  3.         #pragma comment( lib, "sfml-window.lib" )  
  4.         #pragma comment( lib, "sfml-graphics.lib" )
  5.     #endif
  6. #endif
  7.  
  8. #include <SFML\Graphics.hpp>
  9. #include <iostream>
  10.  
  11. using namespace sf;
  12. using namespace std;
  13.  
  14.  
  15. int clamp (int x, int a, int b)
  16. {
  17.     return min(max(a,x),b);
  18. }
  19.  
  20. Color scaleColor(RectangleShape &r, float f)
  21. {
  22.     Color c=r.getFillColor();
  23.     c.r*=f;
  24.     c.g*=f;
  25.     c.b*=f;
  26.     c.r=clamp(c.r,10,250);
  27.     c.g=clamp(c.g,10,250);
  28.     c.b=clamp(c.b,10,250);
  29.     r.setFillColor(c);
  30.     Color d=r.getOutlineColor();
  31.     d.r*=f;
  32.     d.g*=f;
  33.     d.b*=f;
  34.     d.r=clamp(d.r,10,250);
  35.     d.g=clamp(d.g,10,250);
  36.     d.b=clamp(d.b,10,250);
  37.     r.setOutlineColor(d);
  38.     return c;
  39. }
  40.  
  41. int main()
  42. {
  43.     VideoMode videoMode(320,240);
  44.     RenderWindow window(videoMode,"KeyEvent Window");
  45.    
  46.     RectangleShape rectangle;
  47.     rectangle.setPosition(30, 30);
  48.     rectangle.setSize(Vector2f(50, 30));
  49.            
  50.     rectangle.setFillColor(Color::Yellow);
  51.     rectangle.setOutlineColor(Color::Blue);
  52.     rectangle.setOutlineThickness(3);
  53.    
  54.  
  55.     while (window.isOpen())
  56.         {
  57.         window.clear();
  58.         window.draw(rectangle);
  59.             window.display();
  60.        
  61.             Event event;
  62.         while (window.pollEvent(event))
  63.             {
  64.             if ( (event.type == Event::Closed) ||
  65.             ((event.type == Event::KeyPressed) && (event.key.code==Keyboard::Escape)) )
  66.                         window.close();
  67.             else
  68.             {
  69.                 if (event.type == Event::KeyPressed)
  70.                 {
  71.                     switch(event.key.code)
  72.                     {
  73.                         case Keyboard::Up:
  74.                           rectangle.scale(1.0,1.1);
  75.                           rectangle.move(0.0,-10.0);
  76.                          scaleColor(rectangle,1.1);                
  77.                         break;
  78.                         case Keyboard::Down:
  79.                           rectangle.scale(1,0.9);
  80.                           rectangle.move(0,10);
  81.                           scaleColor(rectangle,0.9);
  82.                         break;
  83.                         case Keyboard::Left:
  84.                           rectangle.scale(0.9,1);
  85.                           rectangle.move(-10,0);
  86.                           scaleColor(rectangle,1.1);       
  87.                         break;
  88.                         case Keyboard::Right:
  89.                           rectangle.scale(1.1,1);
  90.                           rectangle.move(10,0);
  91.                           scaleColor(rectangle,0.9);
  92.                         break;
  93.                     }
  94.                     cout << "Rect at : " << rectangle.getPosition().x << ", "<< rectangle.getPosition().y << endl;
  95.                
  96.                 }
  97.             }
  98.            
  99.         }
  100.     }
  101.     return EXIT_SUCCESS;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement