Advertisement
Guest User

Untitled

a guest
Dec 27th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.33 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <iostream>
  3. bool gora_dol;
  4. bool lock_prostokat1, lock_prostokat2;
  5. bool collision = false;
  6. bool collision_gora_dol = false;
  7. int sterowanie(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2);
  8. void kolizja(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2);
  9. int main()
  10. {
  11.     sf::RenderWindow window(sf::VideoMode(600, 600), "Prostokaty");
  12.     sf::RectangleShape prostokat[2];
  13.     window.setFramerateLimit(60);
  14.     for (int i = 0; i < 2; i++)
  15.     {
  16.         double x, y;
  17.         prostokat[i].setSize(sf::Vector2f(50.f, 50.f));
  18.         x = prostokat[i].getGlobalBounds().width;
  19.         x /= 2;
  20.         y = prostokat[i].getGlobalBounds().height;
  21.         y /= 2;
  22.         prostokat[i].setOrigin(x, y);
  23.         prostokat[0].setFillColor(sf::Color::Red);
  24.         prostokat[0].setPosition(sf::Vector2f(200, 300));
  25.         prostokat[1].setFillColor(sf::Color::Blue);
  26.         prostokat[1].setPosition(sf::Vector2f(400, 300));
  27.     }
  28.     while (window.isOpen())
  29.     {
  30.         sf::Event event;
  31.         lock_prostokat1 = false;
  32.         lock_prostokat2 = false;
  33.         sterowanie(prostokat[0], prostokat[1]);
  34.         kolizja(prostokat[0], prostokat[1]);
  35.         while (window.pollEvent(event))
  36.         {
  37.             if (event.type == sf::Event::Closed)
  38.                 window.close();
  39.         }
  40.  
  41.         window.clear(sf::Color::White);
  42.         for (int i = 0; i < 2; i++)
  43.         {
  44.             window.draw(prostokat[i]);
  45.         }
  46.         window.display();
  47.     }
  48.  
  49.     return 0;
  50. }
  51. int sterowanie(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2)
  52. {
  53.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) && sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && collision == true)
  54.         {
  55.             return NULL;
  56.         }
  57.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::D) && sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && collision == true)
  58.         {
  59.             return NULL;
  60.         }
  61.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && collision_gora_dol == true)
  62.         {
  63.             return NULL;
  64.         }
  65.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::S) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && collision_gora_dol == true)
  66.         {
  67.             return NULL;
  68.         }
  69.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
  70.         {
  71.             prostokat1.move(0, -2);
  72.             lock_prostokat2 = true;
  73.         }
  74.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
  75.         {
  76.             prostokat1.move(0, 2);
  77.             lock_prostokat2 = true;
  78.         }
  79.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
  80.         {
  81.             prostokat1.move(-2, 0);
  82.             lock_prostokat2 = true;
  83.         }
  84.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
  85.         {
  86.             prostokat1.move(2, 0);
  87.             lock_prostokat2 = true;
  88.         }
  89.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  90.         {
  91.             prostokat2.move(0, -2);
  92.             lock_prostokat1 = true;
  93.         }
  94.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))           
  95.         {
  96.             prostokat2.move(0, 2);
  97.             lock_prostokat1 = true;
  98.         }
  99.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  100.         {
  101.             prostokat2.move(-2, 0);
  102.             lock_prostokat1 = true;
  103.         }
  104.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  105.         {
  106.             prostokat2.move(2, 0);
  107.             lock_prostokat1 = true;
  108.         }
  109. }
  110. void kolizja(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2)
  111. {
  112.     if (lock_prostokat2 == true)
  113.     {
  114.         if (gora_dol == true)
  115.         {
  116.             if ((prostokat1.getPosition().y + 25 > prostokat2.getPosition().y - 25 && prostokat1.getPosition().y + 25 < prostokat2.getPosition().y + 25) && ((prostokat1.getPosition().x - 25 < prostokat2.getPosition().x - 25 || prostokat1.getPosition().x - 25 < prostokat2.getPosition().x + 25) && (prostokat1.getPosition().x + 25 > prostokat2.getPosition().x - 25)) && (prostokat1.getPosition().x - 25 < prostokat2.getPosition().x + 25))
  117.             {
  118.                 prostokat1.move(0, -2);
  119.                 collision_gora_dol = true;
  120.             }
  121.             else if ((prostokat1.getPosition().y - 25 < prostokat2.getPosition().y + 25 && prostokat1.getPosition().y - 25 > prostokat2.getPosition().y - 25) && ((prostokat1.getPosition().x - 25 < prostokat2.getPosition().x - 25 || prostokat1.getPosition().x - 25 < prostokat2.getPosition().x + 25) && (prostokat1.getPosition().x + 25 > prostokat2.getPosition().x - 25)))
  122.             {
  123.                 prostokat1.move(0, 2);
  124.                 collision_gora_dol = true;
  125.             }
  126.             else { collision_gora_dol = false; }
  127.         }
  128.         if ((prostokat1.getPosition().x + 25 > prostokat2.getPosition().x - 25 && prostokat1.getPosition().x + 25 < prostokat2.getPosition().x + 25) && ((prostokat1.getPosition().y - 25 < prostokat2.getPosition().y - 25 || prostokat1.getPosition().y - 25 < prostokat2.getPosition().y + 25) && (prostokat1.getPosition().y + 25 > prostokat2.getPosition().y - 25)) && (prostokat1.getPosition().y - 25 < prostokat2.getPosition().y + 25))
  129.         {
  130.             gora_dol = false;
  131.             collision = true;
  132.             collision_gora_dol = false;
  133.             prostokat1.move(-2, 0);
  134.         }
  135.         else if ((prostokat1.getPosition().x - 25 < prostokat2.getPosition().x + 25 && prostokat1.getPosition().x - 25 > prostokat2.getPosition().x - 25) && ((prostokat1.getPosition().y - 25 < prostokat2.getPosition().y - 25 || prostokat1.getPosition().y - 25 < prostokat2.getPosition().y + 25) && (prostokat1.getPosition().y + 25 > prostokat2.getPosition().y - 25)))
  136.         {
  137.             gora_dol = false;
  138.             collision = true;
  139.             collision_gora_dol = false;
  140.             prostokat1.move(2, 0);
  141.         }
  142.         else { gora_dol = true; collision = false; }
  143.     }
  144.     else if (lock_prostokat1 == true)
  145.     {
  146.         if (gora_dol == true)
  147.         {
  148.             if ((prostokat2.getPosition().y + 25 > prostokat1.getPosition().y - 25 && prostokat2.getPosition().y + 25 < prostokat1.getPosition().y + 25) && ((prostokat2.getPosition().x - 25 < prostokat1.getPosition().x - 25 || prostokat2.getPosition().x - 25 < prostokat1.getPosition().x + 25) && (prostokat2.getPosition().x + 25 > prostokat1.getPosition().x - 25)) && (prostokat2.getPosition().x - 25 < prostokat1.getPosition().x + 25))
  149.             {
  150.                 collision_gora_dol = true;
  151.                 prostokat2.move(0, -2);
  152.  
  153.             }
  154.             else if ((prostokat2.getPosition().y - 25 < prostokat1.getPosition().y + 25 && prostokat2.getPosition().y - 25 > prostokat1.getPosition().y - 25) && ((prostokat2.getPosition().x - 25 < prostokat1.getPosition().x - 25 || prostokat2.getPosition().x - 25 < prostokat1.getPosition().x + 25) && (prostokat2.getPosition().x + 25 > prostokat1.getPosition().x - 25)))
  155.             {
  156.                 collision_gora_dol = true;
  157.                 prostokat2.move(0, 2);
  158.  
  159.             }
  160.             else { collision_gora_dol = false; }
  161.         }
  162.         if ((prostokat2.getPosition().x + 25 > prostokat1.getPosition().x - 25 && prostokat2.getPosition().x + 25 < prostokat1.getPosition().x + 25) && ((prostokat2.getPosition().y - 25 < prostokat1.getPosition().y - 25 || prostokat2.getPosition().y - 25 < prostokat1.getPosition().y + 25) && (prostokat2.getPosition().y + 25 > prostokat1.getPosition().y - 25)) && (prostokat2.getPosition().y - 25 < prostokat1.getPosition().y + 25))
  163.         {
  164.             gora_dol = false;
  165.             collision = true;
  166.             collision_gora_dol = false;
  167.             prostokat2.move(-2, 0);
  168.  
  169.         }
  170.         else if ((prostokat2.getPosition().x - 25 < prostokat1.getPosition().x + 25 && prostokat2.getPosition().x - 25 > prostokat1.getPosition().x - 25) && ((prostokat2.getPosition().y - 25 < prostokat1.getPosition().y - 25 || prostokat2.getPosition().y - 25 < prostokat1.getPosition().y + 25) && (prostokat2.getPosition().y + 25 > prostokat1.getPosition().y - 25)))
  171.         {
  172.             gora_dol = false;
  173.             collision = true;
  174.             collision_gora_dol = false;
  175.             prostokat2.move(2, 0);
  176.         }
  177.         else { gora_dol = true; collision = false; }
  178.     }
  179.     std::cout << collision << std::endl;
  180.     std::cout << collision_gora_dol << std::endl;
  181. }//sorry że nie poddodawałem komentarzy xD
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement