#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
int scor = 0;
int main()
{
CircleShape shape(20); // Tworzy kształt kółka o nazwie "shape" o wielkości 20
shape.setFillColor(Color(100, 250, 50)); // Wypełnia objekt o nazwie "shape" kolorem zielonym
shape.setPosition(400.f, 300.f); // Ustawia objekt na pozycji X = 400, Y = 300
shape.setOrigin(shape.getRadius(), shape.getRadius()); // Ustawia "Punkt zaczepienia?" na środku objektu, aby podana pozycja odpowiadała rzeczywistości
shape.setPointCount(1000);
Text punkty;
Font font;
font.loadFromFile("Arial.ttf");
punkty.setFont(font);
punkty.setCharacterSize(24);
punkty.setFillColor(Color(255, 255, 255));
punkty.setString(to_string(scor));
// Tworzy okno o nazwie "window" o szerokości (x) = 800, wysokości (y) = 600. Nadaje nazwe okna "SFML First Game", dodaje nazwe oraz przycisk zamykający okno
RenderWindow window(VideoMode(800, 600), "SFML First Game", sf::Style::Titlebar | sf::Style::Close);
// Główna pętla programu
while (window.isOpen())
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && shape.getPosition().y >= 20) {
shape.move(0.f, -0.1f);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S) && shape.getPosition().y <= 580) {
shape.move(0.f, 0.1f);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A) && shape.getPosition().x >= 20) {
shape.move(-0.1f, 0.f);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D) && shape.getPosition().x <= 700) {
shape.move(0.1f, 0.f);
}
// Tworzy Event o nazwie event
Event event;
while (window.pollEvent(event))
{
// Dodaje zamykanie programu po naciśnięciu "X" w prawym górnym rogu ekranu
if (event.type == Event::Closed) {
window.close();
}
}
//Czyści okno z poprzedniej klatki
window.clear();
// Rysuje objekt o nazwie "shape"
window.draw(shape);
// Rysuje objekt o nazwie "wysPunkty"
window.draw(punkty);
// Wyświetla elementy na oknie
window.display();
}
return 0;
}
Witam. Gdy próbuję uruchomić ten kod to występują 2 błędy. Najpierw występuje wyjątek Nieobsłużony wyjątek w lokalizacji 0x00007FFA6583A799 w Smfldziałaj.exe: wyjątek języka Microsoft C++: std::length_error w lokalizacji pamięci 0x00000001000FEBF0.: wystąpił wyjątek obok punkty.setString(to_string(scor)); Drugi błąd występuje jeśli zamiast to_string(scor) dam np. "test" to zamiast napisu wyświetla się malutka kropka. Proszę o pomoc, spędziłem 2 lub 3h szukając sposobu na naprawę tego lecz nic nie znalazłem.