SFML открывает окно после закрытияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 SFML открывает окно после закрытия

Сообщение Anonymous »

Итак, я работаю над игрой в C ++, используя SFML, но по какой -то причине, когда я закрываю окно с побегом (это полноэкранная программа), она просто вновь откроет его, и я не знаю, почему это делает это. Мне нужно сценарии, которые являются player_logic.cpp и main.cpp, поэтому я надеюсь, что кто -то может помочь мне с этим.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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»