Advertisement
Felanpro

I'm not dead yet

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