Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <SFML/Window.hpp>
- #include <iostream>
- #include <string>
- using namespace std;
- enum class Dir { UP, DOWN, LEFT, RIGHT};
- bool setBoundary(sf::Sprite& sprite2, sf::FloatRect& backGround, Dir dir);
- int highScoreInt;
- std::string highScoreString = std::to_string(highScoreInt);
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(800, 600), "Cross Road");
- window.setFramerateLimit(60);
- sf::FloatRect bg;
- bg.left = 0;
- bg.top = 0;
- bg.width = window.getSize().x;
- bg.height = window.getSize().y;
- sf::Texture texture;
- if (!texture.loadFromFile("assets/img/pavement.png"))
- return EXIT_FAILURE;
- sf::Sprite sprite(texture);
- sprite.setPosition(0, 520);
- sf::Texture texture2;
- if (!texture2.loadFromFile("assets/img/frogstatic.png"))
- return EXIT_FAILURE;
- sf::Sprite sprite2(texture2);
- sf::Vector2f sprite2Size(32.f, 32.f);
- sprite2.setScale(sprite2Size.x / texture2.getSize().x, sprite2Size.y / texture2.getSize().y);
- sprite2.setOrigin(sprite2Size.x / 2.f / sprite2.getScale().x, sprite2Size.y / 2.f / sprite2.getScale().y);
- sprite2.setPosition(400, 548);
- sf::Font timerFont;
- if (!timerFont.loadFromFile("assets/fonts/arialbd.ttf"))
- return EXIT_FAILURE;
- sf::Text timerText("Time: ", timerFont, 14);
- timerText.setColor(sf::Color::Black);
- timerText.setPosition(0, 568);
- sf::Font highScoreFont;
- if (!highScoreFont.loadFromFile("assets/fonts/arialbd.ttf"))
- return EXIT_FAILURE;
- sf::Text highScoreText("Score: " + highScoreString, highScoreFont, 14);
- highScoreText.setColor(sf::Color::Black);
- highScoreText.setPosition(0, 584);
- while (window.isOpen())
- {
- sf::Event event;
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- if (event.type == sf::Event::KeyPressed)
- {
- if (event.key.code == sf::Keyboard::Up) {
- sprite2.move(0.0f, -10.0f);
- sprite2.setRotation(0);
- highScoreInt += 2;
- }
- if (event.key.code == sf::Keyboard::Down && setBoundary(sprite2, bg, Dir::DOWN)) sprite2.move(0.0f, 10.0f), sprite2.setRotation(180), highScoreInt -= 2;
- if (event.key.code == sf::Keyboard::Left&& setBoundary(sprite2, bg, Dir::LEFT)) sprite2.move(-10.0f, 0.0f), sprite2.setRotation(270);
- if (event.key.code == sf::Keyboard::Right&& setBoundary(sprite2, bg, Dir::RIGHT)) sprite2.setRotation(90), sprite2.move(10.0f, 0.0f);
- if (highScoreInt <= 0) {
- highScoreInt = 0;
- }
- }
- }
- highScoreText.setString("Score: " + std::to_string(highScoreInt));
- sf::Color backGround(255, 255, 255, 0);
- window.setKeyRepeatEnabled(false);
- window.clear(backGround);
- window.draw(sprite);
- window.draw(sprite2);
- window.draw(timerText);
- window.draw(highScoreText);
- window.display();
- }
- return EXIT_SUCCESS;
- }
- bool setBoundary(sf::Sprite& sprite2, sf::FloatRect& backGround, Dir dir)
- {
- sf::FloatRect size = sprite2.getGlobalBounds();
- sf::Vector2f pos = sprite2.getPosition();
- if ((dir==Dir::LEFT&&!(size.left<=0)) || (dir == Dir::RIGHT&&!(size.left+size.width >= backGround.width)) || (dir == Dir::DOWN&&!(size.top+size.height >= backGround.height)))
- {
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement