Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <iostream>
- bool gora_dol;
- bool lock_prostokat1, lock_prostokat2;
- bool collision = false;
- bool collision_gora_dol = false;
- int sterowanie(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2);
- void kolizja(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2);
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(600, 600), "Prostokaty");
- sf::RectangleShape prostokat[2];
- window.setFramerateLimit(60);
- for (int i = 0; i < 2; i++)
- {
- double x, y;
- prostokat[i].setSize(sf::Vector2f(50.f, 50.f));
- x = prostokat[i].getGlobalBounds().width;
- x /= 2;
- y = prostokat[i].getGlobalBounds().height;
- y /= 2;
- prostokat[i].setOrigin(x, y);
- prostokat[0].setFillColor(sf::Color::Red);
- prostokat[0].setPosition(sf::Vector2f(200, 300));
- prostokat[1].setFillColor(sf::Color::Blue);
- prostokat[1].setPosition(sf::Vector2f(400, 300));
- }
- while (window.isOpen())
- {
- sf::Event event;
- lock_prostokat1 = false;
- lock_prostokat2 = false;
- sterowanie(prostokat[0], prostokat[1]);
- kolizja(prostokat[0], prostokat[1]);
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- }
- window.clear(sf::Color::White);
- for (int i = 0; i < 2; i++)
- {
- window.draw(prostokat[i]);
- }
- window.display();
- }
- return 0;
- }
- int sterowanie(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2)
- {
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) && sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && collision == true)
- {
- return NULL;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::D) && sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && collision == true)
- {
- return NULL;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && collision_gora_dol == true)
- {
- return NULL;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::S) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && collision_gora_dol == true)
- {
- return NULL;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
- {
- prostokat1.move(0, -2);
- lock_prostokat2 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
- {
- prostokat1.move(0, 2);
- lock_prostokat2 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
- {
- prostokat1.move(-2, 0);
- lock_prostokat2 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
- {
- prostokat1.move(2, 0);
- lock_prostokat2 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
- {
- prostokat2.move(0, -2);
- lock_prostokat1 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
- {
- prostokat2.move(0, 2);
- lock_prostokat1 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
- {
- prostokat2.move(-2, 0);
- lock_prostokat1 = true;
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
- {
- prostokat2.move(2, 0);
- lock_prostokat1 = true;
- }
- }
- void kolizja(sf::RectangleShape &prostokat1, sf::RectangleShape &prostokat2)
- {
- if (lock_prostokat2 == true)
- {
- if (gora_dol == true)
- {
- 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))
- {
- prostokat1.move(0, -2);
- collision_gora_dol = true;
- }
- 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)))
- {
- prostokat1.move(0, 2);
- collision_gora_dol = true;
- }
- else { collision_gora_dol = false; }
- }
- 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))
- {
- gora_dol = false;
- collision = true;
- collision_gora_dol = false;
- prostokat1.move(-2, 0);
- }
- 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)))
- {
- gora_dol = false;
- collision = true;
- collision_gora_dol = false;
- prostokat1.move(2, 0);
- }
- else { gora_dol = true; collision = false; }
- }
- else if (lock_prostokat1 == true)
- {
- if (gora_dol == true)
- {
- 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))
- {
- collision_gora_dol = true;
- prostokat2.move(0, -2);
- }
- 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)))
- {
- collision_gora_dol = true;
- prostokat2.move(0, 2);
- }
- else { collision_gora_dol = false; }
- }
- 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))
- {
- gora_dol = false;
- collision = true;
- collision_gora_dol = false;
- prostokat2.move(-2, 0);
- }
- 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)))
- {
- gora_dol = false;
- collision = true;
- collision_gora_dol = false;
- prostokat2.move(2, 0);
- }
- else { gora_dol = true; collision = false; }
- }
- std::cout << collision << std::endl;
- std::cout << collision_gora_dol << std::endl;
- }//sorry że nie poddodawałem komentarzy xD
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement