#include #include #include #include #include "Bird.h" #include "Pipe.h" #include "Magnum/GL/Renderer.h" #include "Magnum/Math/Color.h" #ifdef linux #elif defined _WIN32 #elif defined TARGET_OS_MAC #endif #include #include using namespace Magnum; class MyApplication: public Platform::Application { public: explicit MyApplication(const Arguments& arguments); private: void drawEvent() override; }; MyApplication::MyApplication(const Arguments& arguments): Platform::Application{arguments} { /* TODO: Add your initialization code here */ } void MyApplication::drawEvent() { Color4 r; GL::Renderer::setClearColor(Color4::red()); GL::defaultFramebuffer.clear(GL::FramebufferClear::Color); swapBuffers(); } MAGNUM_APPLICATION_MAIN(MyApplication) const float g = 7.8; const int WINDOW_X = 600; const int WINDOW_Y = 800; float elap_time() { static std::chrono::time_point start; static bool started = false; if (!started) { start = std::chrono::system_clock::now(); started = true; } std::chrono::time_point now = std::chrono::system_clock::now(); std::chrono::duration elapsed_time = now - start; return static_cast(elapsed_time.count()); } // //int main() //{ // std::mt19937 rng(time(NULL)); // std::uniform_int_distribution rgen(100, 400); // // int pipe_dist = 200; //sf::RenderWindow window(sf::VideoMode(WINDOW_X, WINDOW_Y), "flappy"); // std::shared_ptr> texture_list = std::make_shared>(); // for (int i = 0; i < 4; i++) { // sf::Texture t; // t.loadFromFile("../Assets/bird.png", sf::IntRect(0, i*12, 34, 24)); // texture_list->push_back(t); // } // // // Init flappy // Bird bird(WINDOW_X/2, WINDOW_Y/2, texture_list); // // std::list pipes; // // // Init world // sf::Texture background = sf::Texture(); background.loadFromFile("../Assets/sky.png"); // sf::Sprite background_sprite = sf::Sprite(background); background_sprite.setPosition(0, 0); background_sprite.setScale(8, 8); // sf::Texture land = sf::Texture(); land.loadFromFile("../Assets/land.png"); // sf::Sprite land_sprite = sf::Sprite(land); land_sprite.setPosition(0, WINDOW_Y - WINDOW_Y / 10); land_sprite.setScale(3, 2); // sf::Texture pipe_up, pipe_down = sf::Texture(); pipe_down.loadFromFile("../Assets/pipe-down.png"); pipe_up.loadFromFile("../Assets/pipe-up.png"); // sf::Sprite pipe_up_sprite = sf::Sprite(pipe_up); sf::Sprite pipe_down_sprite = sf::Sprite(pipe_down); // sf::Texture pipe_shaft = sf::Texture(); pipe_shaft.loadFromFile("../Assets/pipe.png"); // sf::Sprite pipe_shaft_sprite = sf::Sprite(pipe_shaft); // // double momentum = 0; // float step_size = 0.005f; // double frame_time = 0.0, elapsed_time = 0.0, delta_time = 0.0, accumulator_time = 0.0, current_time = 0.0; // float speed = 250; // // std::shared_ptr shader = std::make_shared(); // if (!shader->loadFromFile("/home/mrh/source/floppy-bird/Assets/shaders/pipe_shader.vert", "/home/mrh/source/floppy-bird/Assets/shaders/pipe_shader.frag")) // { // std::cout << "asodijfoqijwef" << std::endl; // } // // while (window.isOpen()) // { // sf::Event event; // Handle input // while (window.pollEvent(event)) { // if (event.type == sf::Event::Closed) // window.close(); // if (event.type == sf::Event::MouseWheelScrolled) // if (event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel) // speed += event.mouseWheelScroll.delta * 20; // if(event.type == sf::Event::KeyPressed) // if (event.key.code == sf::Keyboard::Space) // bird.impulse(3.0); // if (event.type == sf::Event::MouseButtonPressed) { // if (event.mouseButton.button == sf::Mouse::Right) // pipe_dist -= 10; // if (event.mouseButton.button == sf::Mouse::Middle) // pipe_dist += 10; // if (event.mouseButton.button == sf::Mouse::Left) // bird.impulse(3.0); // } // } // // elapsed_time = elap_time(); // Handle time // delta_time = elapsed_time - current_time; // current_time = elapsed_time; // if (delta_time > 0.02f) { // delta_time = 0.02f; // } // accumulator_time += delta_time; // // while ((accumulator_time - step_size) >= step_size) { // While the frame has sim time, update // accumulator_time -= step_size; // // if (pipe_down_sprite.getPosition().x < -pipe_down_sprite.getGlobalBounds().width) { // pipe_down_sprite.setPosition(WINDOW_X, rgen(rng)); // pipe_up_sprite.setPosition(WINDOW_X, pipe_down_sprite.getPosition().y + pipe_dist); // // pipes.emplace_back(100, 100, std::make_shared(pipe_up), std::make_shared(pipe_shaft), shader); // std::cout << "added one" << std::endl; // } // else { // pipe_up_sprite.setPosition(pipe_up_sprite.getPosition().x - step_size * speed, pipe_up_sprite.getPosition().y); // pipe_down_sprite.setPosition(pipe_down_sprite.getPosition().x - step_size * speed, pipe_down_sprite.getPosition().y); // } // if (background_sprite.getPosition().x + background_sprite.getGlobalBounds().width < WINDOW_X) { // background_sprite.setPosition(0, 0); // } // else // background_sprite.setPosition(background_sprite.getPosition().x - step_size * (speed - 100), background_sprite.getPosition().y); // if (land_sprite.getPosition().x + 10 + land_sprite.getGlobalBounds().width < WINDOW_X) // land_sprite.setPosition(14, land_sprite.getPosition().y); // else // land_sprite.setPosition(land_sprite.getPosition().x - step_size * speed, land_sprite.getPosition().y); // // // Check collisions // if (bird.collides(pipe_up_sprite.getGlobalBounds()) || // bird.collides(pipe_down_sprite.getGlobalBounds()) || // bird.collides(land_sprite.getGlobalBounds()) // ) // { // //std::cout << "dead!!!!!!!!" << std::endl; // } // // bird.tick(step_size); // for (auto pipe = pipes.begin(); pipe != pipes.end(); ++pipe) // { // pipe->tick(step_size, speed); // } // } // // window.draw(background_sprite, &*shader); // Render // window.draw(land_sprite); // window.draw(bird); // window.draw(pipe_up_sprite); // window.draw(pipe_down_sprite); // // for (auto ptr = pipes.begin(); ptr != pipes.end(); ++ptr) // { // window.draw(*ptr); // } // // pipe_shaft_sprite.setPosition(pipe_up_sprite.getPosition()); // Render the bottom pipe // int y_pos = pipe_up_sprite.getPosition().y + pipe_up_sprite.getGlobalBounds().height; // while (y_pos < WINDOW_Y) { // pipe_shaft_sprite.setPosition(pipe_shaft_sprite.getPosition().x, y_pos); // y_pos++; // window.draw(pipe_shaft_sprite); // } // // y_pos = pipe_down_sprite.getPosition().y; // Render the top pipe // while (y_pos > 0) { // pipe_shaft_sprite.setPosition(pipe_shaft_sprite.getPosition().x, y_pos); // y_pos--; // window.draw(pipe_shaft_sprite); // } // // window.display(); // } // return 0; // //}