Advertisement
Felanpro

Smartest and fastest collision detection and stopping

Apr 17th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <SFML/Graphics.hpp>
  4. #include <SFML/Window.hpp>
  5.  
  6. using namespace std;
  7.  
  8. int width = 800, height = 600;
  9.  
  10. int main()
  11. {
  12.     sf::RenderWindow window(sf::VideoMode(width, height), "In Development");
  13.     window.setFramerateLimit(70);
  14.     window.setVerticalSyncEnabled(true);
  15.  
  16.     sf::RectangleShape player;
  17.     player.setFillColor(sf::Color::Cyan);
  18.     player.setSize(sf::Vector2f(40, 40));
  19.     player.setPosition(width / 2, height / 2);
  20.  
  21.     sf::RectangleShape bigBlock;
  22.     bigBlock.setSize(sf::Vector2f(100, 100));
  23.     bigBlock.setFillColor(sf::Color::Black);
  24.     bigBlock.setPosition((width / 2) - 300, height / 2);
  25.  
  26.     int direction = 0;
  27.  
  28.     sf::Event event;
  29.     while (window.isOpen())
  30.     {
  31.         while (window.pollEvent(event))
  32.         {
  33.             if (event.type == sf::Event::Closed)
  34.                 window.close();
  35.             else if (event.type == sf::Event::KeyPressed)
  36.             {
  37.                 if (event.key.code == sf::Keyboard::Right)
  38.                 {
  39.                     player.move(5, 0);
  40.                     direction = 1;
  41.                 }
  42.                 else if (event.key.code == sf::Keyboard::Left)
  43.                 {
  44.                     player.move(-5, 0);
  45.                     direction = 2;
  46.                 }
  47.                 else if (event.key.code == sf::Keyboard::Up)
  48.                 {
  49.                     player.move(0, -5);
  50.                     direction = 3;
  51.                 }
  52.                 else if (event.key.code == sf::Keyboard::Down)
  53.                 {
  54.                     player.move(0, 5);
  55.                     direction = 4;
  56.                 }
  57.             }
  58.         }
  59.  
  60.         sf::FloatRect player_boundingBox = player.getGlobalBounds();
  61.         if (player_boundingBox.intersects(bigBlock.getGlobalBounds()))
  62.         {
  63.             if (direction == 1)
  64.                 player.setPosition(bigBlock.getPosition().x - 40, player.getPosition().y);
  65.             else if(direction == 2)
  66.                 player.setPosition(bigBlock.getPosition().x + 100, player.getPosition().y);
  67.             else if(direction == 3)
  68.                 player.setPosition(player.getPosition().x, bigBlock.getPosition().y + 100);
  69.             else if(direction == 4)
  70.                 player.setPosition(player.getPosition().x, bigBlock.getPosition().y - 40);
  71.         }
  72.  
  73.         window.clear(sf::Color::White); //Clear
  74.  
  75.         window.draw(bigBlock);
  76.         window.draw(player);
  77.  
  78.         window.display(); //Display
  79.     }
  80.  
  81.     int pause; cin >> pause; //Pause the program
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement