This repository has been archived on 2025-06-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
LotoStatek/main.cpp

208 lines
7.9 KiB
C++

#include <iostream>
#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<sf::Vector2f>(mousePos))) {
std::cout << "Przycisk Start zostal kliknięty\n";
menuWindow.close();
}
if (exitButton.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos))) {
std::cout << "Przycisk Exit zostal kliknięty\n";
menuWindow.close();
exit(-2);
}
if (pulsarSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos))) {
pulsarBorder.setOutlineColor(sf::Color::White);
selectedShip = pulsar;
} else {
pulsarBorder.setOutlineColor(sf::Color::Transparent);
}
if (novaSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos))) {
novaBorder.setOutlineColor(sf::Color::White);
selectedShip = nova;
} else {
novaBorder.setOutlineColor(sf::Color::Transparent);
}
if (zenithSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos))) {
zenithBorder.setOutlineColor(sf::Color::White);
selectedShip = zenith;
} else {
zenithBorder.setOutlineColor(sf::Color::Transparent);
}
if (!pulsarSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos)) &&
!novaSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos)) &&
!zenithSprite.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos)) &&
!startButton.getGlobalBounds().contains(static_cast<sf::Vector2f>(mousePos)) &&
!exitButton.getGlobalBounds().contains(static_cast<sf::Vector2f>(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();
}
}