#include #include "SFML/Graphics.hpp" #include "headers/Plansza.h" ships selectedShip = none; void menu(); int main() { menu(); std::clog << "Game started\n"; sf::RenderWindow mainWindow(sf::VideoMode(600, 800), "LotoStatek"); mainWindow.setVerticalSyncEnabled(true); mainWindow.setFramerateLimit(60); sf::Image icon; icon.loadFromFile("../assets/img/icon/ikonka.png"); mainWindow.setIcon(128, 128, icon.getPixelsPtr()); bool isPaused = false; Plansza plansza(mainWindow.getSize().y, mainWindow.getSize().x, &mainWindow, selectedShip); while (mainWindow.isOpen()) { mainWindow.clear(); // Tu są handlowane eventy sf::Event event{}; while (mainWindow.pollEvent(event)) { if (event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) mainWindow.close(); } // Obsługa pauzy if (event.key.code == sf::Keyboard::P) { isPaused = !isPaused; sf::RectangleShape bg(sf::Vector2f(mainWindow.getSize().x, mainWindow.getSize().y)); bg.setFillColor(sf::Color(0,0,0,100)); sf::Text text("PAUZA", plansza.font, 50); text.setOrigin(text.getLocalBounds().getSize().x/2, text.getLocalBounds().getSize().y/2); text.setFillColor(sf::Color::White); text.setPosition(mainWindow.getSize().x/2, mainWindow.getSize().y/2); plansza.update(); mainWindow.draw(bg); mainWindow.draw(text); mainWindow.display(); } if (!isPaused) { // jesli nie spauzowane to graj plansza.update(); mainWindow.display(); } } return 0; } void menu() { sf::RenderWindow menuWindow(sf::VideoMode(800, 400), "LotoStatek->Menu"); // Ustawienia ikonki okna sf::Image icon; icon.loadFromFile("../assets/img/icon/ikonka.png"); menuWindow.setIcon(128, 128, icon.getPixelsPtr()); // start button sf::RectangleShape startButton(sf::Vector2f(140, 50)); startButton.setPosition(50, 20); startButton.setFillColor(sf::Color::White); sf::Font font; if (!font.loadFromFile("../assets/fonts/arial.ttf")) { std::cerr << "Nie można załadować czcionki\n"; exit(-1); } // tekst dla start button sf::Text startText("Start", font, 24); startText.setFillColor(sf::Color::Black); startText.setPosition(startButton.getSize().x / 2 + 20, startButton.getSize().y / 2 + 5); // exit button sf::RectangleShape exitButton(sf::Vector2f(140, 50)); exitButton.setPosition(600, 20); exitButton.setFillColor(sf::Color::White); sf::Text exitText("Exit", font, 24); exitText.setFillColor(sf::Color::Black); exitText.setPosition(exitButton.getPosition().x + 45, exitButton.getPosition().y + 10); sf::Texture pulsarTexture; pulsarTexture.loadFromFile("../assets/ship/pulsar.png"); sf::Sprite pulsarSprite(pulsarTexture); pulsarSprite.setPosition(50, 200); pulsarSprite.setScale(0.25f, 0.25f); sf::Texture novaTexture; novaTexture.loadFromFile("../assets/ship/nova.png"); sf::Sprite novaSprite(novaTexture); novaSprite.setPosition(330, 200); novaSprite.setScale(0.25f, 0.25f); sf::Texture zenithTexture; zenithTexture.loadFromFile("../assets/ship/zenith.png"); sf::Sprite zenithSprite(zenithTexture); zenithSprite.setPosition(600, 200); zenithSprite.setScale(0.25f, 0.25f); sf::RectangleShape pulsarBorder(sf::Vector2f(pulsarSprite.getGlobalBounds().width + 4, pulsarSprite.getGlobalBounds().height + 4)); pulsarBorder.setPosition(pulsarSprite.getPosition().x - 2, pulsarSprite.getPosition().y - 2); pulsarBorder.setFillColor(sf::Color::Transparent); pulsarBorder.setOutlineThickness(2); pulsarBorder.setOutlineColor(sf::Color::Transparent); sf::RectangleShape novaBorder(sf::Vector2f(novaSprite.getGlobalBounds().width + 4, novaSprite.getGlobalBounds().height + 4)); novaBorder.setPosition(novaSprite.getPosition().x - 2, novaSprite.getPosition().y - 2); novaBorder.setFillColor(sf::Color::Transparent); novaBorder.setOutlineThickness(2); novaBorder.setOutlineColor(sf::Color::Transparent); sf::RectangleShape zenithBorder(sf::Vector2f(zenithSprite.getGlobalBounds().width + 4, zenithSprite.getGlobalBounds().height + 4)); zenithBorder.setPosition(zenithSprite.getPosition().x - 2, zenithSprite.getPosition().y - 2); zenithBorder.setFillColor(sf::Color::Transparent); zenithBorder.setOutlineThickness(2); zenithBorder.setOutlineColor(sf::Color::Transparent); while (menuWindow.isOpen()) { sf::Event event{}; while (menuWindow.pollEvent(event)) { if (event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) { menuWindow.close(); exit(-2); } if (sf::Keyboard::isKeyPressed(sf::Keyboard::Enter)) { menuWindow.close(); } if (event.type == sf::Event::MouseButtonPressed) { if (event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mousePos = sf::Mouse::getPosition(menuWindow); if (startButton.getGlobalBounds().contains(static_cast(mousePos))) { std::cout << "Przycisk Start zostal kliknięty\n"; menuWindow.close(); } if (exitButton.getGlobalBounds().contains(static_cast(mousePos))) { std::cout << "Przycisk Exit zostal kliknięty\n"; menuWindow.close(); exit(-2); } if (pulsarSprite.getGlobalBounds().contains(static_cast(mousePos))) { pulsarBorder.setOutlineColor(sf::Color::White); selectedShip = pulsar; } else { pulsarBorder.setOutlineColor(sf::Color::Transparent); } if (novaSprite.getGlobalBounds().contains(static_cast(mousePos))) { novaBorder.setOutlineColor(sf::Color::White); selectedShip = nova; } else { novaBorder.setOutlineColor(sf::Color::Transparent); } if (zenithSprite.getGlobalBounds().contains(static_cast(mousePos))) { zenithBorder.setOutlineColor(sf::Color::White); selectedShip = zenith; } else { zenithBorder.setOutlineColor(sf::Color::Transparent); } if (!pulsarSprite.getGlobalBounds().contains(static_cast(mousePos)) && !novaSprite.getGlobalBounds().contains(static_cast(mousePos)) && !zenithSprite.getGlobalBounds().contains(static_cast(mousePos)) && !startButton.getGlobalBounds().contains(static_cast(mousePos)) && !exitButton.getGlobalBounds().contains(static_cast(mousePos))) { selectedShip = none; } } } } menuWindow.clear(); menuWindow.draw(startButton); menuWindow.draw(startText); menuWindow.draw(exitButton); menuWindow.draw(exitText); menuWindow.draw(pulsarSprite); menuWindow.draw(novaSprite); menuWindow.draw(zenithSprite); menuWindow.draw(pulsarBorder); menuWindow.draw(novaBorder); menuWindow.draw(zenithBorder); menuWindow.display(); } }