Advertisement
Felanpro

smart gravity model

Apr 26th, 2019
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <SFML/Graphics.hpp>
  4.  
  5. using namespace std;
  6.  
  7. unsigned int width = 500;
  8. unsigned int height = 500;
  9. unsigned int direction = 0;
  10. float gravity = .3;
  11.  
  12. int main()
  13. {
  14.     sf::RenderWindow window(sf::VideoMode(width, height), "In progress");
  15.     window.setFramerateLimit(60);
  16.  
  17.     sf::Vector2f velocity(0, 0);
  18.  
  19.     sf::RectangleShape player(sf::Vector2f(50, 50));
  20.     player.setFillColor(sf::Color::Black);
  21.  
  22.     sf::RectangleShape object(sf::Vector2f(100, 100));
  23.     object.setFillColor(sf::Color::Magenta);
  24.     object.setPosition(width / 2, height / 2);
  25.  
  26.     sf::Event event;
  27.     while (window.isOpen())
  28.     {
  29.  
  30.         while (window.pollEvent(event))
  31.         {
  32.             if (event.type == sf::Event::Closed)
  33.             {
  34.                 window.close();
  35.             }
  36.             else if (event.type == sf::Event::KeyPressed)
  37.             {
  38.                 if (event.key.code == sf::Keyboard::Right)
  39.                 {
  40.                     velocity.x = 3;
  41.                 }
  42.                 else if (event.key.code == sf::Keyboard::Left)
  43.                 {
  44.                     velocity.x = -3;
  45.                 }
  46.                
  47.                 if (event.key.code == sf::Keyboard::Space)
  48.                 {
  49.                     velocity.y = -10;
  50.                 }
  51.             }
  52.         }
  53.  
  54.         /*
  55.         else if (direction == 3)
  56.         {
  57.             player.move(0, -3);
  58.         }
  59.         else if (direction == 4)
  60.         {
  61.             player.move(0, 3);
  62.         }
  63.         */
  64.  
  65.         //Jumping and gravity
  66.         if (player.getPosition().y > 450)
  67.         {
  68.             player.setPosition(player.getPosition().x, 450);
  69.             velocity.y = 0;
  70.         }
  71.         else
  72.         {
  73.             velocity.y += gravity;
  74.         }
  75.  
  76.  
  77.         //Check collision
  78.         sf::FloatRect player_boundingBox = player.getGlobalBounds();
  79.         sf::FloatRect overlap;
  80.         if (player_boundingBox.intersects(object.getGlobalBounds(), overlap))
  81.         {
  82.             cout << overlap.height << endl;
  83.             cout << overlap.width << endl;
  84.  
  85.             if (overlap.height >= overlap.width)
  86.             {
  87.                 if (player.getPosition().x < object.getPosition().x)
  88.                 {
  89.                     cout << "The player just hit the object from the left side" << endl;
  90.                     player.setPosition(object.getPosition().x - 50, player.getPosition().y);
  91.                     velocity.x = -1.5;
  92.                 }
  93.                 else if (player.getPosition().x > object.getPosition().x)
  94.                 {
  95.                     cout << "The player just hit the object from the right side" << endl;
  96.                     player.setPosition((object.getPosition().x + 100), player.getPosition().y);
  97.                     velocity.x = 1.5;
  98.                 }
  99.             }
  100.             else if (overlap.height < overlap.width)
  101.             {
  102.                 if (player.getPosition().y < object.getPosition().y)
  103.                 {
  104.                     cout << "The player just hit the object from the top side" << endl;
  105.                     player.setPosition(player.getPosition().x, object.getPosition().y - 50);
  106.                     velocity.y = 0;
  107.                 }
  108.                 else if (player.getPosition().y > object.getPosition().y)
  109.                 {
  110.                     cout << "The player just hit the object from the bottom side" << endl;
  111.                     player.setPosition(player.getPosition().x, object.getPosition().y + 100);
  112.                     velocity.y = 0;
  113.                 }
  114.             }
  115.         }
  116.  
  117.         player.move(velocity);
  118.  
  119.         window.clear(sf::Color::White); //Clear
  120.        
  121.         window.draw(player);
  122.         window.draw(object);
  123.  
  124.         window.display(); //Display
  125.     }
  126.    
  127.     int pause; cin >> pause;
  128.     return 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement