Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <SFML/Graphics.hpp>
- using namespace std;
- unsigned int width = 700;
- unsigned int height = 500;
- unsigned int ground = 450;
- float gravity = .5;
- bool jump_available = true;
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(width, height), "In progress");
- window.setFramerateLimit(60);
- sf::RectangleShape player(sf::Vector2f(50, 50));
- player.setFillColor(sf::Color::Magenta);
- player.setPosition((width / 2) - 25, (height / 2) - 25);
- sf::RectangleShape obstacle(sf::Vector2f(100, 100));
- obstacle.setFillColor(sf::Color::Red);
- obstacle.setPosition((width / 2) + 150, height / 2);
- sf::Vector2f velocity(0, 0);
- sf::Event event;
- while (window.isOpen())
- {
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- {
- window.close();
- }
- if (event.type == sf::Event::KeyPressed)
- {
- if (event.key.code == sf::Keyboard::Left)
- {
- player.move(-5, 0);
- }
- if (event.key.code == sf::Keyboard::Right)
- {
- player.move(5, 0);
- }
- if (event.key.code == sf::Keyboard::Up)
- {
- player.move(0, -5);
- }
- if (event.key.code == sf::Keyboard::Down)
- {
- player.move(0, 5);
- }
- if (event.key.code == sf::Keyboard::Space && jump_available == true)
- {
- velocity.y = -20;
- jump_available = false;
- }
- }
- }
- //Apply Gravity
- velocity.y += gravity;
- player.move(velocity);
- //Check Collision
- sf::FloatRect player_boundingbox = player.getGlobalBounds();
- sf::FloatRect overlap;
- if (player_boundingbox.intersects(obstacle.getGlobalBounds(), overlap))
- {
- cout << overlap.width << endl;
- cout << overlap.height << endl;
- if (overlap.width > overlap.height)
- {
- if (player.getPosition().y < obstacle.getPosition().y)
- {
- cout << "The player just hit the obstacle from the top side" << endl;
- player.setPosition(player.getPosition().x, obstacle.getPosition().y - 50);
- velocity.y = 0;
- jump_available = true;
- }
- else if (player.getPosition().y > obstacle.getPosition().y)
- {
- cout << "The player just hit the obstacle from the bottom side" << endl;
- player.setPosition(player.getPosition().x, obstacle.getPosition().y + 100);
- velocity.y = 0;
- }
- }
- else if (overlap.width < overlap.height)
- {
- if (player.getPosition().x < obstacle.getPosition().x)
- {
- cout << "The player just hit the obstacle from the left side" << endl;
- player.setPosition(obstacle.getPosition().x - 50, player.getPosition().y);
- }
- else if (player.getPosition().x > obstacle.getPosition().x)
- {
- cout << "The player just hit the obstacle from the right side" << endl;
- player.setPosition(obstacle.getPosition().x + 100, player.getPosition().y);
- }
- }
- }
- else if (player.getPosition().y > ground)
- {
- cout << "The player just hit the ground" << endl;
- player.setPosition(player.getPosition().x, ground);
- velocity.y = 0;
- jump_available = true;
- }
- window.clear(sf::Color::White); //Clear
- window.draw(player);
- window.draw(obstacle);
- window.display(); //Display
- }
- window.close();
- int pause; cin >> pause;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement