Я работаю над игрой в C ++, используя SFML, но по какой -то причине, когда я закрываю окно с побегом (это полноэкранная программа), она просто вновь открывает его, и я не знаю, почему это делает это. Мне нужно сценарие, которые являются player_logic.cpp и main.cpp < /p>
Это главное, где я запускаю всю систему окон. < /p>
int main() {
sf::RenderWindow window(
sf::VideoMode(windowWidth, windowHeight),
"Zombie Game",
sf::Style::None
);
window.setFramerateLimit(60);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}
window.clear(sf::Color::Black);
createPlayer(window, windowWidth, windowHeight);
window.display();
}
return 0;
}
< /code>
Это Player_logic, где я имитирую Evryhting, который мне нужен в отношении персонажа, подобного движению и параметрам. < /p>
#include
#include
void createPlayer(sf::RenderWindow& window, int windowWidth, int windowHeight) {
static float playerPosX = windowWidth / 2.f;
static float playerPosY = windowHeight / 2.f;
static float stamina = 100.f;
float playerRadius = 30.f;
float speed = 3.f;
// Sprinting
if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) || sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
if (stamina > 0.f) {
speed = 5.f;
stamina -= 0.333f;
} else {
speed = 3.f;
}
}
// Movement
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) playerPosX -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) playerPosX += speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)) playerPosY -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) playerPosY += speed;
// Optional: regenerate stamina slowly
if (!sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) && !sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
stamina += 0.2f;
if (stamina > 100.f) stamina = 100.f;
}
sf::CircleShape player(playerRadius);
player.setFillColor(sf::Color::Green);
player.setOrigin(playerRadius, playerRadius);
player.setPosition(playerPosX, playerPosY);
window.draw(player);
std::cout
Подробнее здесь: https://stackoverflow.com/questions/797 ... er-closing