Guest User

Untitled

a guest
May 22nd, 2014
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2.  
  3. #include <vector>
  4.  
  5. int main()
  6. {
  7.     sf::RenderWindow Window(sf::VideoMode(1024, 768, 32), "");
  8.     Window.setFramerateLimit(60);
  9.  
  10.     const float gravity = 9.8;
  11.     const int mapW = 7;
  12.     const int mapH = 4;
  13.     const sf::Vector2f mapStartingPos(100, 300);
  14.  
  15.     bool touchingBottom = false;
  16.     bool touchingLeft = false;
  17.     bool touchingRight = false;
  18.  
  19.     sf::Clock frametime;
  20.  
  21.     std::vector<sf::RectangleShape> shapes;
  22.  
  23.     const int map[mapH][mapW] =
  24.     {
  25.         { 1, 1, 1, 1, 0, 0, 0 },
  26.         { 1, 1, 1, 1, 1, 1, 1 },
  27.         { 1, 1, 1, 1, 1, 1, 1 },
  28.         { 1, 1, 1, 1, 1, 1, 1 },
  29.     };
  30.  
  31.     for (int i = 0; i < mapW; i++)
  32.     {
  33.         for (int x = 0; x < mapH; x++)
  34.         {
  35.             if (map[x][i] == 1)
  36.             {
  37.                 sf::RectangleShape temp(sf::Vector2f(75, 75));
  38.                 temp.setFillColor(sf::Color::Green);
  39.                 temp.setPosition(i * 75 + mapStartingPos.x, x * 75 + mapStartingPos.y);
  40.                 shapes.push_back(temp);
  41.             }
  42.         }
  43.     }
  44.  
  45.     sf::RectangleShape player(sf::Vector2f(50, 50));
  46.     player.setFillColor(sf::Color::Blue);
  47.     player.setOrigin(25, 25);
  48.     player.setPosition(200, 100);
  49.  
  50.     sf::Vector2f speed(0, 0);
  51.  
  52.  
  53.    
  54.     while (Window.isOpen())
  55.     {
  56.         float dt = frametime.restart().asSeconds();
  57.  
  58.         sf::Event event;
  59.         while (Window.pollEvent(event))
  60.         {
  61.             if (event.type == sf::Event::Closed)
  62.                 Window.close();
  63.         }
  64.  
  65.         for (auto it = shapes.begin(); it != shapes.end(); it++)
  66.         {
  67.             if (player.getGlobalBounds().intersects(it->getGlobalBounds()))
  68.             {
  69.                 if (player.getPosition().y + player.getOrigin().y >= it->getPosition().y)
  70.                 {
  71.                     player.setPosition(player.getPosition().x, it->getPosition().y - player.getOrigin().y);
  72.                     touchingBottom = true;
  73.                 }
  74.  
  75.                 if (player.getPosition().x - player.getOrigin().x <= it->getPosition().x + it->getGlobalBounds().width  &&
  76.                     player.getPosition().y + player.getOrigin().y > it->getPosition().y)
  77.                 {
  78.                     player.setPosition(it->getPosition().x + it->getGlobalBounds().width + player.getOrigin().x, player.getPosition().y);
  79.                     touchingLeft = true;
  80.                 }
  81.  
  82.  
  83.                 break;
  84.             }
  85.             else
  86.             {
  87.                 touchingBottom = false;
  88.                 touchingRight = false;
  89.                 touchingLeft = false;
  90.             }
  91.                
  92.         }
  93.  
  94.         if (!touchingBottom)
  95.             speed.y += gravity;
  96.         else
  97.             speed.y = 0;
  98.  
  99.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) && !touchingLeft)
  100.             speed.x = -200;
  101.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  102.             speed.x = 200;
  103.  
  104.         player.setPosition(player.getPosition().x + (speed.x * dt ) , player.getPosition().y + (speed.y * dt));
  105.  
  106.         speed.x = 0;
  107.  
  108.         Window.clear(sf::Color::Black);
  109.  
  110.         for (auto it = shapes.begin(); it != shapes.end(); it++)
  111.         {
  112.             Window.draw(*it);
  113.         }
  114.  
  115.         Window.draw(player);
  116.  
  117.         Window.display();
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment