Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <vector>
- int main()
- {
- sf::RenderWindow Window(sf::VideoMode(1024, 768, 32), "");
- Window.setFramerateLimit(60);
- const float gravity = 9.8;
- const int mapW = 7;
- const int mapH = 4;
- const sf::Vector2f mapStartingPos(100, 300);
- bool touchingBottom = false;
- bool touchingLeft = false;
- bool touchingRight = false;
- sf::Clock frametime;
- std::vector<sf::RectangleShape> shapes;
- const int map[mapH][mapW] =
- {
- { 1, 1, 1, 1, 0, 0, 0 },
- { 1, 1, 1, 1, 1, 1, 1 },
- { 1, 1, 1, 1, 1, 1, 1 },
- { 1, 1, 1, 1, 1, 1, 1 },
- };
- for (int i = 0; i < mapW; i++)
- {
- for (int x = 0; x < mapH; x++)
- {
- if (map[x][i] == 1)
- {
- sf::RectangleShape temp(sf::Vector2f(75, 75));
- temp.setFillColor(sf::Color::Green);
- temp.setPosition(i * 75 + mapStartingPos.x, x * 75 + mapStartingPos.y);
- shapes.push_back(temp);
- }
- }
- }
- sf::RectangleShape player(sf::Vector2f(50, 50));
- player.setFillColor(sf::Color::Blue);
- player.setOrigin(25, 25);
- player.setPosition(200, 100);
- sf::Vector2f speed(0, 0);
- while (Window.isOpen())
- {
- float dt = frametime.restart().asSeconds();
- sf::Event event;
- while (Window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- Window.close();
- }
- for (auto it = shapes.begin(); it != shapes.end(); it++)
- {
- if (player.getGlobalBounds().intersects(it->getGlobalBounds()))
- {
- if (player.getPosition().y + player.getOrigin().y >= it->getPosition().y)
- {
- player.setPosition(player.getPosition().x, it->getPosition().y - player.getOrigin().y);
- touchingBottom = true;
- }
- if (player.getPosition().x - player.getOrigin().x <= it->getPosition().x + it->getGlobalBounds().width &&
- player.getPosition().y + player.getOrigin().y > it->getPosition().y)
- {
- player.setPosition(it->getPosition().x + it->getGlobalBounds().width + player.getOrigin().x, player.getPosition().y);
- touchingLeft = true;
- }
- break;
- }
- else
- {
- touchingBottom = false;
- touchingRight = false;
- touchingLeft = false;
- }
- }
- if (!touchingBottom)
- speed.y += gravity;
- else
- speed.y = 0;
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) && !touchingLeft)
- speed.x = -200;
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
- speed.x = 200;
- player.setPosition(player.getPosition().x + (speed.x * dt ) , player.getPosition().y + (speed.y * dt));
- speed.x = 0;
- Window.clear(sf::Color::Black);
- for (auto it = shapes.begin(); it != shapes.end(); it++)
- {
- Window.draw(*it);
- }
- Window.draw(player);
- Window.display();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment